Skip to content

ADR-024: Helm as deployment mechanism

Category: development Provenance: human

Decision

Use Helm charts as the primary deployment mechanism for the operator and CRD resources. Plain manifests and Kustomize are not supported.

Rationale

Plain manifests allow no configuration - users get a default operator in a default namespace with no flexibility. Kustomize provides some flexibility but easily breaks when required parameters are not overridden, leading to invalid deployments. Helm provides proper configuration management with values.yaml, type validation, and defaults. Helm integrates well with GitOps tools (ArgoCD, Flux) through native Helm support. Helm charts can be properly versioned and published to registries, enabling version pinning and upgrades. Helm's templating catches configuration errors at render time, not deployment time.

Agent Instructions

Always provide Helm charts for deployable components. Do not create plain Kubernetes manifests or Kustomize overlays as alternatives. When users ask for deployment options, direct them to Helm charts. All configuration options must be exposed as Helm values with sensible defaults.

Rejected Alternatives

Plain Kubernetes manifests

No configuration options. Users stuck with hardcoded defaults for namespace, resources, images, etc.

Kustomize

Easy to miss required parameter overrides, resulting in broken deployments. Less GitOps tool support than Helm.