blumeops/docs
Erich Blume 0e70a1b524 Localize external-secrets container (native container.py build) (#367)
Knocks out the weekly "pick one non-local container and make it local" task by moving **external-secrets** off `ghcr.io` onto a locally-built image, under our own supply-chain control. Doubles as its overdue service review.

## What changed
- **`containers/external-secrets/container.py`** (new) — native Dagger build (the Dockerfile→container.py migration pattern). Clones the forge mirror at `v2.2.0` and builds the single `all_providers` static Go binary, faithful to upstream's `make build` (CGO off, no version ldflags upstream). ENTRYPOINT is `/bin/external-secrets` so the controller/webhook/cert-controller Deployments select their role via `args:` exactly as before.
- **`argocd/manifests/external-secrets/kustomization.yaml`** — image swapped to `registry.ops.eblu.me/blumeops/external-secrets:v2.2.0-2985007`. **Like-for-like (v2.2.0)**, not an upgrade.
- **`service-versions.yaml`** — marked reviewed (2026-06-04), noted the local build.

## Build
Built on the indri forge runner (run #579, ~4 min) → pushed to Zot. Image config verified: `Entrypoint=/bin/external-secrets`, `User=65534`, version label `v2.2.0`.

## Deployed from branch & verified
- All 3 pods (controller / webhook / cert-controller) rolled to the local image, `1/1 Running`
- Controller + webhook logs clean (no errors; webhook serving TLS)
- **End-to-end secret fetch proven:** force-synced `monitoring/grafana-admin` → `refreshTime` advanced to now, `Ready=True`
- All 10 ExternalSecrets cluster-wide remain `SecretSynced=True` — no collateral damage
- App `Healthy`

## Post-merge
`external-secrets` currently points at this branch (so `apps` reads OutOfSync — expected). After merge:
```
argocd app set external-secrets --revision main && argocd app sync external-secrets
```

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #367
2026-06-04 14:55:55 -07:00
..
changelog.d Localize external-secrets container (native container.py build) (#367) 2026-06-04 14:55:55 -07:00
explanation C0: black-hole /mirrors/* at Fly edge + name-and-shame scrapers 2026-06-01 20:52:20 -07:00
how-to C0: retire Todoist blumeops-tasks; point task discovery at heph 2026-06-03 21:32:10 -07:00
reference Recurring review sweep: 4 doc cards + nvidia-device-plugin v0.19.2 (#366) 2026-06-04 13:37:02 -07:00
tutorials C0: retire Todoist blumeops-tasks; point task discovery at heph 2026-06-03 21:32:10 -07:00
index.md C0: doc review — index.md, add ringtail to infra overview 2026-05-06 06:14:40 -07:00
quartz.config.ts Fix spider trap: disable SPA mode, remove index files, relax wiki-links (#290) 2026-03-09 11:59:43 -07:00
quartz.layout.ts Expose Forgejo publicly at forge.eblu.me (#278) 2026-03-03 08:40:41 -08:00