← Back to context

Comment by bigstrat2003

10 hours ago

Helm is a great tool, but you absolutely must keep it simple. We use Helm at work, and our charts are 95% hard-coded YAML templates, with an occasional sprinkling of a Helm variable for values which differ between dev/test/prod. It works great and is a ton easier than Kustomize for that purpose. But I would never want to maintain the super complex Helm charts you see in public repos.

> We use Helm at work, and our charts are 95% hard-coded YAML templates, with an occasional sprinkling of a Helm variable for values which differ between dev/test/prod. It works great and is a ton easier than Kustomize for that purpose.

I have come to precisely the opposite conclusion. I can count all of the helm charts that didn't make me immediately want to cry with one hand... and I'd have at least 2 fingers still free.

If you have "base, and then we change three things per environment", Kustomize is about as good as it gets using simple patches.

at $dayJob, we have templates wrapping templates and not a ton of tests on anything. Lots of implicit defaults that are not documented anywhere other than in the master/root chart defaults. As far as I can tell, this was how policy was meant to be enforced rather than something like OPA.

  • > If you have "base, and then we change three things per environment", Kustomize is about as good as it gets using simple patches.

    Real talk, I could not for the life of me figure out how to use Kustomize. I spent a day or so poring over the documentation, and while I could recreate their hello world type examples, I couldn't figure out why they worked or how to make it work for our needs. Meanwhile, Helm immediately made sense and I had a chart banged out for the software I was trying to set up in under an hour.

    I'm sure someone will tell me it's a skill issue, but Kustomize was simply way harder to use than Helm (or the documentation was worse, not sure which). So we wound up using Helm.

I hate seeing public Helm charts that basically expose every single setting in the underlying manifests. What am I even using templates for then?