T-0.1 Flux GitOps layout + dev/prod overlays + platform component skeletons (R-GITOPS-01/03, R-ENV-02, R-PLAT-01)

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
jakman85andClaude Opus 4.8 committed 2026-08-16 00:08:31 -05:00
1 parent bd8de96456
commit af4f6c07ae
75 files changed
+1638 -4

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
# platform/image-automation
**Flux image-update-automation** — hands-off container image tag advances driven by declared policy.
- **Governing ADR:** [ADR-0009 — Automated updates: Flux image automation + Renovate](../../../home-network-k3s/decisions/adr-0009-automated-image-updates.md)
- **Spec:** [docs/11 — Automated Updates](../../../home-network-k3s/docs/11-automated-updates.md),
[docs/05 §Automated updates interplay](../../../home-network-k3s/docs/05-gitops-and-delivery.md)
- **Serves:** R-UPD-02 (with R-UPD-01/03 safety rails)
- **Owner:** WS-UPDATE (mechanism), WS-GITOPS (policy rendering from ServiceDefinition)
## What this stub is
The **cluster-wide** `ImageUpdateAutomation` that scans registries and **commits the resolved version
back to git** (machine-authored, auditable — ADR-0009). No human or AI authors a tag bump (R-UPD-02).
## Scope boundary (contract)
This dir holds **only** the cluster-wide automation + git write-back settings. **Per-service**
`ImageRepository` / `ImagePolicy` (semver range / stable channel) are rendered from each
ServiceDefinition's `update` block by WS-GITOPS/WS-UPDATE and live with `apps/` — the "Update policy
contract" in `roadmap/workstreams.md`. **Helm chart / manifest bumps** are Renovate's job (separate),
not this controller's.
## TODO (later phases — Phase 4)
- Confirm write-back strategy (direct commit to tracked branch vs. Renovate-style PRs).
- Wire the safety rails that are **acceptance gates** (ADR-0009): stable-only, health-gated rollout,
auto-rollback on failed health, `pin` escape hatch, alert on update failure.
- Requires the Flux **image-reflector** + **image-automation** controllers (Flux bootstrap component).
@@ -0,0 +1,39 @@
---
# Flux image-update-automation — the CLUSTER-WIDE write-back engine for hands-off image tag advances
# (ADR-0009, R-UPD-02). It scans registries per each service's ImagePolicy and commits the resolved
# version back to git — no human/AI authors the bump. Phase 0 STUB.
#
# SCOPE: this dir holds ONLY the cluster-wide ImageUpdateAutomation + git write-back settings.
# Per-service `ImageRepository`/`ImagePolicy` are rendered from each ServiceDefinition's `update`
# block (WS-GITOPS/WS-UPDATE) and live with apps/ — NOT here. (Contract: roadmap/workstreams.md
# "Update policy contract".)
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageUpdateAutomation
metadata:
name: flux-image-automation
namespace: flux-system
spec:
interval: 30m # the "schedule" on which stable versions are picked up (R-UPD-02)
sourceRef:
kind: GitRepository
name: flux-system
git:
checkout:
ref:
branch: main # TODO(WS-UPDATE): confirm write-back branch (may open PRs instead)
commit:
author:
name: fluxcdbot # machine author — the auditable, intended write-back (ADR-0009)
email: [email protected]
messageTemplate: |
chore(images): automated update
Machine-authored image tag advance per ImagePolicy (R-UPD-02, ADR-0009).
push:
branch: main
update:
strategy: Setters # image-automation setter markers in per-service manifests (apps/)
path: ./apps
# TODO(WS-UPDATE, Phase 4): safety rails are acceptance gates (ADR-0009) — stable-only, health-gated
# rollout, auto-rollback on failed health, pin escape hatch, alert on update failure. Prove a test
# service auto-advances with no human/AI edit; a bad update auto-rolls-back + alerts (R-UPD-01/02/03).
@@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- image-update-automation.yaml