gobackup / gobackup/gobackup-operator
[Restore] gobackup-restore runner image (PostgreSQL + S3)
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 23
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Description
Part of #81.
Summary
gobackup's CLI is backup-only, so restore must be implemented from scratch. This issue delivers a standalone gobackup-restore container image that performs a full restore of a PostgreSQL backup stored in S3 — independently of the operator. It is the foundation the Restore CRD and integrity verification build on.
Scope
- New container image
gobackup-restore(own Dockerfile underbuild/), bundling thepostgresql-client(pg_restore/psql). - Entrypoint reads the same
gobackup.ymlSecret shape the backup path already produces, plus restore parameters (source selection, target DB, overwrite flag) via env/flags. - Pipeline: resolve artifact in S3 → download → decrypt → decompress →
pg_restore/psqlinto the target DB. - Reuse gobackup's
storage,compressor,encryptorGo packages for the download/decrypt/decompress half; only the DB-load step is new. - Artifact selection: latest / specific timestamp / explicit filename.
- Safe by default: refuse to overwrite a non-empty target unless
overwriteis set.
Out of scope (tracked separately)
- Restore CRD / controller → separate issue.
- Engines other than PostgreSQL, backends other than S3 → support-matrix issue.
- Integrity verification → verification issue.
Acceptance criteria
docker run gobackup-restore …restores a Postgres DB from an S3-stored (optionally gzip + encrypted) gobackup artifact into a target Postgres, verified by querying the restored data.- Runs against MinIO + Postgres in CI/e2e with no operator present.
- Fails fast with a clear error on: missing artifact, decryption failure, checksum mismatch, non-empty target without
overwrite.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing gobackup storage, compressor, and encryptor packages and the backup Secret shape referenced in the issue. Then inspect build/ and the backup path to define the standalone image and entrypoint, with MinIO + Postgres CI/e2e as the first validation target. Done means the image restores supported artifacts and fails clearly for each listed error condition.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go, postgresql
- Domain
- databases, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100