From 175f3a03e8d56a53bfbf273dd41b93ee75c9c3b6 Mon Sep 17 00:00:00 2001 From: Sheogorath <sheogorath@shivering-isles.com> Date: Tue, 8 Mar 2022 18:51:52 +0100 Subject: [PATCH] fix(system-upgrade): Repair kubernetes upgrade automation First of all, `kubeadm upgrade apply` shall only be used on the first controlplane node. Therefore it'll check if another node controlplane node is already upgraded. Second we fixed the order, so that the kubelet is upgraded after the node, and restarted after the update is installed. --- .../system-upgrades/kubernetes.yaml | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/infrastructure/system-upgrades/kubernetes.yaml b/infrastructure/system-upgrades/kubernetes.yaml index 309307a9a..34be3b714 100644 --- a/infrastructure/system-upgrades/kubernetes.yaml +++ b/infrastructure/system-upgrades/kubernetes.yaml @@ -20,15 +20,24 @@ stringData: set -x secrets="$(dirname "$0")" systemd-run --same-dir --wait --collect --service-type=exec dnf upgrade -y kubernetes-kubeadm - kubeadm upgrade apply --yes - systemd-run --same-dir --wait --collect --service-type=exec dnf upgrade -y kubernetes-kubeadm + if [ "$1" = "first" ]; then + kubeadm upgrade apply --yes "$(kubeadm version -o short)" + else + kubeadm upgrade node + fi + systemd-run --same-dir --wait --collect --service-type=exec dnf upgrade -y kubernetes + systemctl restart kubelet.service upgrade.sh: | #!/bin/bash set -e set -x - secrets="$(dirname "$0")" - source "$secrets/setup-copr.sh" - source "$secrets/kubernetes-upgrade.sh" + secrets="/run/system-upgrade/secrets/" + chroot /host sh "$secrets/setup-copr.sh" + if ! /host/usr/bin/kubectl get pods -n kube-system -o yaml | grep kube-apiserver:v1.21.10; then + chroot /host sh "$secrets/kubernetes-upgrade.sh" "first" + else + chroot /host sh "$secrets/kubernetes-upgrade.sh" + fi --- apiVersion: upgrade.cattle.io/v1 kind: Plan @@ -58,5 +67,4 @@ spec: version: "1.0" upgrade: image: docker.io/library/fedora:35 - command: ["chroot", "/host"] - args: ["sh", "/run/system-upgrade/secrets/kubernetes-upgrade/upgrade.sh"] + command: ["sh", "/host/run/system-upgrade/secrets/kubernetes-upgrade/upgrade.sh"] -- GitLab