|
7 | 7 | set -o pipefail |
8 | 8 | set -o errexit |
9 | 9 |
|
10 | | - export KUBEADM_REVISION="${KUBEADM_REVISION}" |
11 | | - export KUBECTL_REVISION="${KUBECTL_REVISION}" |
12 | | - export KUBELET_REVISION="${KUBELET_REVISION}" |
| 10 | + export KUBEADM_REVISION="${KUBEADM_REVISION:-}" |
| 11 | + export KUBECTL_REVISION="${KUBECTL_REVISION:-}" |
| 12 | + export KUBELET_REVISION="${KUBELET_REVISION:-}" |
13 | 13 |
|
14 | 14 | systemctl stop kubelet |
15 | | - # Define the base URL and version |
| 15 | +
|
16 | 16 | BASE_URL="https://kubernetesreleases.blob.core.windows.net/dalec-packages" |
17 | 17 | VERSION="${KUBERNETES_VERSION}" |
18 | 18 | VERSION=$${VERSION#v} |
19 | 19 | OS_VERSION="ubuntu24.04" |
20 | 20 | ARCH="amd64" |
21 | 21 |
|
22 | | - # Construct DEB_VERSION explicitly for each binary |
23 | | - KUBEADM_DEB_VERSION="$${OS_VERSION}u$${KUBEADM_REVISION}" |
24 | | - KUBECTL_DEB_VERSION="$${OS_VERSION}u$${KUBECTL_REVISION}" |
25 | | - KUBELET_DEB_VERSION="$${OS_VERSION}u$${KUBELET_REVISION}" |
| 22 | + # Build lists of binaries to replace based on what's set |
| 23 | + declare -a BINARIES=() |
| 24 | + declare -A DEB_VERSIONS=() |
| 25 | +
|
| 26 | + [[ -n "${KUBEADM_REVISION}" ]] && BINARIES+=("kubeadm") && DEB_VERSIONS["kubeadm"]="$${OS_VERSION}u$${KUBEADM_REVISION}" |
| 27 | + [[ -n "${KUBECTL_REVISION}" ]] && BINARIES+=("kubectl") && DEB_VERSIONS["kubectl"]="$${OS_VERSION}u$${KUBECTL_REVISION}" |
| 28 | + [[ -n "${KUBELET_REVISION}" ]] && BINARIES+=("kubelet") && DEB_VERSIONS["kubelet"]="$${OS_VERSION}u$${KUBELET_REVISION}" |
| 29 | +
|
| 30 | + # Skip if nothing to replace (check first element) |
| 31 | + if [[ -z "$${BINARIES[0]:-}" ]]; then |
| 32 | + echo "No *_REVISION variables set. Skipping binary replacement." |
| 33 | + systemctl start kubelet |
| 34 | + exit 0 |
| 35 | + fi |
26 | 36 |
|
27 | | - declare -a BINARIES=("kubeadm" "kubectl" "kubelet") |
28 | | - declare -A DEB_VERSIONS=( |
29 | | - ["kubeadm"]="$${KUBEADM_DEB_VERSION}" |
30 | | - ["kubectl"]="$${KUBECTL_DEB_VERSION}" |
31 | | - ["kubelet"]="$${KUBELET_DEB_VERSION}" |
32 | | - ) |
| 37 | + echo "Replacing binaries: $${BINARIES[*]}" |
33 | 38 |
|
34 | 39 | for BINARY in "$${BINARIES[@]}"; do |
35 | 40 | DEB_VERSION="$${DEB_VERSIONS[$${BINARY}]}" |
|
38 | 43 | DEB_URL="$${BASE_URL}/$${BINARY}/$${VERSION}/$${OS_VERSION}/$${ARCH}/$${BINARY}_$${VERSION}-$${DEB_VERSION}_$${ARCH}.deb" |
39 | 44 | echo "Downloading from: $${DEB_URL}" |
40 | 45 | curl -L --retry 10 --retry-delay 5 "$${DEB_URL}" --output "$${DEB_FILE}" |
41 | | - # Extract just the binary from the deb package directly to /usr/bin |
42 | 46 | echo "Extracting $${BINARY} binary to /usr/bin" |
43 | 47 | dpkg-deb --fsys-tarfile "$${DEB_FILE}" | tar -xf - --strip-components=3 -C /usr/bin ./usr/bin/$${BINARY} |
44 | 48 | chmod +x "/usr/bin/$${BINARY}" |
45 | | - # Clean up the downloaded deb file |
46 | 49 | rm -f "$${DEB_FILE}" |
47 | 50 | done |
| 51 | +
|
48 | 52 | systemctl restart kubelet |
49 | | - echo "kubeadm version: $(kubeadm version -o=short)" |
50 | | - echo "kubectl version: $(kubectl version --client=true)" |
51 | | - echo "kubelet version: $(kubelet --version)" |
| 53 | +
|
| 54 | + # Print versions |
| 55 | + [[ " $${BINARIES[*]} " =~ " kubeadm " ]] && echo "kubeadm version: $(kubeadm version -o=short)" |
| 56 | + [[ " $${BINARIES[*]} " =~ " kubectl " ]] && echo "kubectl version: $(kubectl version --client=true)" |
| 57 | + [[ " $${BINARIES[*]} " =~ " kubelet " ]] && echo "kubelet version: $(kubelet --version)" |
52 | 58 | path: /tmp/replace-k8s-binaries.sh |
53 | 59 | owner: "root:root" |
54 | 60 | permissions: "0744" |
|
0 commit comments