sigs.k8s.io/cluster-api-provider-azure@v1.14.3/templates/test/dev/patches/control-plane-custom-builds.yaml (about) 1 apiVersion: controlplane.cluster.x-k8s.io/v1beta1 2 kind: KubeadmControlPlane 3 metadata: 4 name: "${CLUSTER_NAME}-control-plane" 5 annotations: 6 controlplane.cluster.x-k8s.io/skip-kube-proxy: "true" 7 spec: 8 kubeadmConfigSpec: 9 verbosity: 5 10 clusterConfiguration: 11 kubernetesVersion: "ci/${CI_VERSION}" 12 preKubeadmCommands: 13 - bash -c /tmp/replace-k8s-binaries.sh 14 postKubeadmCommands: 15 - bash -c /tmp/replace-k8s-components.sh 16 files: 17 - path: /tmp/replace-k8s-binaries.sh 18 owner: "root:root" 19 permissions: "0744" 20 content: | 21 #!/bin/bash 22 23 set -o nounset 24 set -o pipefail 25 set -o errexit 26 27 systemctl stop kubelet 28 az login --identity 29 declare -a BINARIES=("kubeadm" "kubectl" "kubelet") 30 for BINARY in "$${BINARIES[@]}"; do 31 echo "* installing package: $${BINARY} ${KUBE_GIT_VERSION}" 32 az storage blob download --blob-url "https://${AZURE_STORAGE_ACCOUNT}.blob.core.windows.net/${AZURE_BLOB_CONTAINER_NAME}/${KUBE_GIT_VERSION}/bin/linux/amd64/$${BINARY}" -f "/usr/bin/$${BINARY}" --auth-mode login 33 done 34 systemctl restart kubelet 35 36 # prepull images from gcr.io/k8s-staging-ci-images and retag it to 37 # registry.k8s.io so kubeadm can fetch correct images no matter what 38 declare -a IMAGES=("kube-apiserver" "kube-controller-manager" "kube-proxy" "kube-scheduler") 39 [[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO="" 40 IMAGE_REGISTRY_PREFIX=registry.k8s.io 41 for IMAGE in "$${IMAGES[@]}"; do 42 $${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"${CI_VERSION//+/_}" 43 $${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"${CI_VERSION//+/_}" 44 done 45 46 echo "kubeadm version: $(kubeadm version -o=short)" 47 echo "kubectl version: $(kubectl version --client=true)" 48 echo "kubelet version: $(kubelet --version)" 49 - path: /tmp/replace-k8s-components.sh 50 owner: "root:root" 51 permissions: "0744" 52 content: | 53 #!/bin/bash 54 55 set -o nounset 56 set -o pipefail 57 set -o errexit 58 59 curl -L --retry 10 --retry-delay 5 https://github.com/mikefarah/yq/releases/download/v4.6.1/yq_linux_amd64.tar.gz --output /tmp/yq_linux_amd64.tar.gz 60 tar -xzvf /tmp/yq_linux_amd64.tar.gz -C /tmp && mv /tmp/yq_linux_amd64 /usr/bin/yq 61 rm /tmp/yq_linux_amd64.tar.gz 62 63 export KUBECONFIG=/etc/kubernetes/admin.conf 64 kubectl -n kube-system set image daemonset/kube-proxy kube-proxy="${REGISTRY}/kube-proxy:${KUBE_IMAGE_TAG}" 65 systemctl stop kubelet 66 yq e '.spec.containers[0].image = "${REGISTRY}/kube-apiserver:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-apiserver.yaml 67 yq e '.spec.containers[0].image = "${REGISTRY}/kube-controller-manager:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-controller-manager.yaml 68 yq e '.spec.containers[0].image = "${REGISTRY}/kube-scheduler:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-scheduler.yaml 69 systemctl restart kubelet 70 - path: /etc/kubernetes/azure.json 71 owner: "root:root" 72 permissions: "0644" 73 contentFrom: 74 secret: 75 key: control-plane-azure.json 76 name: ${CLUSTER_NAME}-control-plane-azure-json 77 --- 78 apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 79 kind: AzureMachineTemplate 80 metadata: 81 name: ${CLUSTER_NAME}-control-plane 82 spec: 83 template: 84 spec: 85 image: 86 # we use the latest image as a workaround there is no published marketplace image for k8s CI versions. 87 # latest binaries and images will get replaced to the desired version by the script above. 88 marketplace: 89 publisher: cncf-upstream 90 offer: capi 91 sku: ubuntu-2204-gen1 92 version: latest