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