From 769dc9a22086b960e7aa622e6adbb5ed52120f3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= <valtri@civ.zcu.cz>
Date: Wed, 20 Mar 2024 14:34:44 +0000
Subject: [PATCH] Kubernetes upgrade playbook

---
 cesnet-central/playbooks/upgrade.yaml | 82 +++++++++++++++++++++++++++
 cesnet-mcc/playbooks/upgrade.yaml     |  1 +
 2 files changed, 83 insertions(+)
 create mode 100644 cesnet-central/playbooks/upgrade.yaml
 create mode 120000 cesnet-mcc/playbooks/upgrade.yaml

diff --git a/cesnet-central/playbooks/upgrade.yaml b/cesnet-central/playbooks/upgrade.yaml
new file mode 100644
index 0000000..79e2c3b
--- /dev/null
+++ b/cesnet-central/playbooks/upgrade.yaml
@@ -0,0 +1,82 @@
+---
+#
+# Upgrade kubernetes cluster
+#
+# https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
+#
+# Usage example:
+#
+# VERSION=1.28.8
+# ansible-playbook playbooks/upgrade.yaml --extra-vars "version=$VERSION"
+#
+- name: Upgrade and hold kubeadm package
+  hosts: master,ingress,nfs,worker,gpu
+  become: true
+  tasks:
+    - name: Upgrade packages
+      apt:
+        name: kubeadm={{ version }}*
+        state: present
+        force: true
+        update_cache: true
+    - name: Hold packages
+      dpkg_selections:
+        name: "{{ item }}"
+        selection: hold
+      loop:
+        - kubeadm
+
+- name: Upgrade k8s master
+  hosts: master
+  become: true
+  tasks:
+    - name: Upgrade kubeadm
+      command: |
+        kubeadm upgrade apply --yes v{{ version }}
+      when: true
+
+- name: Upgrade k8s nodes
+  hosts: ingress,nfs,worker,gpu
+  become: true
+  tasks:
+    - name: Upgrade kubeadm
+      command: |
+        kubeadm upgrade node
+      when: true
+
+- name: Upgrade and hold packages
+  hosts: master,ingress,nfs,worker,gpu
+  become: true
+  tasks:
+    - name: Upgrade packages
+      apt:
+        name: kubectl={{ version }}*, kubelet={{ version }}*
+        state: present
+        force: true
+        update_cache: true
+    - name: Hold packages
+      dpkg_selections:
+        name: "{{ item }}"
+        selection: hold
+      loop:
+        - kubectl
+        - kubelet
+    - name: Restart kubelet
+      systemd:
+        state: restarted
+        name: kubelet
+
+# pinned by grycap.kubernetes
+# - name: Upgrade networking
+#   hosts: master
+#   become: true
+#   tasks:
+#     - name: Upgrade weave
+#       shell: |
+#         set -o pipefail
+#         kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
+#       environment:
+#         KUBECONFIG: /etc/kubernetes/admin.conf
+#       args:
+#         executable: /bin/bash
+#       when: true
diff --git a/cesnet-mcc/playbooks/upgrade.yaml b/cesnet-mcc/playbooks/upgrade.yaml
new file mode 120000
index 0000000..3a00425
--- /dev/null
+++ b/cesnet-mcc/playbooks/upgrade.yaml
@@ -0,0 +1 @@
+/home/valtri/notebooks-operations.eosc/cesnet-central/playbooks/upgrade.yaml
\ No newline at end of file
-- 
GitLab