Skip to content

Commit 1150b8a

Browse files
authored
Fix capz PR jobs - downloand and import image tars instead of retagging missing images (#552)
Signed-off-by: Mark Rossetti <marosset@microsoft.com>
1 parent 48e95df commit 1150b8a

File tree

3 files changed

+39
-90
lines changed

3 files changed

+39
-90
lines changed

capz/templates/gmsa-pr.yaml

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,8 @@ spec:
353353
set -o pipefail
354354
set -o errexit
355355
356+
CI_VERSION=${CI_VERSION}
357+
356358
systemctl stop kubelet
357359
declare -a BINARIES=("kubeadm" "kubectl" "kubelet")
358360
for BINARY in "$${BINARIES[@]}"; do
@@ -361,43 +363,27 @@ spec:
361363
done
362364
systemctl restart kubelet
363365
364-
# prepull images from gcr.io/k8s-staging-ci-images and retag it to
365-
# registry.k8s.io so kubeadm can fetch correct images no matter what
366+
# Download image tars from GCS, import into containerd, and retag
367+
CI_DIR=/tmp/k8s-ci
368+
mkdir -p $$CI_DIR
366369
declare -a IMAGES=("kube-apiserver" "kube-controller-manager" "kube-proxy" "kube-scheduler")
367-
[[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO=""
370+
CONTAINER_EXT="tar"
371+
CI_URL="https://storage.googleapis.com/k8s-release-dev/ci/$${CI_VERSION}/bin/linux/amd64"
368372
IMAGE_REGISTRY_PREFIX=registry.k8s.io
369373
for IMAGE in "$${IMAGES[@]}"; do
370-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"${CI_VERSION//+/_}"
371-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"${CI_VERSION//+/_}"
374+
echo "* downloading package: $$CI_URL/$$IMAGE.$$CONTAINER_EXT"
375+
curl --retry 10 --retry-delay 5 "$$CI_URL/$$IMAGE.$$CONTAINER_EXT" --output "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT"
376+
ctr -n k8s.io images import "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT" || echo "* ignoring expected 'ctr images import' result"
377+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"$${CI_VERSION//+/_}"
378+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"$${CI_VERSION//+/_}"
372379
done
373380
374381
echo "kubeadm version: $(kubeadm version -o=short)"
375-
echo "kubectl version: $(kubectl version --client=true --short=true)"
382+
echo "kubectl version: $(kubectl version --client=true)"
376383
echo "kubelet version: $(kubelet --version)"
377384
owner: root:root
378385
path: /tmp/replace-k8s-binaries.sh
379386
permissions: "0744"
380-
- content: |
381-
#!/bin/bash
382-
383-
set -o nounset
384-
set -o pipefail
385-
set -o errexit
386-
387-
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
388-
tar -xzvf /tmp/yq_linux_amd64.tar.gz -C /tmp && mv /tmp/yq_linux_amd64 /usr/bin/yq
389-
rm /tmp/yq_linux_amd64.tar.gz
390-
391-
export KUBECONFIG=/etc/kubernetes/admin.conf
392-
kubectl -n kube-system set image daemonset/kube-proxy kube-proxy="${REGISTRY}/kube-proxy:${KUBE_IMAGE_TAG}"
393-
systemctl stop kubelet
394-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-apiserver:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-apiserver.yaml
395-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-controller-manager:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-controller-manager.yaml
396-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-scheduler:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-scheduler.yaml
397-
systemctl restart kubelet
398-
owner: root:root
399-
path: /tmp/replace-k8s-components.sh
400-
permissions: "0744"
401387
initConfiguration:
402388
nodeRegistration:
403389
kubeletExtraArgs:
@@ -415,7 +401,6 @@ spec:
415401
- /var/lib/etcddisk
416402
postKubeadmCommands:
417403
- bash -c /tmp/node-log-query-kubelet-config.sh
418-
- bash -c /tmp/replace-k8s-components.sh
419404
preKubeadmCommands:
420405
- bash -c /tmp/replace-k8s-binaries.sh
421406
useExperimentalRetryJoin: true

capz/templates/pr/patches/kubeadm-bootstrap-control-plane-pr.yaml

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
set -o pipefail
99
set -o errexit
1010
11+
CI_VERSION=${CI_VERSION}
12+
1113
systemctl stop kubelet
1214
declare -a BINARIES=("kubeadm" "kubectl" "kubelet")
1315
for BINARY in "$${BINARIES[@]}"; do
@@ -16,51 +18,28 @@
1618
done
1719
systemctl restart kubelet
1820
19-
# prepull images from gcr.io/k8s-staging-ci-images and retag it to
20-
# registry.k8s.io so kubeadm can fetch correct images no matter what
21+
# Download image tars from GCS, import into containerd, and retag
22+
CI_DIR=/tmp/k8s-ci
23+
mkdir -p $$CI_DIR
2124
declare -a IMAGES=("kube-apiserver" "kube-controller-manager" "kube-proxy" "kube-scheduler")
22-
[[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO=""
25+
CONTAINER_EXT="tar"
26+
CI_URL="https://storage.googleapis.com/k8s-release-dev/ci/$${CI_VERSION}/bin/linux/amd64"
2327
IMAGE_REGISTRY_PREFIX=registry.k8s.io
2428
for IMAGE in "$${IMAGES[@]}"; do
25-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"${CI_VERSION//+/_}"
26-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"${CI_VERSION//+/_}"
29+
echo "* downloading package: $$CI_URL/$$IMAGE.$$CONTAINER_EXT"
30+
curl --retry 10 --retry-delay 5 "$$CI_URL/$$IMAGE.$$CONTAINER_EXT" --output "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT"
31+
ctr -n k8s.io images import "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT" || echo "* ignoring expected 'ctr images import' result"
32+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"$${CI_VERSION//+/_}"
33+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"$${CI_VERSION//+/_}"
2734
done
2835
2936
echo "kubeadm version: $(kubeadm version -o=short)"
30-
echo "kubectl version: $(kubectl version --client=true --short=true)"
37+
echo "kubectl version: $(kubectl version --client=true)"
3138
echo "kubelet version: $(kubelet --version)"
3239
path: /tmp/replace-k8s-binaries.sh
3340
owner: "root:root"
3441
permissions: "0744"
35-
- op: add
36-
path: /spec/kubeadmConfigSpec/files/-
37-
value:
38-
content: |
39-
#!/bin/bash
40-
41-
set -o nounset
42-
set -o pipefail
43-
set -o errexit
44-
45-
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
46-
tar -xzvf /tmp/yq_linux_amd64.tar.gz -C /tmp && mv /tmp/yq_linux_amd64 /usr/bin/yq
47-
rm /tmp/yq_linux_amd64.tar.gz
48-
49-
export KUBECONFIG=/etc/kubernetes/admin.conf
50-
kubectl -n kube-system set image daemonset/kube-proxy kube-proxy="${REGISTRY}/kube-proxy:${KUBE_IMAGE_TAG}"
51-
systemctl stop kubelet
52-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-apiserver:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-apiserver.yaml
53-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-controller-manager:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-controller-manager.yaml
54-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-scheduler:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-scheduler.yaml
55-
systemctl restart kubelet
56-
path: /tmp/replace-k8s-components.sh
57-
owner: "root:root"
58-
permissions: "0744"
5942
- op: add
6043
path: /spec/kubeadmConfigSpec/preKubeadmCommands/-
6144
value:
6245
bash -c /tmp/replace-k8s-binaries.sh
63-
- op: add
64-
path: /spec/kubeadmConfigSpec/postKubeadmCommands/-
65-
value:
66-
bash -c /tmp/replace-k8s-components.sh

capz/templates/windows-pr.yaml

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,8 @@ spec:
353353
set -o pipefail
354354
set -o errexit
355355
356+
CI_VERSION=${CI_VERSION}
357+
356358
systemctl stop kubelet
357359
declare -a BINARIES=("kubeadm" "kubectl" "kubelet")
358360
for BINARY in "$${BINARIES[@]}"; do
@@ -361,43 +363,27 @@ spec:
361363
done
362364
systemctl restart kubelet
363365
364-
# prepull images from gcr.io/k8s-staging-ci-images and retag it to
365-
# registry.k8s.io so kubeadm can fetch correct images no matter what
366+
# Download image tars from GCS, import into containerd, and retag
367+
CI_DIR=/tmp/k8s-ci
368+
mkdir -p $$CI_DIR
366369
declare -a IMAGES=("kube-apiserver" "kube-controller-manager" "kube-proxy" "kube-scheduler")
367-
[[ $(id -u) != 0 ]] && SUDO="sudo" || SUDO=""
370+
CONTAINER_EXT="tar"
371+
CI_URL="https://storage.googleapis.com/k8s-release-dev/ci/$${CI_VERSION}/bin/linux/amd64"
368372
IMAGE_REGISTRY_PREFIX=registry.k8s.io
369373
for IMAGE in "$${IMAGES[@]}"; do
370-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"${CI_VERSION//+/_}"
371-
$${SUDO} ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"${CI_VERSION//+/_}"
374+
echo "* downloading package: $$CI_URL/$$IMAGE.$$CONTAINER_EXT"
375+
curl --retry 10 --retry-delay 5 "$$CI_URL/$$IMAGE.$$CONTAINER_EXT" --output "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT"
376+
ctr -n k8s.io images import "$$CI_DIR/$$IMAGE.$$CONTAINER_EXT" || echo "* ignoring expected 'ctr images import' result"
377+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" $$IMAGE_REGISTRY_PREFIX/$$IMAGE:"$${CI_VERSION//+/_}"
378+
ctr -n k8s.io images tag $$IMAGE_REGISTRY_PREFIX/$$IMAGE-amd64:"$${CI_VERSION//+/_}" gcr.io/k8s-staging-ci-images/$$IMAGE:"$${CI_VERSION//+/_}"
372379
done
373380
374381
echo "kubeadm version: $(kubeadm version -o=short)"
375-
echo "kubectl version: $(kubectl version --client=true --short=true)"
382+
echo "kubectl version: $(kubectl version --client=true)"
376383
echo "kubelet version: $(kubelet --version)"
377384
owner: root:root
378385
path: /tmp/replace-k8s-binaries.sh
379386
permissions: "0744"
380-
- content: |
381-
#!/bin/bash
382-
383-
set -o nounset
384-
set -o pipefail
385-
set -o errexit
386-
387-
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
388-
tar -xzvf /tmp/yq_linux_amd64.tar.gz -C /tmp && mv /tmp/yq_linux_amd64 /usr/bin/yq
389-
rm /tmp/yq_linux_amd64.tar.gz
390-
391-
export KUBECONFIG=/etc/kubernetes/admin.conf
392-
kubectl -n kube-system set image daemonset/kube-proxy kube-proxy="${REGISTRY}/kube-proxy:${KUBE_IMAGE_TAG}"
393-
systemctl stop kubelet
394-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-apiserver:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-apiserver.yaml
395-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-controller-manager:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-controller-manager.yaml
396-
yq e '.spec.containers[0].image = "${REGISTRY}/kube-scheduler:${KUBE_IMAGE_TAG}"' -i /etc/kubernetes/manifests/kube-scheduler.yaml
397-
systemctl restart kubelet
398-
owner: root:root
399-
path: /tmp/replace-k8s-components.sh
400-
permissions: "0744"
401387
initConfiguration:
402388
nodeRegistration:
403389
kubeletExtraArgs:
@@ -415,7 +401,6 @@ spec:
415401
- /var/lib/etcddisk
416402
postKubeadmCommands:
417403
- bash -c /tmp/node-log-query-kubelet-config.sh
418-
- bash -c /tmp/replace-k8s-components.sh
419404
preKubeadmCommands:
420405
- bash -c /tmp/replace-k8s-binaries.sh
421406
useExperimentalRetryJoin: true

0 commit comments

Comments
 (0)