Runbook — Backup
Backups protect PostgreSQL, which is the source of record for tenant data, consent state, audit logs, and outbox rows. Redis and NATS are operational dependencies, but durable recovery starts from PostgreSQL plus replay/reconciliation.
Preconditions
- Backup destination bucket and credentials are configured in the Helm values.
kubectlaccess to the target namespace.- Encryption keys and retention policy are approved by the customer environment.
Steps
- Check the scheduled backup job:bash
kubectl -n finnest-prod get cronjob | grep backup - Trigger an on-demand backup before high-risk maintenance:bash
kubectl -n finnest-prod create job --from=cronjob/finnest-postgres-backup backup-manual-$(date +%Y%m%d%H%M) - Watch completion:bash
kubectl -n finnest-prod get jobs -w - Confirm the backup object landed in the configured bucket and retention class.
Verification
- Backup job exits successfully.
- The object exists in the backup bucket with the expected timestamp.
- Restore metadata includes database name, chart version, and source namespace.
- At least one restore drill has succeeded within the current quarter.