github.com/cilium/cilium@v1.16.2/test/gke/create-cluster.sh (about) 1 #!/usr/bin/env bash 2 3 if [ "$#" != 1 ]; then 4 >&2 printf "Illegal number of parameters\n" 5 >&2 printf "Usage: ./select-cluster.sh owner_pipeline_name\n" 6 exit 1 7 fi 8 9 # replace . with - in job name due to GKE only accepting dashes and alphanumeric 10 # characters in cluster names 11 owner_pipeline_name="${1/./-}" 12 13 test_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" 14 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 15 16 project="cilium-ci" 17 zone="us-west1-a" 18 labels="usage=cilium-jenkins,owner=${owner_pipeline_name}" 19 20 set -e 21 22 echo "creating new cluster" 23 gcloud container clusters create "${owner_pipeline_name}" \ 24 --project "${project}" \ 25 --zone "${zone}" \ 26 --labels "${labels}" \ 27 --image-type COS_CONTAINERD \ 28 --num-nodes 2 \ 29 --machine-type n1-standard-4 \ 30 --disk-type pd-standard \ 31 --disk-size 100GB \ 32 --enable-service-externalips \ 33 --preemptible 34 # --enable-service-externalips is required for our tests, as the 35 # `DenyServiceExternalIPs` admission controller is now enabled by default on GKE 36 # version 1.21 and above, cf. https://cloud.google.com/kubernetes-engine/docs/release-notes#December_20_2021 37 38 cluster_uri=$(gcloud container clusters describe --project "${project}" --zone "${zone}" --format='value(uri())' "${owner_pipeline_name}") 39 40 export KUBECONFIG="${script_dir}/gke-kubeconfig" 41 echo "getting kubeconfig for ${cluster_uri} (will store in ${KUBECONFIG})" 42 gcloud container clusters get-credentials --project "${project}" --zone "${zone}" "${cluster_uri}" 43 44 echo "${cluster_uri}" > "${script_dir}/cluster-uri" 45 gcloud container clusters describe --project "${project}" --zone "${zone}" --format='value(name)' "${cluster_uri}" > "${script_dir}/cluster-name" 46 gcloud container clusters describe --project "${project}" --zone "${zone}" --format='value(currentMasterVersion)' "${cluster_uri}" \ 47 | sed -E 's/([0-9]+\.[0-9]+)\..*/\1/' | tr -d '\n' > "${script_dir}/cluster-version" 48 gcloud container clusters describe --project "${project}" --zone "${zone}" --format='value(clusterIpv4Cidr)' "${cluster_uri}" > "${script_dir}/cluster-cidr" 49 50 echo "labeling nodes" 51 index=1 52 for node in $(kubectl get nodes --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'); 53 do 54 kubectl label node "$node" cilium.io/ci-node=k8s"$index" --overwrite 55 index=$((index+1)) 56 done