Support for IPV6 infra in AIAP Zuul Gate

- Replaced minikube with kind cluster to
  setup a dualstack IPv6 cluster

Closes: #662
Change-Id: Ibc40e574e37c8cf9ab5348e6413a1b1520f5d1c1
This commit is contained in:
Manoj Alva(ma257n) 2021-10-30 11:46:54 +00:00 committed by Michael Beaver
parent bc704b736d
commit e1562899d9
5 changed files with 120 additions and 53 deletions

View File

@ -14,10 +14,10 @@
set -ex
# Installs minikube and other dependencies required for the scripts to run
# Installs kind and other dependencies required for the scripts to run
MINIKUBE_VERSION="latest"
KIND_VERSION="v0.11.1"
install_pkg(){
for i in "$@"; do
@ -25,11 +25,11 @@ install_pkg(){
done
}
# Grab usefull packages needed for minikube and other scripts
# Grab usefull packages needed for kind and other scripts
install_pkg curl conntrack make jq
curl -Lo minikube "https://storage.googleapis.com/minikube/releases/$MINIKUBE_VERSION/minikube-linux-amd64" \
&& chmod +x minikube
curl -Lo ./kind "https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64" \
&& chmod +x ./kind
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
sudo mv ./kind /usr/local/bin/

View File

@ -23,11 +23,15 @@ AIRSHIPCTL_REF=${AIRSHIPCTL_REF:-"master"}
export AIRSHIPCTL_REF
# Images that are required by airship-in-a-pod but not built
PULL_LIST="docker:stable-dind nginx quay.io/metal3-io/sushy-tools quay.io/airshipit/libvirt:aiap-v1"
export PULL_LIST
pushd tools/airship-in-a-pod/ || exit
make -e images artifact-setup base infra-builder runner libvirt
BUILD_LIST="images artifact-setup base infra-builder runner libvirt"
export BUILD_LIST
make -e ${BUILD_LIST}
for IMAGE in $PULL_LIST; do
docker pull "$IMAGE"

View File

@ -0,0 +1,106 @@
#!/usr/bin/env bash
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
# This script starts up kind cluster set for dual stack and proxy mode set for ipvs
set +e
create_cluster(){
# possibly a cluster by name kind exists
kind delete cluster --name kind
cat <<EOF | kind create cluster --config -
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
disableDefaultCNI: true # disable kindnet
kubeProxyMode: "ipvs"
ipFamily: dual
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30002
hostPort: 30002
listenAddress: 0.0.0.0 # Optional, defaults to 0.0.0.0
protocol: tcp # Optional, defaults to tcp
EOF
}
create_cluster
status=$?
if [[ $status -gt 0 ]]; then
echo "Failed to create kind cluster"
return -1
fi
# Give cluster a chance to start up
sleep 10
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
cat <<EOF | kubectl apply -f -
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
# Configures Calico networking.
calicoNetwork:
# Note: The ipPools section cannot be modified post-install.
ipPools:
- blockSize: 26
cidr: 10.244.0.0/16
encapsulation: VXLANCrossSubnet
natOutgoing: Enabled
nodeSelector: all()
- blockSize: 116 # must be greater than 115 and < 128
cidr: fd00:10:244::/56
encapsulation: None # Does not support
natOutgoing: Enabled
nodeSelector: all()
nodeAddressAutodetectionV4:
interface: eth0
nodeAddressAutodetectionV6:
interface: eth0
---
# This section configures the Calico API server.
apiVersion: operator.tigera.io/v1
kind: APIServer
metadata:
name: default
spec: {}
EOF
# Make a copy of the kubeconfig for the log playbooks
mkdir -p "$HOME"/.airship
kind get kubeconfig > "$HOME"/.airship/kubeconfig
# Ensure all of the downloaded images are loaded into kind
# Redefining the environment variables (as export does not seem to work in Zuul environment)
BUILD_LIST="status-checker artifact-setup base infra-builder runner"
PULL_LIST="docker:stable-dind nginx quay.io/metal3-io/sushy-tools quay.io/airshipit/libvirt:aiap-v1"
kind load docker-image ${PULL_LIST}
for IMAGE in ${BUILD_LIST}; do
kind load docker-image "quay.io/airshipit/aiap-$IMAGE:latest"
done

View File

@ -1,43 +0,0 @@
#!/usr/bin/env bash
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
# This script starts up minikube, and accounts for an issue that sometimes
# comes up when running minikube for the first time in some environments
set +e
sudo -E minikube start --driver=none
status=$?
sudo chown -R "$USER" "$HOME"/.minikube; chmod -R u+wrx "$HOME"/.minikube
if [[ $status -gt 0 ]]; then
# Sometimes minikube fails to start if the directory permissions are not correct
sudo -E minikube delete
set -e
sudo -E minikube start --driver=none
fi
set -e
sudo -E minikube status
# Ensure .kube and .minikube have proper ownership
sudo chown -R "$USER" "$HOME"/.kube "$HOME"/.minikube
# Make a copy of the kubeconfig for the log playbooks
mkdir -p "$HOME"/.airship
cp "$HOME"/.kube/config "$HOME"/.airship/kubeconfig
# Give cluster a chance to start up
sleep 10

View File

@ -174,9 +174,9 @@
- ./tools/deployment/01_install_kubectl.sh
- ./tools/install_kustomize.sh
- ./tools/airship-in-a-pod/scripts/01_dns_settings.sh
- ./tools/airship-in-a-pod/scripts/10_install_minikube.sh
- ./tools/airship-in-a-pod/scripts/10_install_kind.sh
- ./tools/airship-in-a-pod/scripts/11_build_images.sh
- ./tools/airship-in-a-pod/scripts/12_start_minikube.sh
- ./tools/airship-in-a-pod/scripts/12_start_kind.sh
- ./tools/airship-in-a-pod/scripts/13_apply_dns.sh
- ./tools/airship-in-a-pod/scripts/20_apply_aiap.sh
serve_dir: /srv/images