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:
parent
bc704b736d
commit
e1562899d9
@ -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/
|
@ -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"
|
||||
|
106
tools/airship-in-a-pod/scripts/12_start_kind.sh
Executable file
106
tools/airship-in-a-pod/scripts/12_start_kind.sh
Executable 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
|
||||
|
@ -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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user