diff --git a/docs/secrets-checklist.md b/docs/secrets-checklist.md index 4fabf10..b674b56 100644 --- a/docs/secrets-checklist.md +++ b/docs/secrets-checklist.md @@ -16,6 +16,8 @@ Follow this list top-to-bottom; each step unblocks the next. - [ ] 5. `GITEA_TOKEN` in each API repo's Actions Secrets — unblocks CI image push - [ ] 6. Gitea packages enabled + DNS record for `registry.leeworks.dev` — unblocks image push to registry - [ ] 7. Add api-company Flux source + kustomization to 0xWheatyz/Talos — unblocks all GitOps reconciliation +- [ ] 8. `gitea-registry` (zip-enrichment, holidays, air-quality, docs-site) — imagePullSecret for pods pulling from `registry.leeworks.dev` +- [ ] 9. `gitea-image-automation-token` (flux-system) — write-scoped token for Flux ImageUpdateAutomation to push image-tag commits --- @@ -162,6 +164,65 @@ Unblocks: Issue #2 (Flux reconciliation of all `flux/` manifests in this repo). 3 (grafana-admin) → Grafana login works 4 (gatus-slack-webhook) → Gatus alerting works 5 + 6 (GITEA_TOKEN + registry packages) → CI pushes images → API services deploy +8 (gitea-registry) → pods can pull images from registry.leeworks.dev → services start +9 (gitea-image-automation-token) → Flux ImageUpdateAutomation pushes tag-update commits ``` -Once all seven items are complete, the full stack (runner, registry, Prometheus, Grafana, Gatus, docs-site, three API services) reconciles automatically via FluxCD with no further manual steps. +Once all nine items are complete, the full stack (runner, registry, Prometheus, Grafana, Gatus, docs-site, three API services) reconciles automatically via FluxCD with no further manual steps. + +--- + +### 8. `gitea-registry` — imagePullSecret for API service namespaces + +| Field | Value | +|-----------|-------| +| Name | `gitea-registry` | +| Namespaces | `zip-enrichment`, `holidays`, `air-quality`, `docs-site` | +| Type | `kubernetes.io/dockerconfigjson` | +| Purpose | Allows pods to pull images from `registry.leeworks.dev` without ImagePullBackOff | +| Source | Gitea token with `read:packages` scope (can reuse the same token as step 1 if it has that scope) | +| Unblocks | Issues #58 (Phase 0 hard deploy blocker) and transitively Phase 3 service deploys | + +```bash +for NS in zip-enrichment holidays air-quality docs-site; do + kubectl create secret docker-registry gitea-registry \ + --namespace=$NS \ + --docker-server=registry.leeworks.dev \ + --docker-username=leeworks-agents \ + --docker-password= \ + --docker-email=agent@leeworks.dev +done +``` + +Verify: +```bash +kubectl get secret gitea-registry -n zip-enrichment -o jsonpath='{.type}' +# expected: kubernetes.io/dockerconfigjson +``` + +--- + +### 9. `gitea-image-automation-token` — Flux ImageUpdateAutomation write token + +| Field | Value | +|-----------|-------| +| Name | `gitea-image-automation-token` | +| Namespace | `flux-system` | +| Purpose | Allows Flux `ImageUpdateAutomation` to push image-tag update commits back to `leeworks-agents/api-company` | +| Source | Gitea token with **`write:repository`** scope (the existing `gitea-leeworks-agents-token` only has `read:repository` — create a separate token or verify scope) | +| Unblocks | Issue #57 (Flux ImageUpdateAutomation for api-company) | + +```bash +kubectl create secret generic gitea-image-automation-token \ + -n flux-system \ + --from-literal=username=leeworks-agents \ + --from-literal=password= +``` + +Verify after creation: +```bash +flux get imageupdateautomations -n flux-system +# Expected: api-company shows READY=True +``` + +> **Note:** If you create a new token with `write:repository` scope, keep the existing `gitea-leeworks-agents-token` for read-only Flux GitRepository pulls and use this new secret exclusively for `ImageUpdateAutomation`. diff --git a/flux/image-automation/imageupdateautomation.yaml b/flux/image-automation/imageupdateautomation.yaml index 332cd2d..9b07516 100644 --- a/flux/image-automation/imageupdateautomation.yaml +++ b/flux/image-automation/imageupdateautomation.yaml @@ -32,6 +32,8 @@ spec: chore(image): update {{range .Updated.Images}}{{.Repository}}:{{.NewTag}} {{end}} push: branch: main + secretRef: + name: gitea-image-automation-token # must pre-exist in flux-system ns — see docs/secrets-checklist.md item 9 update: path: ./flux strategy: Setters