Helm 4.0

Helm’s complexity and design pain

  • Many describe Helm as “complexity hell”: public charts are over-parameterized, hard to understand, and the default starter chart is seen as hostile to beginners.
  • Structural issue: consumers can only change what authors exposed in values.yaml, so authors add huge, tangled option sets to cover every use case.
  • Text-based Go templating over YAML is heavily criticized: whitespace bugs, unreadable constructs, no easy linting of templates, and “fractal” copy‑paste patterns across charts.
  • Some say this complexity pushed them away from Kubernetes entirely.

Where Helm is considered useful

  • Widely acknowledged value as a de facto package manager for Kubernetes: easy installation of complex third‑party stacks like ingress controllers, cert-manager, Prometheus, Cilium, Traefik, etc.
  • Network effects matter: many vendors only document Helm installs; reverse‑engineering charts into raw manifests or Terraform is tedious.
  • Several report success when:
    • Charts are simple, near‑raw manifests with minimal templating.
    • Teams write “single‑purpose” internal charts, not generic mega‑charts.
    • Helm is used via GitOps tools (ArgoCD/FluxCD) and mostly as helm template.

Alternatives and patterns

  • Kustomize is frequently recommended for internal apps: plain manifests plus overlays; easier to understand and modify than Helm, especially when only one org deploys the app.
  • Some combine Helm + Kustomize or Helm + Flux/Helmfile post‑renderers, but note it becomes “layers on layers” and hard to reason about.
  • Others prefer:
    • Terraform (kubernetes and helm providers), usually just to bootstrap GitOps controllers and infra.
    • General-purpose languages (Python, Go, JS/TS) or CDK8s/Pulumi to generate manifests.
    • CUE/Jsonnet or tools like timoni, kubecfg, Tanka, pkl; these are praised for structured, typed config but tooling and adoption are mixed.

Operational pain points

  • CRDs under Helm are called “a nightmare”: upgrade/remove cycles, circular dependencies, and difficulty recovering from bad states.
  • CLI flag renames in Helm 4 (e.g., --atomic--rollback-on-failure) are viewed as unnecessarily breaking automation.
  • Charts often obscure the underlying app’s native config; users must grep templates to map upstream docs to chart values.

Broader Kubernetes concerns

  • Several argue Kubernetes (and thus Helm) is overkill for most deployments; Docker Compose, Swarm, or Nomad are preferred at smaller scales.
  • Repeated worry about abstraction-on-abstraction: K8s objects already abstract infrastructure; adding Helm, Kustomize, and GitOps layers can make systems opaque, especially to people lacking fundamentals.