stack-orchestrator/stack_orchestrator
Prathamesh Musale a6d54c7bf8 feat(k8s): manage Caddy ingress image lifecycle via spec (so-p3p)
The Caddy ingress image was hardcoded in the component manifest and
had no update path shy of cluster recreate or manual kubectl patch.
That forced woodburn to run an out-of-band ansible playbook to bump
Caddy, and broke the "spec.yml is source of truth" model.

Changes:

- spec.yml: new `caddy-ingress-image` key (default
  `ghcr.io/laconicnetwork/caddy-ingress:latest`).
- Deployment manifest: `strategy: Recreate` on the Caddy Deployment
  — required because the pod binds hostPort 80/443, which prevents
  any rolling update from completing (new pod hangs Pending forever
  waiting for old pod to release the ports).
- install_ingress_for_kind: accepts caddy_image and templates the
  manifest before applying, same pattern as the existing acme-email
  templating.
- update_caddy_ingress_image: patches the running Caddy Deployment
  when the spec image differs from the live image. No-op if they
  match. Returns True if a patch was applied so the caller can wait
  for the rollout.
- deploy_k8s._setup_cluster: on cluster reuse (ingress already up),
  reconcile the running image against the spec. Installs path
  unchanged; only the "already running, maybe needs update" branch
  is new.

Cluster-scoped caveat: caddy-system is shared by every deployment on
the cluster, so the spec value in any one deployment rolls Caddy for
all of them — last `deployment start` wins. Documented in
deployment_patterns.md alongside the other cluster-scoped concerns
(kind-mount-root, namespace ownership).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 06:51:53 +00:00
..
build Apply pre-commit linting fixes 2026-01-21 20:58:31 -05:00
data feat(k8s): manage Caddy ingress image lifecycle via spec (so-p3p) 2026-04-21 06:51:53 +00:00
deploy feat(k8s): manage Caddy ingress image lifecycle via spec (so-p3p) 2026-04-21 06:51:53 +00:00
repos Fix pyright type errors across codebase 2026-01-22 01:10:36 -05:00
__init__.py Rename app -> stack_orchestrator (#625) 2023-11-07 00:06:55 -07:00
__main__.py Rename app -> stack_orchestrator (#625) 2023-11-07 00:06:55 -07:00
base.py Fix pyright type errors across codebase 2026-01-22 01:10:36 -05:00
command_types.py Rename app -> stack_orchestrator (#625) 2023-11-07 00:06:55 -07:00
constants.py feat(k8s): manage Caddy ingress image lifecycle via spec (so-p3p) 2026-04-21 06:51:53 +00:00
ids.py fix: black formatting, line length, pyright type narrowing 2026-04-02 05:22:25 +00:00
main.py Apply pre-commit linting fixes 2026-01-21 20:58:31 -05:00
opts.py Fix pyright type errors across codebase 2026-01-22 01:10:36 -05:00
update.py Apply pre-commit linting fixes 2026-01-21 20:58:31 -05:00
util.py Add Job and secrets support for k8s-kind deployments (#995) 2026-03-11 03:56:21 +00:00
version.py Apply pre-commit linting fixes 2026-01-21 20:58:31 -05:00