Skip to content

feat: pelican native backups → garage.kian.sh (LB + s3 driver)#258

Merged
TechGardenCode merged 2 commits into
mainfrom
pelican-backups-s3
Jul 13, 2026
Merged

feat: pelican native backups → garage.kian.sh (LB + s3 driver)#258
TechGardenCode merged 2 commits into
mainfrom
pelican-backups-s3

Conversation

@TechGardenCode

@TechGardenCode TechGardenCode commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Phase 1 of the pelican-hardening plan. Two commits:

1. garage-s3-lb LoadBalancer (ns garage, 1276-prod)

Exposes Garage S3 port 3900 on a MetalLB IP with internal external-dns annotations publishing garage.kian.sh (RFC2136 → Technitium, internal-only). Mirrors the pelican-internal annotation contract. Additive — no change to existing garage-s3 ClusterIP, storage, or configmap.

2. Pelican S3 backup driver (ns pelican, 1276-prod)

beta35 config/backups.php is env-driven (verified against the live container, not assumed). Wires:

  • envs.pelican: APP_BACKUP_DRIVER=s3, AWS_DEFAULT_REGION=garage, AWS_BACKUPS_BUCKET=pelican-backups, AWS_ENDPOINT=http://garage.kian.sh:3900, AWS_USE_PATH_STYLE_ENDPOINT=true.
  • secretEnvs.pelican: AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY ← two new keys in the pelican ExternalSecret, backed by BWS. Credentials are a scoped RW key on pelican-backups only (GK730fe46da21864df4085b239, owner=false) — the public panel cannot touch the cnpg-pelican DB-backup bucket.

Var-name correction: the plan guessed AWS_BACKUPS_USE_PATH_STYLE_ENDPOINT; live config reads AWS_USE_PATH_STYLE_ENDPOINT — used the correct name.

Safety

  • Both are prod-only apps with no dev pairPROMOTE_OVERRIDE=1 in each commit body (expected per plan README).
  • kustomize build passes for both apps; backup env + secretKeyRefs render against the pelican secret.

After merge (owner-gated) → Phase 1 GATE

  1. kubectl -n garage get svc garage-s3-lb IP == dig +short garage.kian.sh @<internal-dns>.
  2. UDM VLAN 80 → LB:3900 allow (manual; runbook to wiki).
  3. nc -vz garage.kian.sh 3900 from a wings host.
  4. Panel: create backup on a running server → object appears in pelican-backups; restore round-trips.

Do not merge without owner approval.

🤖 Generated with Claude Code

Adds garage-s3-lb LoadBalancer (MetalLB) with internal external-dns
annotations publishing garage.kian.sh, so Wings hosts on VLAN 80 can
reach Garage S3 for native in-panel Pelican backups (path-style,
endpoint http://garage.kian.sh:3900, bucket pelican-backups).

PROMOTE_OVERRIDE=1 (garage is prod-only, no dev pair)
beta35 config/backups.php is env-driven (verify-live #3). Adds
APP_BACKUP_DRIVER=s3 + AWS_* endpoint/region/bucket/path-style vars,
plus AWS_ACCESS_KEY_ID/SECRET from the pelican-backups-key scoped RW
to pelican-backups only (via ExternalSecret -> pelican secret).

Var names verified against live beta35 config: path-style flag is
AWS_USE_PATH_STYLE_ENDPOINT (not the _BACKUPS_ variant the plan guessed).

PROMOTE_OVERRIDE=1 (pelican is prod-only, no dev pair)
@TechGardenCode TechGardenCode changed the title feat(garage): expose S3 as garage.kian.sh LB for pelican backups feat: pelican native backups → garage.kian.sh (LB + s3 driver) Jul 13, 2026
@TechGardenCode TechGardenCode merged commit 64a2dca into main Jul 13, 2026
6 checks passed
@TechGardenCode TechGardenCode deleted the pelican-backups-s3 branch July 13, 2026 23:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant