7 ms·
Maybe this will finally break me of my habit of using helm charts, period.
by dpkirchner 1y ago
Maybe this will finally break me of my habit of using helm charts, period.
- cheshire_cat 1y agoWhy do you want to stop using helm charts? Genuine question, as I'm new to Kubernetes and helm.
- chuckadams 1y agoWrite a few Helm charts and you'll understand why people want to stop using it. `nindent` will become a curse word in your vocabulary. It's a fine tool at the user level, but the DX is an atrocity.
- bigstrat2003 1y agoI mean, I have written a few (like 5-10?) and I don't understand either. I find that Helm is quite a nice tool which does its job very well.
- cbzbc 1y agoWhat are you planning on moving to ?
- chuckadams 1y agoProbably kustomize, as my needs are simple. If I care to get fancy, I’m pondering giving Yoke a try.
- theteapot 1y agoWhat's wrong with `kubectl apply -f xxx.yaml`?
- physicles 1y agoWe use kustomize because we have four environments that run basically the same stuff (dev with k3s, test, and two cloud regions). If we didn’t use kustomize, we’d be forced to reinvent it to avoid duplicating so much yaml.
- deleted 1y ago[deleted]
- davidham 1y agoI used kustomize to build an ArgoCD install at a previous company, and I was impressed at how powerful it was. Our setup was pretty involved, and kustomize was able to handle all the per-environment differences easily, and the code was easy to work with.
- dpkirchner 1y agoI'm using either opentofu(terraform) or plain yaml. I'm not a huge fan of HCL but at least it is structured and easily manipulated without worrying about whitespace.
- hbogert 1y agoeasily manipulated? How?
- NewJazz 1y agoConsuming one that is well written isn't too much pain, IME. But writing or modifying one can be really annoying. Aiui the values.yaml has no type schema, just vibes. The whole thing is powered off using text templating with yaml (a whitespace sensitive language), which is error prone and often hard to read. That's basically the main issues in a nutshell, it may not sound like much, but helm doesn't exactly do a whole lot and it does that limited set of stuff poorly.
- remram 1y agoI share your dislike of Helm, but FYI there are schemas for values, see for example https://github.com/bitnami/charts/blob/main/bitnami/postgresql/values.schema.json https://github.com/bitnami/charts/blob/main/bitnami/postgres... and docs https://helm.sh/docs/topics/charts/#schema-files https://helm.sh/docs/topics/charts/#schema-files
- NewJazz 1y agoAh, I must have met some lazy charts then. Thanks for the correction. Still, it seems like that schema would end up a little inconvenient to integrate into your editor for writing the templates...
- mdaniel 1y agoOh, yeah, but who can blame them because writing JSON Schema files by hand is some onoz Ironically (in the context of this submission) Bitnami has a "--schema" option to their README generator, which is why so many of their charts ship with .schema.json files: https://github.com/bitnami/readme-generator-for-helm/tree/2.7.2#:~:text=path%20for%20the%20openapi%20schema%20output%20file https://github.com/bitnami/readme-generator-for-helm/tree/2.... There are likely other "give me a schema for this example JSON/YAML file" but almost certainly wouldn't come with the nice {"description":""} blocks, nor the {"required":false} that an annotated .yaml can offer While digging up that link, I also spotted the tag line in their GitHub org which is hilarious https://github.com/bitnami#:~:text=trusted%20by%20ops https://github.com/bitnami#:~:text=trusted%20by%20ops
- 1y ago
- zer00eyz 1y agoI will leave it to others: https://noyaml.com https://noyaml.com
- EdwardDiego 1y agoGolang string templating in a whitespace sensitive config language suuuuucks. I might use Helm charts for initial deploys of operators, but that's about it. Kustomize is, IMO, a better approach if you need to dynamically modify the YAML of your resources and tools like ArgoCD support it.
- ntqz 1y agoGrafana's Tanka is a very underappreciated tool if you have to do something similar to Helm.
- davidham 1y agoI work at Grafana, and Jsonnet powers our whole k8s infrastructure. It can get a little baroque sometimes but overall it’s tremendously powerful, and it’s fun to work with.
- skissane 1y agoI’ve never used Helm charts. I learned K8S in a shop in which kustomize is the standard and helm is a permitted exception to the standard, but I just never felt any reason to learn helm. Am I missing out? Sometimes the limitations of kustomize annoy me, but we find ways to live with them
- bigstrat2003 1y agoI wouldn't say you're missing out. If kustomize works for you, keep using it. I personally use helm because I cannot for the life of me wrap my head around kustomize. I've looked at tutorials, read the docs, and it just doesn't make sense to me. Helm, on the other hand, immediately clicked and I was able to pretty effortlessly write charts for our use. It's just a case of different preference in tools, imo.
- cmckn 1y agoKustomize feels like less of a hack to me, without the gotpl madness, but it’s way more painful to get something done in my experience. I’ve landed on just writing real code to craft the objects I want (using the actual types, not text), if I absolutely can’t get by with static manifests.
- mdaniel 1y agoEvery time I try to get into Kustomize, I feel it just has a documentation problem. It's written in Ph.D.ese without suitable examples But, if it helps, my mental model of Kustomize is "it's a sequence of JSON Patch [1] operations"[2] which makes it absolutely stellar for mutating someone else's helm chart[3] (or yaml) since you can target anything for updating to your needs My secondary complaint is that even JetBrains don't have good support for it, which makes working with them extra hard mode 1: https://www.rfc-editor.org/rfc/rfc6902.html https://www.rfc-editor.org/rfc/rfc6902.html 2: it's a very "functional programming language" mental model https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/#everything-is-a-transformer https://kubectl.docs.kubernetes.io/references/kustomize/kust... 3: https://kubectl.docs.kubernetes.io/references/kustomize/builtins/#_helmchartinflationgenerator_ https://kubectl.docs.kubernetes.io/references/kustomize/buil...
- notanaverageman 1y agoI suggest checking out Anemos (https://github.com/ohayocorp/anemos https://github.com/ohayocorp/anemos), the new boy in the town. It is an open source single-binary tool written in Go and allows you to use JavaScript/TypeScript to define your manifests using templates, object oriented approach, and YAML node manipulation. You can read a comparison with Helm here: https://www.ohayocorp.com/anemos/docs/comparison/helm https://www.ohayocorp.com/anemos/docs/comparison/helm P.S. I am the author of the tool.
- imglorp 1y agoMost on this thread are viewing helm from a user perspective: "I want to install X and I can use somebody's chart for it or I can use another tool." There is another category of users who want a way to mange multiple vendor offerings in a consistent manner into their clusters. If they're all packaged with Helm, the user can have standard process and tooling to do that. It's done for K8s apps what containers did for executables. Is it great? No, see the grief and pain in sibling threads. Are there alternatives? Sure. But Helm is sort of a standard at this point, warts and all. I work for a vendor that sells to the second category usually, my chart has some 45 images with some intricate hooks for install and upgrade, subcharts, multiple namespaces, etc. You'd be hard pressed to repackage our stuff for every release we give you.