How debjotimallick/kube-db-backup works
kube-db-backup is a Kubernetes operator for database backup and restore. Users define connection and storage configuration, then request a one-shot or scheduled backup, or a restore from a Backup or raw S3 path. Reconcilers resolve engine metadata and create Jobs; engine containers perform database-specific work and communicate results through a shared contract, after which the operator updates resource status and retries eligible failures. The schedule reconciler also creates Backup resources and prunes history. Relationships for unsampled engine and storage behavior follow the README; implementation detail is limited to the excerpts provided.
Main entry points: backup_controller.go Backup reconciler · restore_controller.go Restore reconciler · entrypoint.sh Engine container · main.go Controller manager
Components 19
Kubernetes resources
- Database instance
api/v1alpha1/databaseinstance_types.go - Backup configuration
api/v1alpha1/backupconfig_types.go - Backup request
api/v1alpha1/backup_types.go - Backup schedule
api/v1alpha1/backupschedule_types.go - Restore request
api/v1alpha1/restore_types.go
Operator control plane
- Controller manager
cmd/main.go - Schedule reconciler
internal/controller/backupschedule_controller.go - Backup reconciler
internal/controller/backup_controller.go - Restore reconciler
internal/controller/restore_controller.go - Status helpers
internal/controller/helpers.go
Job execution
- Engine registry
pkg/engine/registry.go - Engine contract
pkg/engine/contract.go - Kubernetes Job
- Engine container
engines/postgres/entrypoint.sh
External systems
- Database
- S3-compatible storage
- Kubernetes Secrets
- Kubernetes API
Other components
- Operator user
Connections 33
- Operator user → Database instance: configures
README.md - Operator user → Backup configuration: configures
README.md - Operator user → Backup request: requests
README.md - Operator user → Backup schedule: schedules
README.md - Operator user → Restore request: requests
README.md - Controller manager → Backup reconciler: registers
cmd/main.go - Controller manager → Schedule reconciler: registers
cmd/main.go - Controller manager → Restore reconciler: registers
cmd/main.go - Schedule reconciler → Backup request: creates
internal/controller/backupschedule_controller.go - Schedule reconciler → Backup schedule: updates status
internal/controller/backupschedule_controller.go - Backup reconciler → Database instance: reads config
internal/controller/backup_controller.go - Backup reconciler → Backup configuration: reads config
internal/controller/backup_controller.go - Backup reconciler → Engine registry: looks up engine
internal/controller/backup_controller.go - Backup reconciler → Kubernetes Job: creates
internal/controller/backup_controller.go - Backup reconciler → Engine contract: uses result contract
README.md - Backup reconciler → Backup request: updates status
internal/controller/backup_controller.go - Restore reconciler → Database instance: reads target
internal/controller/restore_controller.go - Restore reconciler → Backup configuration: reads config
internal/controller/restore_controller.go - Restore reconciler → Backup request: reads source
internal/controller/restore_controller.go - Restore reconciler → Engine registry: looks up engine
internal/controller/restore_controller.go - Restore reconciler → Kubernetes Job: creates
internal/controller/restore_controller.go - Restore reconciler → Restore request: updates status
internal/controller/restore_controller.go - Backup reconciler → Status helpers: sets conditions
internal/controller/backup_controller.go - Restore reconciler → Status helpers: sets conditions
- Kubernetes Job → Engine container: runs
README.md - Engine registry → Engine container: selects image
README.md - Engine container → Engine contract: emits result
README.md - Engine container → Database: dumps or restores
README.md - Engine container → S3-compatible storage: uploads or reads
README.md - Kubernetes Job → Kubernetes Secrets: mounts credentials
README.md - Controller manager → Kubernetes API: runs controllers
README.md - Backup reconciler → Kubernetes API: observes Job
README.md - Restore reconciler → Kubernetes API: observes Job
README.md