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