RAILIANCE-WP-0015: Option A CNPG logical backup coverage healthy
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Has been cancelled

Materialize offsite Secret from OpenBao, deploy per-cluster CronJobs,
generalize multi-cluster logical backup + status health for Option A,
seed encrypted uploads and restore-drill evidence; workplan finished.
This commit is contained in:
tegwick 2026-07-22 18:00:48 +02:00
parent 374ebed349
commit 6635fdc976
11 changed files with 929 additions and 69 deletions

View file

@ -65,11 +65,19 @@ Check current posture:
make cnpg-backup-status
```
Operator-ready barman `ObjectStore` and `ScheduledBackup` templates live in
`manifests/cnpg-backup-readiness.yaml`. Apply only after platform supplies
object-store credentials and retention decisions. Phase 1 platform backup lane
may still use logical `pg_dump` for some clusters; see
`disaster-control/BackupPickupQueue.md` item 6.
**Option A (decided, RAILIANCE-WP-0015):** age-encrypted logical dumps →
Nextcloud WebDAV via CronJobs in `manifests/cnpg-option-a-backup.yaml`.
```bash
bao login -method=oidc -path=netkingdom role=railiance-backup-workload-kv-read
make cnpg-backup-offsite-secret-apply # Secret from OpenBao (no private key)
make cnpg-option-a-apply # CronJobs + RBAC
make cnpg-logical-backup # optional immediate workstation run
make cnpg-backup-status
```
Barman `ObjectStore` / CNPG `ScheduledBackup` remain deferred (Phase 2 stubs in
`manifests/cnpg-backup-readiness.yaml`).
## `vergabe-teilnahme` Gate
@ -81,9 +89,9 @@ Current posture (2026-07-12):
- **Phase 1 backup lane:** `make apps-pg-backup` uploads encrypted logical dumps
to the platform offsite lane (latest:
`apps-pg-vergabe_db-20260711T231430Z.dump.age`);
- **CNPG barman posture:** `make cnpg-backup-status` still reports degraded — no
`ScheduledBackup` on production clusters as of 2026-07-10; Phase 1 logical
lane satisfies the interim S5 gate per this handoff;
- **CNPG Option A posture:** `make cnpg-backup-status` reports Option A
CronJob + last-success coverage (not barman `ScheduledBackup`); see
RAILIANCE-WP-0015 for fleet rollout;
- **restore drill:** isolated restore with row-count gate 195/195 pass
(`docs/evidence/apps-pg-restore-drill-20260711T230725Z.json`);
- **S5 production-trust gate:** **satisfied for Phase 1** — backup + restore
@ -103,8 +111,8 @@ Remaining before full production-critical promotion (postPhase 1):
- `vergabe-teilnahme` migration smoke on restored database;
- health endpoint and HTTPS smoke checks after restore;
- representative tender-management workflow verification;
- CNPG `ScheduledBackup` wiring when platform supplies object-store credentials
(`manifests/cnpg-backup-readiness.yaml`);
- Option A unattended coverage for all four CNPG clusters
(`manifests/cnpg-option-a-backup.yaml`, RAILIANCE-WP-0015);
- any app media path remains disabled or has its own storage restore evidence.
## Forge Artifact Evidence