Guides

Deploying Helm Charts

Helm charts as a manifest source — schema reserved, renderer planned

Deploying Helm Charts — 📋 planned

Helm isn't implemented. manifestType: Helm (or Auto detecting a Chart.yaml) fails the reconcile today, and the HelmChart source type has no resolver. The App schema already reserves both paths — this guide documents the target shape so specs written now will work when the renderer lands.

Two Helm paths are reserved in the CRD:

PathFieldPurpose
Git-resident chartsource.git.manifestType: Helm + source.git.helmRender a chart checked into the tracked repo path
Chart-repo deploysource.type: HelmChart + source.helmChartDeploy a chart from an HTTP/OCI chart repo — no git hop

Target shape — chart in git

apiVersion: cd.wardn.space/v1alpha1
kind: App
metadata:
  name: web-production
  namespace: org-my-org
spec:
  source:
    type: Git
    git:
      repoURL: https://github.com/myorg/my-app
      branch: main
      path: charts/web
      manifestType: Helm
      helm:
        valuesFile: values/production.yaml   # relative to path
        releaseName: web
        namespace: production
        inlineValues: |
          replicaCount: 3
          image:
            tag: "1.26-alpine"
  destination:
    namespace: production
  syncPolicy:
    automated: true
    prune: true

The helm config block exists in the schema:

FieldDescription
valuesFileValues file path relative to path
releaseNameRelease name (defaults to app name)
namespaceRelease namespace
inlineValuesRaw YAML values applied on top of valuesFile

Target shape — chart repository

spec:
  source:
    type: HelmChart
    helmChart:
      repoURL: https://charts.bitnami.com/bitnami   # or oci://…
      chart: nginx
      version: "18.x"
      values: |
        replicaCount: 3

repoURL, chart, version, values are defined; resolution is not.

Intended values precedence

Highest wins: inlineValues → valuesFile → chart values.yaml defaults.

Workarounds today

  • Render it yourself — commit the helm template output as raw YAML and use manifestType: Raw
  • Kustomize over rendered output — manifestType: Kustomize ✅ works now and can patch the rendered base

On this page