Part of #11804, step 2 (docs/OPERATING.md, "The vxrail without a control plane"). Needs the owner's go and a quiet hour; an agent writes the probe, a person runs the window.
Before: the standby reconcile and Flux no longer own the forge Deployment's replicas (#8948), or they bring the pod back and two processes write one SQLite file. Checked by scaling to 0 and watching for 5 minutes.
Done:
[ ] The cutover, as docs/OPERATING.md writes it: kubectl -n forge scale deploy/forge --replicas=0 and wait for the pod to be gone; bind-mount the PVC's local-path directory at /var/lib/forge; check out the image's commit at /opt/forge; systemctl enable --now forge, then cloudflared-forge; scale standby/cloudflared-forge-home and standby/cloudflared to 0.
[ ] Probed and pasted here: /healthz answers as the same version through the public address, a person signs in, git over ssh answers on the vxrail's :2222, an app wakes. The seconds dark between scale-to-zero and the first 200 are measured.
[ ] FOOTING (src/system/footing.ts): the pod row says the systemd unit; the tunnel rows say the host's connector; the k3s API row says the forge no longer needs it.
Rollback, one block: systemctl stop cloudflared-forge forge; scale deploy/forge to 1 and the two tunnels back; the pod mounts the same directory, so nothing is copied back. It needs the k3s API on pg-grand, so this step happens while pg-grand runs.
Part of #11804, step 2 (docs/OPERATING.md, "The vxrail without a control plane"). Needs the owner's go and a quiet hour; an agent writes the probe, a person runs the window.
Before: the standby reconcile and Flux no longer own the forge Deployment's replicas (#8948), or they bring the pod back and two processes write one SQLite file. Checked by scaling to 0 and watching for 5 minutes.
Done:
kubectl -n forge scale deploy/forge --replicas=0and wait for the pod to be gone; bind-mount the PVC's local-path directory at/var/lib/forge; check out the image's commit at/opt/forge;systemctl enable --now forge, thencloudflared-forge; scalestandby/cloudflared-forge-homeandstandby/cloudflaredto 0./healthzanswers as the same version through the public address, a person signs in, git over ssh answers on the vxrail's :2222, an app wakes. The seconds dark between scale-to-zero and the first 200 are measured.FOOTING(src/system/footing.ts): the pod row says the systemd unit; the tunnel rows say the host's connector; the k3s API row says the forge no longer needs it.Rollback, one block:
systemctl stop cloudflared-forge forge; scaledeploy/forgeto 1 and the two tunnels back; the pod mounts the same directory, so nothing is copied back. It needs the k3s API on pg-grand, so this step happens while pg-grand runs.Files: docs/OPERATING.md, src/system/footing.ts, test/footing.test.ts