From 21a37f2a4c8eb1d6b56383f7474ea0b7666c961a Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Wed, 21 May 2025 03:34:26 +0200
Subject: [PATCH] feat(system-upgrade): Adjust plans to automate Talos updates
 using kured

This patch modifies the os upgrade tasks for Talos and Fedora to make
kured handle the system reboots. This should allow smooth Talos updates
without needing to worry about race conditions around the reboot of a
node.
---
 .../system-upgrades/fedora/fedora-autoupdate.yaml  |  2 +-
 infrastructure/base/system-upgrades/kured.yaml     | 13 ++++---------
 infrastructure/base/system-upgrades/talos/os.yaml  | 14 +++++---------
 3 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/infrastructure/base/system-upgrades/fedora/fedora-autoupdate.yaml b/infrastructure/base/system-upgrades/fedora/fedora-autoupdate.yaml
index a123fa8dd..8079a6fcd 100644
--- a/infrastructure/base/system-upgrades/fedora/fedora-autoupdate.yaml
+++ b/infrastructure/base/system-upgrades/fedora/fedora-autoupdate.yaml
@@ -15,7 +15,7 @@ stringData:
     systemctl start --wait dnf-automatic-install.service
     systemctl enable clevis-luks-askpass.path
     if ! dnf needs-restarting --reboothint; then
-      touch /var/run/reboot-required
+      touch /run/reboot-required
     fi
 ---
 apiVersion: upgrade.cattle.io/v1
diff --git a/infrastructure/base/system-upgrades/kured.yaml b/infrastructure/base/system-upgrades/kured.yaml
index 4cf8963e9..23429f139 100644
--- a/infrastructure/base/system-upgrades/kured.yaml
+++ b/infrastructure/base/system-upgrades/kured.yaml
@@ -39,20 +39,15 @@ metadata:
   namespace: system-upgrade
 data:
   values.yaml: |
-    affinity:
-     nodeAffinity:
-      requiredDuringSchedulingIgnoredDuringExecution:
-        nodeSelectorTerms:
-          - matchExpressions:
-            - key: feature.node.kubernetes.io/system-os_release.ID
-              operator: NotIn
-              values:
-              - talos
     configuration:
+      useRebootSentinelHostPath: true
       annotateNodes: true
       preferNoScheduleTaint: weave.works/kured-node-reboot
       blockingPodSelector:
         - upgrade.cattle.io/plan
+      rebootSentinel: "/run/reboot-required"
+      rebootMethod: command
+      rebootCommand: /sbin/shutdown --reboot
     hostNetwork: false
     metrics:
       create: true
diff --git a/infrastructure/base/system-upgrades/talos/os.yaml b/infrastructure/base/system-upgrades/talos/os.yaml
index 2aa873c77..333a215ee 100644
--- a/infrastructure/base/system-upgrades/talos/os.yaml
+++ b/infrastructure/base/system-upgrades/talos/os.yaml
@@ -12,11 +12,6 @@ spec:
       path: /var/run/secrets/talos.dev
       ignoreUpdates: true
   concurrency: 1
-  exclusive: true
-  drain:
-    deleteLocalData: true
-    ignoreDaemonSets: true
-    force: false
   nodeSelector:
     matchExpressions:
       - key: feature.node.kubernetes.io/system-os_release.ID
@@ -25,7 +20,7 @@ spec:
         - talos
       - key: upgrade.shivering-isles.com/talos-autoupdate
         operator: Exists
-  upgrade:
+  prepare:
     image: ghcr.io/siderolabs/talosctl
     envs:
       - name: NODE_IP
@@ -38,6 +33,7 @@ spec:
       - --nodes=$(NODE_IP)
       - upgrade
       - --image=$(TALOS_IMAGE):$(SYSTEM_UPGRADE_PLAN_LATEST_VERSION)
-      - --preserve=true
-      - --wait=false
-      - --reboot-mode=powercycle
+      - --stage
+  upgrade:
+    image: quay.io/fedora/fedora:41
+    command: ["touch", "/host/run/reboot-required"]
\ No newline at end of file
-- 
GitLab