feat(dispatch): swap to the first-party chart#7998
Conversation
OCIRepository: bjw-s app-template -> oci://ghcr.io/misospace/charts/dispatch. Same underlying engine (the chart is built on the bjw-s common library), so values translate nearly 1:1; resource names/selectors are unchanged (clean in-place helm upgrade). What changes: migrations move from the pod entrypoint to a pre-install/pre-upgrade hook Job and pods always run SKIP_DB_MIGRATIONS=true (chart default) — multi-replica safe. Dropped the HOSTNAME workaround (baked into the image since 0.5.17), custom probes (chart defaults match), and refreshed the stale vision-4B comment (now a 9B).
konflate — summaryNote +1 added · 4 changed · −0 removed — 5 resources · 2 apps Blast radius
Warning ⚠ Caution
Image changes
konflate · rendered |
AI Automated ReviewAnalysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence) Recommendation: Request ChangesThis PR migrates Change SummaryThis PR makes the following changes to
Required Checks✅ validate manifest against target cluster versionThe HelmRelease, OCIRepository, and Kustomization resources use standard Flux/GitOps APIs ( Verified: All resource API versions ( ✅ check for resource quota / limit changesResource limits are unchanged between the old and new configurations:
Verified: No change to CPU/memory requests or limits. No new ResourceQuota or LimitRange was introduced. Resource quotas on the Blocking Finding
|
| Convention | Status | Note |
|---|---|---|
| HelmRelease via Flux | ✅ | Uses spec.chartRef pointing to OCIRepository |
| Per-app OCIRepository | ✅ | ocirepository.yaml is separate from HelmRelease |
| Image pinned by SHA | ✅ | Both old and new image tags include @sha256: |
No metadata.namespace |
✅ | metadata.namespace absent as expected |
| External-secrets backed secrets | ✅ | DATABASE_URL uses secretKeyRef to dispatch-app |
| Resource limits defined | ✅ | CPU/memory requests and limits present |
| OCI artifacts pinned by tag | ✅ | Chart pinned by tag 0.5.19, not SHA |
Summary
The PR implements a well-reasoned chart migration with good documentation. Resource limits are unchanged. Manifests are valid. However, the immutable Deployment selector label change is a hard blocker — Flux will not apply the change without manual intervention. The PR must either document the required manual step or provide a mechanism (task, pre-flight script) to handle the immutable field change before Flux reconciles.
Summary
OCIRepository→oci://ghcr.io/misospace/charts/dispatch(tag 0.5.18); HelmRelease values translated to the chart's API (built on bjw-s common, so nearly 1:1:controllers.dispatch.containers.app→controllers.main.containers.main).SKIP_DB_MIGRATIONS=true— the boot-migration multi-replica hazard is gone.HOSTNAME: 0.0.0.0(baked into the image since 0.5.17), custom probes (chart defaults are identical). Refreshed the stale vision-4B comment (9B now).Verified locally (chart rendered with these exact values)
dispatchservice/deployment/SA) → in-place upgrade,dispatch.llm:3000DNS unchangedDATABASE_URL(anchor) lands in both the pod and the migrate Job (dispatch-app/uri);SKIP_DB_MIGRATIONSinherited from chart defaults; reloader annotation renders; route →dispatch:3000ghcr.io/misospace/charts/dispatch:0.5.18does not exist yet — v0.5.18's chart push 403'd (app token can't create GHCR packages; fixed by misospace/dispatch#553). Either:helm package charts/dispatch(version 0.5.18) +helm pushit manually once.