Upgrades¶
Procedures for upgrading Talos Linux, Kubernetes, and applications in the cluster.
Talos Linux Upgrades¶
Talos upgrades are performed per-architecture using factory images that include the appropriate system extensions. The cluster currently runs Talos v1.12.4.
Architecture-Specific Images¶
The justfile defines four factory images, each tailored to a specific hardware type:
| Variable | Architecture | Nodes | Extensions |
|---|---|---|---|
cp_image | ARM64 | 192.168.0.201-202 | Base Pi 4 extensions |
cp_amd_image | AMD64 | 192.168.0.203 | AMD extensions |
worker_intel_image | AMD64 | 192.168.0.204 | Intel GPU extensions |
worker_rpi_image | ARM64 | 192.168.0.211-213 | RPi PoE hat extensions |
Pre-Upgrade Checklist¶
Before upgrading Talos:
- Verify cluster health:
talosctl health - Check etcd membership:
talosctl etcd members --nodes 192.168.0.201 - Back up etcd:
talosctl etcd snapshot etcd-backup.snapshot --nodes 192.168.0.201 - Review the Talos release notes for breaking changes
- Update the factory image IDs if extensions have changed:
just image-id - Update the image variables in the justfile
Upgrade Procedure¶
Sequential Upgrades
All upgrade recipes process nodes one at a time with --wait and --preserve. Never upgrade all nodes simultaneously.
Step 1: Upgrade Control Plane Nodes¶
Upgrade ARM-based control plane nodes first:
Then upgrade AMD control plane node(s):
Each node upgrade:
- Downloads the new Talos image
- Stages the upgrade
- Reboots the node
- Waits for the node to come back with the new version
- Proceeds to the next node
Step 2: Upgrade Worker Nodes¶
Upgrade Intel/AMD workers:
Upgrade Raspberry Pi workers:
Step 3: Verify¶
The --preserve Flag¶
All upgrade commands use --preserve, which retains the node's ephemeral partition data across the upgrade. This means:
- Container images are preserved (faster restart)
- Local PVs are retained
- The node rejoins the cluster faster
When NOT to Preserve
Omit --preserve only when you want a clean slate (e.g., after major version upgrades that require a fresh state).
Updating Factory Images¶
When Talos releases a new version or you change system extensions:
-
Update extension files in
pitower/talos/extensions/(e.g.,amd.yaml,intel.yaml,rpi-poe.yaml) -
Get new schematic IDs:
-
Update the image variables at the top of the justfile with the new schematic IDs and version tag
-
Proceed with the upgrade
Kubernetes Version Upgrades¶
Kubernetes version is managed by Talos. When upgrading Talos, check whether the new Talos release includes a Kubernetes version bump.
Check Current Kubernetes Version¶
Upgrade Kubernetes¶
If you need to upgrade Kubernetes independently of Talos:
Talos-Managed Kubernetes
Talos manages the Kubernetes control plane components (API server, controller manager, scheduler, etcd). A Talos upgrade often includes a Kubernetes version bump. Check the Talos release notes for the bundled Kubernetes version.
Post-Upgrade Verification¶
Application Upgrades¶
Application upgrades are handled automatically by Renovate and deployed via ArgoCD.
Renovate Workflow¶
flowchart LR
Renovate[Renovate Bot] -->|Creates PR| GitHub[GitHub]
GitHub -->|Auto-merge<br/>digest/patch| Main[main branch]
GitHub -->|Manual review<br/>minor/major| Review[Review]
Review -->|Merge| Main
Main -->|Webhook| ArgoCD[ArgoCD]
ArgoCD -->|Sync| Cluster[Cluster] Auto-Merge Rules¶
Renovate automatically merges certain update types:
| Update Type | Auto-Merge |
|---|---|
| Docker digest updates | Yes |
| Docker patch versions | Yes |
| Docker pin/pinDigest | Yes |
| Helm patch versions | Yes |
| Helm digest/pin | Yes |
| KPS minor/patch | Yes |
| GitHub Actions digest/patch | Yes |
| Docker minor versions | No (manual review) |
| Docker major versions | No (manual review) |
| Helm minor versions | No (manual review) |
Manual Application Upgrade¶
To manually upgrade an application:
-
Update the image tag or chart version in the app's
values.yamlorkustomization.yaml: -
Commit and push to
main -
ArgoCD will automatically detect the change and sync
Helm Chart Upgrades¶
For bjw-s app-template chart upgrades:
- Check the release notes for breaking changes
- Update the
versionfield in allkustomization.yamlfiles -
Test locally:
-
Push to
mainfor ArgoCD to pick up
Upgrade Order of Operations¶
For a full stack upgrade, follow this order:
- Talos Linux -- Foundation must be upgraded first
- Kubernetes -- Usually bundled with Talos
- CNI (Cilium) -- Network layer before workloads
- Storage (Rook Ceph, OpenEBS) -- Storage layer before workloads
- Core Infrastructure -- cert-manager, external-secrets, ArgoCD
- Applications -- Workloads last
Never Skip Major Versions
Always upgrade incrementally. Do not skip major versions of Talos, Kubernetes, or critical infrastructure components.
Rollback Procedures¶
Talos Rollback¶
Talos keeps the previous version available. If an upgrade fails:
Application Rollback¶
Use ArgoCD to roll back to a previous sync:
Or revert the Git commit:
ArgoCD will automatically sync the reverted state.