fix(cnpg): Skip empty-WAL-archive pre-check on bootstrap.recovery
ci/woodpecker/manual/rebuild-k8s Pipeline failed

The barman-cloud plugin v0.12.0 pre-check fails with "Expected empty
archive" when bootstrap.recovery points at a pre-populated archive —
it invokes barman-cloud-check-wal-archive without a --timeline hint,
so any existing WAL segments trip it.

This contradicts the symmetric-restore design: producer==consumer,
seed + live backups share one path, and recovery must succeed against
whatever is already there (latest backup, else migration seed).

The cnpg.io/skipEmptyWalArchiveCheck=enabled annotation on the Cluster
metadata disables the pre-check while leaving the actual restore path
intact. Applied to ak-pg and pprl-pg. Velero follows the same pattern
naturally (restore picks latest backup; tarball seed fills the gap
when the Velero bucket is empty).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-21 09:41:53 +02:00
co-authored by Claude Opus 4.7
parent 5a44c87561
commit ab0aa6eddf
2 changed files with 14 additions and 0 deletions
@@ -3,6 +3,14 @@ kind: Cluster
metadata:
name: ak-pg
namespace: authentik
annotations:
# Archive is pre-populated by the migration seed (base + WAL) and,
# on later reboots, by this cluster's own continuous archiving. The
# plugin's pre-recovery "Expected empty archive" check conflicts
# with the producer==consumer invariant of the symmetric-restore
# design, so skip it. bootstrap.recovery still reads latest backup
# from the archive; if none, it recovers the migration seed.
cnpg.io/skipEmptyWalArchiveCheck: "enabled"
spec:
instances: 2
imageName: ghcr.io/cloudnative-pg/postgresql:16
@@ -3,6 +3,12 @@ kind: Cluster
metadata:
name: pprl-pg
namespace: paperless
annotations:
# See authentik-db/postgres.yaml — same rationale: skip the
# plugin's pre-recovery "Expected empty archive" check so
# bootstrap.recovery works against a pre-populated archive
# (migration seed or later live backups).
cnpg.io/skipEmptyWalArchiveCheck: "enabled"
spec:
instances: 2
imageName: ghcr.io/cloudnative-pg/postgresql:16