diff --git a/clusters/prod/kustomization.yaml b/clusters/prod/kustomization.yaml index c7d7efc..3488bbf 100644 --- a/clusters/prod/kustomization.yaml +++ b/clusters/prod/kustomization.yaml @@ -185,9 +185,25 @@ patches: name: flux-system namespace: flux-system spec: - # TEMPORARY bootstrap source โ€” workstation container, NOT in any cluster. See the block - # above for the cutover to https://gitea.home.keithjackson.dev/... . Do not treat as final. - url: http://192.168.2.132:3000/Home-Network/home-network-k3s-impl.git + # CUTOVER DONE 2026-09-06 (operator direction: "move the repo to prod"). Prod now reconciles + # from PROD'S OWN in-cluster Gitea. The workstation bootstrap container + # (http://192.168.2.132:3000) is retired as prod's source โ€” it was a podman container on the + # operator's workstation holding a DHCP lease on WIFI, i.e. production's source of truth was a + # laptop. It is kept only as a recovery path (bootstrap/gitea/bootstrap-gitea.sh). + # + # THIS LINE IS SELF-REFERENTIAL AND THAT IS THE WHOLE DIFFICULTY. The root Kustomization + # renders ./clusters/prod, which contains this patch โ€” so a live `kubectl patch` of + # GitRepository.spec.url is REVERTED on the next reconcile unless the authored value moves + # too. The cutover therefore had to be: (1) push the repo to prod's Gitea, (2) fast-forward + # its `main` to the exact commit prod was already running so the source swap changed nothing + # else, (3) live-patch the url to open a window, (4) land THIS commit through that window so + # the authored value agrees. Dev hit the identical trap on 2026-09-05 + # (infra/PROD-PROVISIONING.md ยง10a "D0/D1 as executed"). + # + # Verified before the switch: a throwaway pod INSIDE prod resolved this host through + # in-cluster CoreDNS to the Gateway VIP and cloned over the public LE cert with no CA + # supplied. The workstation being able to reach it proves nothing about pod egress. + url: https://gitea.prod.home.keithjackson.dev/Home-Network/home-network-k3s-impl.git ref: branch: main - target: