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