sigs.k8s.io/cluster-api-provider-azure@v1.17.0/templates/test/ci/prow-machine-pool-ci-version/patches/machine-pool-ci-version.yaml (about) 1 apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 2 kind: KubeadmConfig 3 metadata: 4 name: ${CLUSTER_NAME}-mp-0 5 spec: 6 joinConfiguration: 7 nodeRegistration: 8 kubeletExtraArgs: 9 cloud-provider: external 10 image-credential-provider-bin-dir: /var/lib/kubelet/credential-provider 11 image-credential-provider-config: /var/lib/kubelet/credential-provider-config.yaml 12 preKubeadmCommands: 13 - bash -c /tmp/oot-cred-provider.sh 14 - bash -c /tmp/kubeadm-bootstrap.sh 15 files: 16 - path: /tmp/oot-cred-provider.sh 17 owner: "root:root" 18 permissions: "0744" 19 content: | 20 #!/bin/bash 21 22 set -o nounset 23 set -o pipefail 24 set -o errexit 25 [[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO="" 26 27 echo "Use OOT credential provider" 28 mkdir -p /var/lib/kubelet/credential-provider 29 curl --retry 10 --retry-delay 5 -w "response status code is %{http_code}" -Lo /var/lib/kubelet/credential-provider/acr-credential-provider "https://${AZURE_STORAGE_ACCOUNT}.blob.core.windows.net/${AZURE_BLOB_CONTAINER_NAME}/${IMAGE_TAG_ACR_CREDENTIAL_PROVIDER}/azure-acr-credential-provider" 30 chmod 755 /var/lib/kubelet/credential-provider/acr-credential-provider 31 curl --retry 10 --retry-delay 5 -w "response status code is %{http_code}" -Lo /var/lib/kubelet/credential-provider-config.yaml "https://${AZURE_STORAGE_ACCOUNT}.blob.core.windows.net/${AZURE_BLOB_CONTAINER_NAME}/${IMAGE_TAG_ACR_CREDENTIAL_PROVIDER}/credential-provider-config.yaml" 32 chmod 644 /var/lib/kubelet/credential-provider-config.yaml 33 - path: /tmp/kubeadm-bootstrap.sh 34 owner: "root:root" 35 permissions: "0744" 36 content: | 37 #!/bin/bash 38 39 set -o nounset 40 set -o pipefail 41 set -o errexit 42 [[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO="" 43 44 # This test installs release packages or binaries that are a result of the CI and release builds. 45 # It runs '... --version' commands to verify that the binaries are correctly installed 46 # and finally uninstalls the packages. 47 # For the release packages it tests all versions in the support skew. 48 LINE_SEPARATOR="*************************************************" 49 echo "$$LINE_SEPARATOR" 50 CI_VERSION=${CI_VERSION} 51 if [[ "$${CI_VERSION}" != "" ]]; then 52 CI_DIR=/tmp/k8s-ci 53 mkdir -p $$CI_DIR 54 declare -a PACKAGES_TO_TEST=("kubectl" "kubelet" "kubeadm") 55 declare -a CONTAINERS_TO_TEST=("kube-apiserver" "kube-controller-manager" "kube-proxy" "kube-scheduler") 56 CONTAINER_EXT="tar" 57 echo "* testing CI version $$CI_VERSION" 58 # Check for semver 59 if [[ "$${CI_VERSION}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then 60 VERSION_WITHOUT_PREFIX="${CI_VERSION#v}" 61 DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https curl 62 curl -fsSL https://pkgs.k8s.io/core:/stable:/${KUBERNETES_VERSION}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 63 echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/${KUBERNETES_VERSION}/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list 64 apt-get update 65 # replace . with \. 66 VERSION_REGEX="${VERSION_WITHOUT_PREFIX//./\\.}" 67 PACKAGE_VERSION="$(apt-cache madison kubelet|grep $${VERSION_REGEX}- | head -n1 | cut -d '|' -f 2 | tr -d '[:space:]')" 68 for CI_PACKAGE in "$${PACKAGES_TO_TEST[@]}"; do 69 echo "* installing package: $$CI_PACKAGE $${PACKAGE_VERSION}" 70 DEBIAN_FRONTEND=noninteractive apt-get install -y $$CI_PACKAGE=$$PACKAGE_VERSION 71 done 72 else 73 CI_URL="https://storage.googleapis.com/k8s-release-dev/ci/$${CI_VERSION}/bin/linux/amd64" 74 fi 75 for CI_PACKAGE in "$${PACKAGES_TO_TEST[@]}"; do 76 echo "* downloading binary: $$CI_URL/$$CI_PACKAGE" 77 wget --inet4-only "$$CI_URL/$$CI_PACKAGE" -nv -O "$$CI_DIR/$$CI_PACKAGE" 78 chmod +x "$$CI_DIR/$$CI_PACKAGE" 79 mv "$$CI_DIR/$$CI_PACKAGE" "/usr/bin/$$CI_PACKAGE" 80 done 81 IMAGE_REGISTRY_PREFIX=registry.k8s.io 82 for CI_CONTAINER in "$${CONTAINERS_TO_TEST[@]}"; do 83 echo "* downloading package: $$CI_URL/$$CI_CONTAINER.$$CONTAINER_EXT" 84 wget --inet4-only "$$CI_URL/$$CI_CONTAINER.$$CONTAINER_EXT" -nv -O "$$CI_DIR/$$CI_CONTAINER.$$CONTAINER_EXT" 85 $${SUDO} ctr -n k8s.io images import "$$CI_DIR/$$CI_CONTAINER.$$CONTAINER_EXT" || echo "* ignoring expected 'ctr images import' result" 86 $${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$CI_CONTAINER-amd64:"$${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$CI_CONTAINER:"$${CI_VERSION//+/_}" 87 $${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$CI_CONTAINER-amd64:"$${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$CI_CONTAINER:"$${CI_VERSION//+/_}" 88 done 89 fi 90 systemctl restart kubelet 91 fi 92 echo "* checking binary versions" 93 echo "ctr version: " $(ctr version) 94 echo "kubeadm version: " $(kubeadm version -o=short) 95 echo "kubectl version: " $(kubectl version --client=true) 96 echo "kubelet version: " $(kubelet --version) 97 echo "$$LINE_SEPARATOR" 98 - path: /etc/kubernetes/azure.json 99 owner: "root:root" 100 permissions: "0644" 101 contentFrom: 102 secret: 103 key: worker-node-azure.json 104 name: ${CLUSTER_NAME}-mp-0-azure-json 105 --- 106 apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 107 kind: AzureMachinePool 108 metadata: 109 name: ${CLUSTER_NAME}-mp-0 110 spec: 111 template: 112 image: 113 # we use the latest image as a workaround there is no published marketplace image for k8s CI versions. 114 # latest binaries and images will get replaced to the desired version by the script above. 115 marketplace: 116 publisher: cncf-upstream 117 offer: capi 118 sku: ubuntu-2204-gen1 119 version: latest