Getting tired of Helm – any better way to handle deployments in Kubernetes?

20 pointsposted a day ago
by DeborahEmeni_

Item id: 43906058

18 Comments

atmosx

a day ago

Kustomize is easier to manage at scale, but some upfront effort is required. Many charts are distributed as Helm packages, so you’ll often need to export them as raw YAML manifests. In an ideal setup, ArgoCD combined with Kustomize should cover most deployment needs. However, depending on your workflow, you may eventually need a way to dynamically replace variables. If the built-in tools in recent Kustomize versions aren’t sufficient, consider using envsubst as a fallback.

I handle deploy time dynamic variables with `sed`. You shouldn't need more complexity than that.

(Not that I haven't had the need, I've use jsonnet with libk8s at scale. But if you're asking the question this simply, you probably don't need it)

1024kb

12 hours ago

What exactly are you doing with Helm that's making it so painful to use, and what does your development workflow look like? I've certainly had my fair share of issues with Helm, especially when trying to get a bit too fancy with creating Helm libraries, and standardised charts. I've also found that trying to aggregate multiple charts into a single chart for deploying an environment can also become a nightmare to manage.

I'm currently looking at Helmfile so that I don't need to aggregate charts into a 'parent chart', and i'd also like to move towards a single standardised chart that all microservices can use, rather than spin up a new chart for each service.

Open-Sourcery

12 hours ago

Holos.run for my homelab cluster. Cuelang has a learning curve but works well with argo unlike Timoni and let's you import existing charts, bare manifests, and use kustomize. Let's me abstract config with custom types and unification/(inheritance if that is easier to think about but a bit wrong)

arccy

a day ago

if you only work with your own stuff, helm is easily (and best) avoided.

i like generating k8s yaml with cue, example: https://github.com/cue-labs/cue-by-example/tree/main/003_kub...

there's also https://timoni.sh/ if you want a helm-like experience, but with cue instead of templating.

If you're working with upstream projects, unfortunately many of them will only provide helm charts, so you got to decide between rewriting them to suit your env/tool, or just live with the crappiness of helm.

bithavoc

a day ago

I use Pulumi native package for Kubernetes, no more YAML, only instances of Typescript classes.

LarsLarson

a day ago

We are using kustomize to create the yaml and argocd for deployment. All via ci and git-ops.

works really well

OhSoHumble

a day ago

Also using Kustomiza and Argo. It's really good imo.

I'm a huge fan of Kustomize. I'm ambivalent towards argocd, but Kustomize is as close to a DWIM tooling as it's possible to get for Kubernetes.

dvektor

a day ago

Yeah the whole 'git repo = helm chart' just does not feel great at all. As we all know, the only thing worse is not using helm and having to deal with writing all those service, pv, pvc, ingress yaml files individually :)

Kerbonut

21 hours ago

I built my own tooling around templated manifest files (jinja2) and management via ansible playbooks (templated).

Vespasian

a day ago

My recommendation is fluxcd for a great gitops based workflow (incorporates soap for secrets)