harmony/adr/009-helm-and-kustomize-handling.md
tahahawa 564c00660b WIP
2025-04-15 15:54:22 -04:00

1.6 KiB

Architecture Decision Record: Helm and Kustomize Handling

Name: Taha Hawa

Initial Date: 2025-04-15

Last Updated Date: 2025-04-15

Status

Proposed

Context

We need to find a way to handle Helm charts and deploy them to a Kubernetes cluster. Helm has a lot of extra functionality that we may or may not need. Kustomize handles Helm charts by inflating them and applying them as vanilla Kubernetes yaml. How should Harmony handle it?

Decision

In order to move quickly and efficiently, Harmony should handle Helm charts similarly to how Kustomize does: invoke Helm to inflate/render the charts with the needed inputs, and deploy the rendered artifacts to Kubernetes as if it were vanilla manifests.

Rationale

Consequences

Pros:

  • Much easier (and faster) than implementing all of Helm's featureset
  • Re-use code from K8sResource already present in Harmony
  • Harmony retains more control over how the deployment goes after rendering (i.e. can act like Kustomize, or leverage Kustomize itself to modify deployments after rendering/inflation)
  • Reduce (unstable) surface of dealing with Helm binary

Cons:

  • Lose some Helm functionality
  • Potential lose some compatibility with Helm

Alternatives considered

  • Implement Helm fully
    • Pros:
      • Retain full compatibility with Helm as a tool
      • Retain full functionality of Helm
    • Cons:
      • Longer dev time
      • More complex integration
      • Dealing with larger (unstable) surface of Helm as a binary
  • Leverage Kustomize to deal with Helm charts
    • Pros:

    • Cons:

Additional Notes