Skip to content

feat: platform ApplicationSet + kargo charts - #13

Merged
jonathandieu merged 4 commits into
mainfrom
platform-charts
Jul 7, 2026
Merged

feat: platform ApplicationSet + kargo charts#13
jonathandieu merged 4 commits into
mainfrom
platform-charts

Conversation

@jonathandieu

Copy link
Copy Markdown
Owner

Platform-only: kargo + kargo-pipelines charts and the platform appset (purpose: platform). Split out from the combined charts PR for clearer review.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Helm template diff

Only in /tmp/head: changedetection.yaml
Only in /tmp/head: kargo-pipelines.yaml
Only in /tmp/head: kargo.yaml
Only in /tmp/head: mealie.yaml
Only in /tmp/head: plausible.yaml

kargo's chart requires api.adminAccount.passwordHash (or api.secret.name)
or fails to render. Wires a real 1Password item (Kargo Admin) through ESO
instead of stubbing a placeholder.
@jonathandieu
jonathandieu marked this pull request as ready for review July 7, 2026 13:20
@jonathandieu jonathandieu self-assigned this Jul 7, 2026
@jonathandieu
jonathandieu requested a review from Copilot July 7, 2026 13:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds platform-scoped Argo CD deployment for Kargo, including an umbrella Helm chart for Kargo itself (with admin credentials sourced via External Secrets) and a companion chart that defines Kargo Warehouses/Staged promotion pipelines for workload apps.

Changes:

  • Introduce a platform ApplicationSet to deploy kargo and kargo-pipelines onto clusters labeled purpose=platform, with sync wave ordering.
  • Add charts/platform/kargo (dependency on Akuity’s Kargo chart) plus an ExternalSecret to provide Kargo admin credentials from 1Password.
  • Add charts/platform/kargo-pipelines to generate Kargo Warehouse and Stage resources from a values-defined app/environment matrix.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
charts/platform/kargo/values.yaml Adds base values for the Kargo dependency chart (admin account + Argo CD integration).
charts/platform/kargo/templates/kargo-admin-credentials.yaml Creates an ExternalSecret to populate kargo-admin-credentials from 1Password.
charts/platform/kargo/Chart.yaml Defines the platform umbrella chart and pins the upstream Kargo chart dependency.
charts/platform/kargo-pipelines/values.yaml Defines environments, apps, and git settings used to generate Warehouses/Stages.
charts/platform/kargo-pipelines/templates/warehouse.yaml Generates one Warehouse per app for image subscriptions.
charts/platform/kargo-pipelines/templates/stage.yaml Generates one Stage per app per environment, including GitOps promotion steps and Argo CD sync triggers.
charts/platform/kargo-pipelines/Chart.yaml Defines the kargo-pipelines chart metadata.
argocd/apps/platform/appset.yaml Adds the platform ApplicationSet to deploy the new platform charts to platform clusters.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread charts/platform/kargo/values.yaml Outdated
Comment on lines +19 to +23
# prod only receives freight verified by all stage clusters
stages:
{{- range $.Values.environments.stage.clusters }}
- {{ $app.name }}-stage
{{- end }}
Comment on lines +7 to +10
metadata:
name: {{ $app.name }}-{{ $envName }}
namespace: kargo
spec:
Comment thread charts/platform/kargo-pipelines/templates/warehouse.yaml
Comment thread argocd/apps/platform/appset.yaml
Comment thread argocd/apps/platform/appset.yaml
…pilot review

values.yaml listed 6 apps (portfolio/api/overengineered never had charts) and
pre-migration cluster names (dieubernetes-do-stage-nyc3, dieubernetes-do-main-nyc3)
that don't match any real cluster. Trimmed to the 3 real workload apps and the
actual short cluster names the workloads appset reads overrides from.

Also fixes the promotion template's override key, which was writing
<app>.image.tag regardless of chart structure - wrong for every app, and
doubly wrong for plausible, whose umbrella chart nests the image under the
aliased plausible-analytics subchart.

Copilot review fixes: hardcoded "kargo" namespace in stage.yaml/warehouse.yaml
(now Release.Namespace), duplicate stage reference when ranging over stage
clusters for prod's requestedFreight, missing helm.releaseName and
SkipDryRunOnMissingResource in the platform appset, and a comment referencing
a nonexistent template filename.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Comment on lines +15 to +24
sources:
{{- if eq $envName "stage" }}
direct: true
{{- else }}
# prod only receives freight already verified in stage — one Stage
# per environment, not per cluster, so this is a single reference
# regardless of how many clusters are in the stage environment.
stages:
- {{ $app.name }}-stage
{{- end }}
Comment on lines +38 to +49
{{- range $env.clusters }}
- uses: git-update-image
as: update-{{ . }}
config:
path: ./repo
images:
- image: {{ $app.imageRepo }}
fromFreight: true
updates:
- file: clusters/{{ . }}/overrides/{{ $app.name }}.yaml
key: "{{ $app.imageValueKey }}"
{{- end }}
Comment on lines +60 to +68
# Trigger ArgoCD sync for every cluster in this environment
{{- range $env.clusters }}
- uses: argocd-update
config:
apps:
- name: {{ $app.name }}-{{ . }}
sources:
- desiredCommitFromStep: git-push
{{- end }}
@jonathandieu
jonathandieu merged commit 8a421d3 into main Jul 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants