@@ -92,35 +92,50 @@ spec:
9292 set -o pipefail
9393 set -o errexit
9494
95- systemctl stop kubelet
95+ export KUBEADM_REVISION="${KUBEADM_REVISION:-""}"
96+ export KUBECTL_REVISION="${KUBECTL_REVISION:-""}"
97+ export KUBELET_REVISION="${KUBELET_REVISION:-""}"
9698
97- declare -a BINARIES=("kubeadm" "kubectl" " kubelet")
99+ systemctl stop kubelet
98100
99- # Define the base URL and version
100101 BASE_URL="https://kubernetesreleases.blob.core.windows.net/dalec-packages"
101102 VERSION="${KUBERNETES_VERSION}"
102103 VERSION=$${VERSION#v}
103104 OS_VERSION="azl3"
104105 ARCH="x86_64"
105106
107+ # Build lists of binaries to replace based on what's set
108+ declare -a BINARIES=()
109+ declare -A RPM_RELEASES=()
110+
111+ [[ -n "${KUBEADM_REVISION}" ]] && BINARIES+=("kubeadm") && RPM_RELEASES["kubeadm"]="$${KUBEADM_REVISION}.$${OS_VERSION}"
112+ [[ -n "${KUBECTL_REVISION}" ]] && BINARIES+=("kubectl") && RPM_RELEASES["kubectl"]="$${KUBECTL_REVISION}.$${OS_VERSION}"
113+ [[ -n "${KUBELET_REVISION}" ]] && BINARIES+=("kubelet") && RPM_RELEASES["kubelet"]="$${KUBELET_REVISION}.$${OS_VERSION}"
114+
115+ # Skip if nothing to replace (check first element)
116+ if [[ -z "$${BINARIES[0]:-}" ]]; then
117+ echo "No *_REVISION variables set. Skipping binary replacement."
118+ systemctl start kubelet
119+ exit 0
120+ fi
121+
122+ echo "Replacing binaries: $${BINARIES[*]}"
123+
106124 for BINARY in "$${BINARIES[@]}"; do
107- echo "* downloading and extracting binary: $${BINARY} $${VERSION}"
108- BINARY_VAR="$${BINARY^^}_REVISION"
109- REVISION=$${!BINARY_VAR}
110- RPM_FILE="/tmp/$${BINARY}-$${VERSION}-$${REVISION}.$${OS_VERSION}.$${ARCH}.rpm"
111- RPM_URL="$${BASE_URL}/$${BINARY}/$${VERSION}/$${OS_VERSION}/$${ARCH}/$${BINARY}-$${VERSION}-$${REVISION}.$${OS_VERSION}.$${ARCH}.rpm"
125+ RPM_RELEASE="$${RPM_RELEASES[$${BINARY}]}"
126+ echo "* downloading and extracting binary: $${BINARY} $${VERSION} with rpm release $${RPM_RELEASE}"
127+ RPM_FILE="/tmp/$${BINARY}-$${VERSION}-$${RPM_RELEASE}.$${ARCH}.rpm"
128+ RPM_URL="$${BASE_URL}/$${BINARY}/$${VERSION}/$${OS_VERSION}/$${ARCH}/$${BINARY}-$${VERSION}-$${RPM_RELEASE}.$${ARCH}.rpm"
112129
113130 echo "Downloading from: $${RPM_URL}"
114131 curl -L --retry 10 --retry-delay 5 "$${RPM_URL}" --output "$${RPM_FILE}"
115132
116- # Extract binary from RPM package in a temporary directory
117133 echo "Extracting $${BINARY} binary to /usr/bin"
118134 TEMP_DIR="/tmp/$${BINARY}-extract-$$"
119135 mkdir -p "$${TEMP_DIR}"
120136 cd "$${TEMP_DIR}"
121137 rpm2cpio "$${RPM_FILE}" | cpio -idmv
122138
123- # Move the binary to the correct location
124139 if [ -f "./usr/bin/$${BINARY}" ]; then
125140 mv "./usr/bin/$${BINARY}" "/usr/bin/$${BINARY}"
126141 chmod +x "/usr/bin/$${BINARY}"
@@ -129,17 +144,17 @@ spec:
129144 exit 1
130145 fi
131146
132- # Clean up
133147 cd /
134148 rm -rf "$${TEMP_DIR}"
135149 rm -f "$${RPM_FILE}"
136150 done
137151
138152 systemctl restart kubelet
139153
140- echo "kubeadm version: $(kubeadm version -o=short)"
141- echo "kubectl version: $(kubectl version --client=true)"
142- echo "kubelet version: $(kubelet --version)"
154+ # Print versions
155+ [[ " $${BINARIES[*]} " =~ " kubeadm " ]] && echo "kubeadm version: $(kubeadm version -o=short)"
156+ [[ " $${BINARIES[*]} " =~ " kubectl " ]] && echo "kubectl version: $(kubectl version --client=true)"
157+ [[ " $${BINARIES[*]} " =~ " kubelet " ]] && echo "kubelet version: $(kubelet --version)"
143158 path: /opt/install-custom-k8s-binaries.sh
144159 owner: "root:root"
145160 permissions: "0744"
0 commit comments