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