Helm attempts to solve a specific problem: How do you package up a bunch of Kubernetes manifests in a way that's (relatively) easy to consume.
For simple applications, this works out pretty well. You get a few knobs to tweak on the installation (such as whether or not you want the Chart to create RBAC resources), Helm renders a stream of YAML and then applies it to your cluster. Where this breaks down is when you try to do anything more complex, and that break down happens in 2 areas: Maintenance and Usability
Sufficiently complex (read: any) Helm charts can be thought of as a piece of software. It takes a series of inputs (the values) and produces a series of outputs (the YAML stream of Kubernetes objects). With "traditional" languages, there's facilities for syntax checking, static analysis, testing, etc. that help ensure the software both functions correctly now and in the future. The Helm ecosystem has some of those same things (e.g. helm lint
) as well, however they're generally limited to treating th