Wire ArgoCD app-of-apps + buyerchat Argo Rollouts canary#5
Merged
Conversation
Make the README's GitOps and progressive-delivery claims true. - infra/argo-rollouts, infra/argocd: wrapper charts pinning the upstream argo-helm charts (2.41.0 / 9.5.21) as dependencies, so `helm lint` runs in CI and the app-of-apps can render them from an in-repo path. - argocd/root-app.yaml + argocd/apps/*.yaml: app-of-apps over the six components that actually exist (ingress-nginx, cert-manager, sealed-secrets, kube-prometheus-stack, argo-rollouts, buyerchat) with automated sync, prune, and self-heal. - helm/buyerchat: a Rollout template (canary 25→50→75→100 with an analysis gate at 25%) and an AnalysisTemplate, both gated on rollout.enabled. The Deployment is suppressed when the Rollout renders, so exactly one workload object exists. values.dev.yaml turns the Rollout on for the kind cluster. The pod spec (security context, tcpSocket probes, volumes, NetworkPolicies) carries over unchanged. - Makefile + scripts/up.ps1: install argo-rollouts then argocd, apply the app-of-apps root, add a rollout-status target; remove the stale "until Day 6" comment. - CI: a gitops job that lints/renders the wrapper charts, renders the rollout-enabled buyerchat, and validates the app-of-apps manifests (all with -ignore-missing-schemas for the CRD kinds). - README: child-app count set to the real 6; canary section made honest about the analysis query. docs/gitops.md documents the flow. The AnalysisTemplate query is a conservative up-based liveness check with a TODO — buyerchat's exported metric names aren't confirmable from this repo, so it does not claim a request-success-rate gate it can't compute. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
The wrapper charts pin argo-rollouts + argo-cd from the argo-helm repo; without 'helm repo add argo' the GitOps job's 'helm dependency build' fails with 'no repository definition for argoproj.github.io/argo-helm'.
ykstorm
added a commit
that referenced
this pull request
Jun 15, 2026
* feat: wire ArgoCD app-of-apps + buyerchat Argo Rollouts canary Make the README's GitOps and progressive-delivery claims true. - infra/argo-rollouts, infra/argocd: wrapper charts pinning the upstream argo-helm charts (2.41.0 / 9.5.21) as dependencies, so `helm lint` runs in CI and the app-of-apps can render them from an in-repo path. - argocd/root-app.yaml + argocd/apps/*.yaml: app-of-apps over the six components that actually exist (ingress-nginx, cert-manager, sealed-secrets, kube-prometheus-stack, argo-rollouts, buyerchat) with automated sync, prune, and self-heal. - helm/buyerchat: a Rollout template (canary 25→50→75→100 with an analysis gate at 25%) and an AnalysisTemplate, both gated on rollout.enabled. The Deployment is suppressed when the Rollout renders, so exactly one workload object exists. values.dev.yaml turns the Rollout on for the kind cluster. The pod spec (security context, tcpSocket probes, volumes, NetworkPolicies) carries over unchanged. - Makefile + scripts/up.ps1: install argo-rollouts then argocd, apply the app-of-apps root, add a rollout-status target; remove the stale "until Day 6" comment. - CI: a gitops job that lints/renders the wrapper charts, renders the rollout-enabled buyerchat, and validates the app-of-apps manifests (all with -ignore-missing-schemas for the CRD kinds). - README: child-app count set to the real 6; canary section made honest about the analysis query. docs/gitops.md documents the flow. The AnalysisTemplate query is a conservative up-based liveness check with a TODO — buyerchat's exported metric names aren't confirmable from this repo, so it does not claim a request-success-rate gate it can't compute. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * ci(gitops): helm repo add argo before dependency build The wrapper charts pin argo-rollouts + argo-cd from the argo-helm repo; without 'helm repo add argo' the GitOps job's 'helm dependency build' fails with 'no repository definition for argoproj.github.io/argo-helm'. --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ykstorm
added a commit
that referenced
this pull request
Jun 15, 2026
* feat: wire ArgoCD app-of-apps + buyerchat Argo Rollouts canary Make the README's GitOps and progressive-delivery claims true. - infra/argo-rollouts, infra/argocd: wrapper charts pinning the upstream argo-helm charts (2.41.0 / 9.5.21) as dependencies, so `helm lint` runs in CI and the app-of-apps can render them from an in-repo path. - argocd/root-app.yaml + argocd/apps/*.yaml: app-of-apps over the six components that actually exist (ingress-nginx, cert-manager, sealed-secrets, kube-prometheus-stack, argo-rollouts, buyerchat) with automated sync, prune, and self-heal. - helm/buyerchat: a Rollout template (canary 25→50→75→100 with an analysis gate at 25%) and an AnalysisTemplate, both gated on rollout.enabled. The Deployment is suppressed when the Rollout renders, so exactly one workload object exists. values.dev.yaml turns the Rollout on for the kind cluster. The pod spec (security context, tcpSocket probes, volumes, NetworkPolicies) carries over unchanged. - Makefile + scripts/up.ps1: install argo-rollouts then argocd, apply the app-of-apps root, add a rollout-status target; remove the stale "until Day 6" comment. - CI: a gitops job that lints/renders the wrapper charts, renders the rollout-enabled buyerchat, and validates the app-of-apps manifests (all with -ignore-missing-schemas for the CRD kinds). - README: child-app count set to the real 6; canary section made honest about the analysis query. docs/gitops.md documents the flow. The AnalysisTemplate query is a conservative up-based liveness check with a TODO — buyerchat's exported metric names aren't confirmable from this repo, so it does not claim a request-success-rate gate it can't compute. * ci(gitops): helm repo add argo before dependency build The wrapper charts pin argo-rollouts + argo-cd from the argo-helm repo; without 'helm repo add argo' the GitOps job's 'helm dependency build' fails with 'no repository definition for argoproj.github.io/argo-helm'. ---------
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Makes the README's two standing claims true: a real ArgoCD app-of-apps, and an Argo Rollouts canary for buyerchat. Built against
2ebc478(HEAD at branch time — no drift from the plan).Changes
Infra wrapper charts
infra/argo-rollouts/andinfra/argocd/—Chart.yamlpins the upstream argo-helm charts (argo-rollouts2.41.0,argo-cd9.5.21) as dependencies, plus minimalvalues.yamland a README. Unlike the older values-only overlays these are self-contained sohelm lintruns in CI and the app-of-apps can render them from an in-repo path.Chart.lockis committed; the vendoredcharts/*.tgzare gitignored and re-fetched byhelm dependency build.App-of-apps
argocd/root-app.yaml— the rootApplicationpointing atargocd/apps/with automated sync + prune + self-heal.argocd/apps/*.yaml— one childApplicationper component that actually exists: 6 total (ingress-nginx, cert-manager, sealed-secrets, kube-prometheus-stack, argo-rollouts, buyerchat). Values-only overlays use ArgoCD multi-source ($values); the wrapper charts and buyerchat point at in-repo paths.buyerchat Rollout + analysis
helm/buyerchat/templates/rollout.yaml— ArgoRollout, canary 25→50→75→100 with ananalysisgate at 25%. Pod spec is a verbatim copy of the Deployment (security context, tcpSocket probes + rationale, volumes, NetworkPolicies all carried over unchanged).helm/buyerchat/templates/analysis-template.yaml—AnalysisTemplatequerying thekpsPrometheus.deployment.yamlwrapped in{{- if not .Values.rollout.enabled }}so exactly one of Deployment/Rollout renders.values.yamlgains arollout:block (defaultenabled: false);values.dev.yamlsetsenabled: true.Wiring + CI + docs
Makefile/scripts/up.ps1— install argo-rollouts then argocd, apply the app-of-apps root, addrollout-status; the stale "until Day 6" comment is gone..github/workflows/ci.yml— agitopsjob that lints/renders the wrapper charts, renders the rollout-enabled buyerchat, and validates the app-of-apps manifests (all-ignore-missing-schemasfor the CRD kinds).README.md— child-app count set to the real 6; canary section made accurate.docs/gitops.mddocuments the flow.Honesty note on the analysis query
The
AnalysisTemplateuses a conservativeup-based liveness query (fraction of buyerchat targets Prometheus reports scrapeable), not a request-success-rate. buyerchat runs degraded with no app source in this repo, so its exported metric names can't be confirmed. The template carries aTODOmarking the one query to swap once the image exports request counters on/api/metrics. It does not claim a success-rate gate it can't compute.Done criteria (run locally, all pass)
Count checks:
kind: Rollout(dev) = 1,kind: Deployment(dev) = 0,kind: Deployment(default) = 1,kind: AnalysisTemplate(dev) = 1, child Applications = 6,until Day 6in up.ps1 = 0.Maintenance note
The buyerchat pod template now lives in both
deployment.yamlandrollout.yaml. A change to the pod spec must be made in both. Extracting it into a shared_helpers.tplnamed template is a worthwhile follow-up (out of scope here).🤖 Generated with Claude Code