vps cluster docs

Upgrade policy

Partly implemented (updated 2026-09-28). Helm charts are pinned (verified live); container images are pinned only for the apps that carry argocd-image-updater digest tracking. OS patching still relies on unattended-upgrades with no auto-reboot. See §2.3 and §17 S11 of the architecture review (kept private, not published).

Target cadence

Component Cadence Mechanism
OS security patches Automatic, no auto-reboot unattended-upgrades (already on); a monthly reboot window is scheduled by the owner, alerted on via reboot-required
k3s minor version Quarterly Ansible, with a Hetzner snapshot + etcd snapshot taken first; rollback = restore the previous /etc/rancher/k3s/config.yaml + restart, or full snapshot restore
Helm charts / container images Pinned, bumped by PR No floating tags (:latest, 7.*, v1.*) reach prod outside an explicit version bump — see the known gap in the current state below
ArgoCD v2.14 → v3.x is its own tracked change Snapshot first, treated as a standalone migration, not bundled with routine maintenance

Current state (verified live 2026-09-28)

Charts — done. All four Helm chart sources are pinned to explicit versions (cert-manager was removed 2026-09-28, so it is no longer among them):

Application Chart Pinned
argocd argo-cd 7.9.1 (ArgoCD v2.14.x)
argocd-image-updater argocd-image-updater 0.14.0
keda keda 2.21.0
keda-add-ons-http keda-add-ons-http 0.16.0

Images — done, Blocker 1 resolved.

This already broke once: MinIO’s :latest tag stopped being pullable upstream, see storage.md and disaster-recovery.md.