upgrade taskfile in preparation for talos v1.9.0

This commit is contained in:
Joseph Hanson 2024-12-21 22:13:00 -06:00
parent 9b8f2722a4
commit 04fb020567
2 changed files with 86 additions and 76 deletions

View file

@ -55,94 +55,99 @@ tasks:
generate-clusterconfig:
desc: Generate clusterconfig for Talos
preconditions:
- which test talhelper
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talsecret.sops.yaml
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
requires:
vars:
- K8S_CLUSTER
cmds:
- talhelper genconfig
--env-file {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talenv.sops.yaml
--secret-file {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talsecret.sops.yaml
--config-file {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
--out-dir {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig
requires:
vars:
- K8S_CLUSTER
preconditions:
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talenv.sops.yaml
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talsecret.sops.yaml
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
upgrade:
desc: Upgrade Talos version for a node
vars:
TALOS_VERSION:
sh: |
yq -r ".talosVersion" {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
TALOS_IMAGE:
sh: |
talhelper genurl installer \
--env-file {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talenv.sops.yaml \
--config-file {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml \
| grep {{.NODE}} \
| awk '{split($0,u," "); print u[2]}'
cmds:
- talosctl upgrade -n {{.NODE}} --image {{.TALOS_IMAGE }}
requires:
vars:
- K8S_CLUSTER
- NODE
preconditions:
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talenv.sops.yaml
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
- msg: "Talos image could not be determined for node={{.NODE}}"
sh: 'test -n "{{.TALOS_IMAGE}}"'
upgrade-k8s:
desc: Upgrade Kubernetes version for a Talos cluster
silent: false
vars:
KUBERNETES_VERSION:
sh: |
yq -r ".kubernetesVersion" {{.K8S_CLUSTER_DIR}}/bootstrap/talos/talconfig.yaml
TALOS_CONTROLLER:
sh: talosctl config info --output json | jq --raw-output '.endpoints[]' | shuf -n 1
cmds:
- until kubectl wait --timeout=5m --for=condition=Complete jobs --all --all-namespaces; do sleep 10; done
- talosctl upgrade-k8s -n {{.TALOS_CONTROLLER}} --to {{.KUBERNETES_VERSION}}
requires:
vars:
- K8S_CLUSTER
preconditions:
- talosctl config info &>/dev/null
- talosctl --nodes {{.TALOS_CONTROLLER}} get machineconfig &>/dev/null
apply-clusterconfig:
desc: Apply clusterconfig for a Talos cluster
vars:
CLUSTERCONFIG_FILES:
sh: find {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig -type f -name '*.yaml' -printf '%f\n'
sh: ls {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig/*.yaml
preconditions:
- which ls
- test -f "${TALOSCONFIG}"
requires:
vars:
- K8S_CLUSTER
cmds:
- for:
var: CLUSTERCONFIG_FILES
task: _apply-machineconfig
vars:
filename: "{{.ITEM}}"
hostname: |-
{{ trimPrefix (printf "%s-" .K8S_CLUSTER) .ITEM | trimSuffix ".yaml" }}
FILENAME: "{{.ITEM}}"
HOSTNAME: |-
{{ trimPrefix (printf "%s-" .K8S_CLUSTER) (base .ITEM) | trimSuffix ".yaml" }}
DRY_RUN: "{{ .DRY_RUN }}"
INSECURE: "{{ .INSECURE }}"
apply-node:
desc: Apply Talos config to a node [NODE=required]
preconditions:
- which talosctl
- test -f "${TALOSCONFIG}"
- talosctl --nodes {{.NODE}} get machineconfig
requires:
vars:
- K8S_CLUSTER
- NODE
vars:
FILE:
sh: ls {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig/{{.K8S_CLUSTER}}-{{.NODE}}*.yaml
cmds:
- task: _apply-machineconfig
vars:
FILENAME: "{{.FILE}}"
HOSTNAME: "{{.NODE}}"
- talosctl --nodes {{.NODE}} health --wait-timeout=10m --server=false
upgrade-node:
desc: Upgrade Talos on a single node [NODE=required]
preconditions:
- which talosctl
- test -f "${TALOSCONFIG}"
- talosctl --nodes {{.NODE}} get machineconfig
requires:
vars:
- K8S_CLUSTER
- NODE
vars:
FILE:
sh: ls {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig/{{.K8S_CLUSTER}}-{{.NODE}}*.yaml
TALOS_IMAGE:
sh: yq '.machine.install.image' < "{{.FILE}}"
cmds:
- echo "Upgrading Talos on node {{.NODE}}"
- talosctl --nodes {{.NODE}} upgrade --image="{{.TALOS_IMAGE}}" --timeout=10m
- talosctl --nodes {{.NODE}} health --wait-timeout=10m --server=false
_apply-machineconfig:
internal: true
desc: Apply a single Talos machineConfig to a Talos node
cmds:
- talosctl apply-config
--nodes "{{.hostname}}"
--file "{{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig/{{.filename}}"
{{ if eq "true" .DRY_RUN }}--dry-run{{ end }}
vars:
MODE: '{{.MODE | default "auto"}}'
preconditions:
- which talosctl
- test -f "{{.FILENAME}}"
requires:
vars:
- K8S_CLUSTER
- hostname
- filename
preconditions:
- test -f {{.K8S_CLUSTER_DIR}}/bootstrap/talos/clusterconfig/{{.filename}}
- HOSTNAME
- FILENAME
cmds:
- talosctl apply-config
--nodes "{{.HOSTNAME}}"
--file "{{.FILENAME}}"
--mode="{{.MODE}}"
{{ if eq "true" .INSECURE }}--insecure{{ end }}
{{ if eq "true" .DRY_RUN }}--dry-run{{ end }}

View file

@ -20,7 +20,7 @@ nodes:
ipAddress: 10.1.1.62
controlPlane: true
installDiskSelector:
wwid: naa.55cd2e4150654449
busPath: /pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/
networkInterfaces:
- interface: eno1
dhcp: true
@ -28,15 +28,16 @@ nodes:
customization:
systemExtensions:
officialExtensions:
- siderolabs/i915
- siderolabs/intel-ucode
- siderolabs/i915-ucode
- siderolabs/glibc
- hostname: frodo
disableSearchDomain: true
ipAddress: 10.1.1.63
controlPlane: true
installDiskSelector:
wwid: naa.55cd2e4150650b54
busPath: /pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/
networkInterfaces:
- interface: eno1
dhcp: true
@ -44,15 +45,16 @@ nodes:
customization:
systemExtensions:
officialExtensions:
- siderolabs/i915
- siderolabs/intel-ucode
- siderolabs/i915-ucode
- siderolabs/glibc
- hostname: sam
disableSearchDomain: true
ipAddress: 10.1.1.64
controlPlane: true
installDiskSelector:
wwid: naa.55cd2e41521a8480
busPath: /pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/
networkInterfaces:
- interface: eno1
dhcp: true
@ -60,15 +62,16 @@ nodes:
customization:
systemExtensions:
officialExtensions:
- siderolabs/i915
- siderolabs/intel-ucode
- siderolabs/i915-ucode
- siderolabs/glibc
- hostname: pippin
disableSearchDomain: true
ipAddress: 10.1.1.65
controlPlane: false
installDiskSelector:
wwid: naa.55cd2e4150155dbf
busPath: /pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/
networkInterfaces:
- interface: eno1
dhcp: true
@ -76,8 +79,9 @@ nodes:
customization:
systemExtensions:
officialExtensions:
- siderolabs/i915
- siderolabs/intel-ucode
- siderolabs/i915-ucode
- siderolabs/glibc
- hostname: merry
disableSearchDomain: true
@ -103,15 +107,15 @@ nodes:
systemExtensions:
officialExtensions:
- siderolabs/amd-ucode
- siderolabs/nonfree-kmod-nvidia-production
- siderolabs/nvidia-container-toolkit-production
- siderolabs/nvidia-open-gpu-kernel-modules-production
- siderolabs/glibc
- hostname: rosie
disableSearchDomain: true
ipAddress: 10.1.1.67
controlPlane: false
installDiskSelector:
wwid: naa.55cd2e4150a6183a
busPath: /pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/
networkInterfaces:
- interface: eno1
dhcp: true
@ -119,8 +123,9 @@ nodes:
customization:
systemExtensions:
officialExtensions:
- siderolabs/i915
- siderolabs/intel-ucode
- siderolabs/i915-ucode
- siderolabs/glibc
worker:
schematic: