Hive
feat(infra): cut backups over to the Barman Cloud Plugin + restore-drill docs (all envs)
GitHub issue · Closed
What this does
Cuts every CNPG cluster’s backups over from the in-tree barmanObjectStore to the Barman Cloud Plugin, and ships the matching recovery docs in the same change:
- Cutover — flips
…backup.plugin.enabledtotruein all envs at once:tuistmain cluster (values-managed-{staging,canary,production}.yaml) andtuist-ops(values.yaml). - Restore-drill docs — updates
infra/cnpg/README.mdso the restore drill recovers through the plugin (bootstrap.recovery+externalClusters[].plugin→ the renderedObjectStorebybarmanObjectName,serverNamepinned to the cluster name), with the in-tree shape kept for the transition. This is pepicrft’s gating follow-up from the #11544 review — folding it in here means the recovery docs land exactly when the flip happens (closes #11563). - Minor: corrects the plugin deployment name in the README (
platform-plugin-barman-cloud, release-prefixed as a subchart).
The plugin itself is already installed fleet-wide and idle (#11544, confirmed platform-plugin-barman-cloud Running 1/1 on canary + prod). This is the flip that puts it to work.
What merging does
Each cluster’s Cluster spec swaps .spec.backup.barmanObjectStore for .spec.plugins (+ an ObjectStore CR, ScheduledBackup method: plugin). That’s an atomic Cluster change, so it triggers a rolling update + primary switchover per cluster — same shape as an operator bump. Merge in a low-traffic window. The production-deployment cascade flips canary first, runs acceptance tests, then production, so it’s naturally canary-gated despite being one PR (staging flips via its own deploy path).
Continuity & safety
serverNamestays pinned to the cluster name (the in-tree default) and the bucket/destinationPathis unchanged, so the plugin continues the same archive prefix — no new base backup, no orphaned PITR. Verified byhelm template: production rendersplugins(serverNametuist-tuist-pg, ObjectStoretuist-tuist-pg-backup-store) +method: plugin, nobarmanObjectStore.- Reversible: flip back to
falseand the in-tree path resumes (still supported on 1.29). - Fallback: the in-tree backups taken up to the cutover remain in the same bucket.
After merge (verify)
- Watch canary roll, then prod — confirm instances converge with a primary elected.
- Confirm WAL archiving continues on the plugin path: primary pod logs show
Archived WAL fileto the sames3://…/<serverName>path, no persistent errors,pg_walnot piling. - Run the restore-validation drill (now documented for the plugin) from a plugin-written backup.
- Repoint backup observability: metrics rename
cnpg_collector_*->barman_cloud_cloudnative_pg_io_*.
🤖 Generated with Claude Code
Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.
Start a Flight and preserve its objective, outcome, and session here.
No GitHub comments yet.