Files
homelab/kubernetes/apps
k.rennerandClaude Opus 4.7 2512481709
ci/woodpecker/manual/migrate-audiobookshelf Pipeline failed
ci/woodpecker/manual/migrate-authentik-db Pipeline failed
ci/woodpecker/manual/migrate-paperless Pipeline failed
feat(k8s): symmetric bootstrap-restore via CNPG Barman + Velero
Every cluster bootstrap now restores from the latest backup in Garage;
migration becomes a one-off seed that writes to the same paths the live
cluster uses.

DB path (ak-pg, pprl-pg):
- Cluster.bootstrap switched from initdb to recovery, reading the live
  Barman ObjectStore via externalClusters.
- migrate-{authentik-db,paperless} pipelines stand up an ephemeral
  Postgres, pg_restore the legacy dump into it, purge the Barman path,
  then barman-cloud-backup against that instance so the seed matches
  the format the live cluster writes.
- Obsolete post-bootstrap restore-job manifests removed.

App PVC path (paperless, audiobookshelf):
- defaultSnapshotMoveData=true on the Velero HelmRelease so CSI snapshot
  contents are moved to Garage (survive Ceph loss).
- Daily Velero Schedules for paperless, audiobookshelf, authentik.
- velero-bootstrap-restore Kustomization: Job creates one Restore per
  Schedule from latest Backup at rebuild; skips schedules with zero
  Backups so first-ever bootstrap is a no-op.
- Transitional *-seed Kustomizations pull legacy tarballs into fresh
  PVCs on first bootstrap (sentinel-idempotent). Velero has no
  external-producer API so this bridge is unavoidable during migration;
  retire once Velero has a verified backup.

Requires Woodpecker secrets garage_cnpg_key_id + garage_cnpg_secret_key
(cnpg-key.creds from /volume1/docker/garage/config/keys/ on nas-1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 20:55:22 +02:00
..