Backup and Recovery

Overview

Backups protect state that GitOps cannot recreate. Git restores manifests; it does not restore PostgreSQL rows, Redis persistence, MinIO objects, Elasticsearch indices, or local-path PersistentVolume data.

Layer Tool Protects
Kubernetes resources Velero Namespaces, resources, and supported volume snapshots
PostgreSQL CloudNativePG backup Base backups and WAL for point-in-time recovery
Object data MinIO replication or mc mirror Buckets and objects
Search data Elasticsearch snapshots Indices and cluster metadata
Cluster bootstrap Git plus encrypted secret backup Argo CD applications and configuration

Redis used only as a cache normally does not need backup. Kafka or Redpanda requires a separate retention and disaster-recovery decision; copying a live data directory is not a safe backup strategy.

Storage Rule

Send backups to object storage outside the VPS and preferably outside its provider. MinIO running on the same node is a working S3 endpoint, not disaster recovery.

Verification

velero backup get
velero backup describe <BACKUP_NAME> --details
kubectl get scheduledbackup,backup -A

Schedule restore drills into a new namespace or temporary cluster. Record recovery point objective (acceptable data loss) and recovery time objective (acceptable downtime); a backup is useful only if it can be restored within both targets.