首页
Getting tired of Helm – any better way to handle deployments in Kubernetes?
I’ve been deep in Helm templates lately and it’s starting to feel like YAML hell.
It was fine when we had a few services, but now it’s just hard to manage.
Anyone found a workflow that avoids Helm altogether? Or made Helm manageable at scale?
18 条评论
atmosx25 天前
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.
评论 #43908521 未加载
haiku207726 天前
ArgoCD for relatively simple stuff.<p>For complex stuff I write Python or Go programs to build manifests, then shell out to kubectl apply. An old example - deploying a multi-instance modded Arma 3 server on k3s: <a href="https://github.com/dharmab/homelab-k3s/tree/main/lab">https://github.com/dharmab/homelab-k3s/tree/main/lab</a>
评论 #43963006 未加载
b1148425 天前
I've been working on improving a tool called kr8+, which uses jsonnet to combine cluster config and apply it to components: <a href="https://github.com/ice-bergtech/kr8">https://github.com/ice-bergtech/kr8</a>
1024kb25 天前
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.<p>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.
arccy25 天前
if you only work with your own stuff, helm is easily (and best) avoided.<p>i like generating k8s yaml with cue, example: <a href="https://github.com/cue-labs/cue-by-example/tree/main/003_kubernetes_tutorial">https://github.com/cue-labs/cue-by-example/tree/main/003_kub...</a><p>there's also <a href="https://timoni.sh/" rel="nofollow">https://timoni.sh/</a> if you want a helm-like experience, but with cue instead of templating.<p>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.
a-saleh20 天前
Recently I have been writing more stings in jsonnet. If I were with more haskell-friendly team, might even try dhall. In general, I feel like writing the yaml in something else than yaml is the way to go, and as long as you get imports and way to do templating that is not just string interpolation, you are good.
natbennett26 天前
I prefer ytt for templating and kapp for deployments.<p><a href="https://github.com/carvel-dev/carvel">https://github.com/carvel-dev/carvel</a>
uaas22 天前
IMHO at scale (both in terms of complexity and org level) having something consistent helps more than trying to fight the de-facto standard. Since most upstream projects are mainly distributed as Helm charts, going with anything else will require more effort eventually.
Open-Sourcery25 天前
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)
bithavoc25 天前
I use Pulumi native package for Kubernetes, no more YAML, only instances of Typescript classes.
LarsLarson26 天前
We are using kustomize to create the yaml and argocd for deployment. All via ci and git-ops.<p>works really well
评论 #43907686 未加载
评论 #43908421 未加载
dvektor26 天前
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 :)
gtirloni24 天前
<a href="https://github.com/apple/pkl-k8s">https://github.com/apple/pkl-k8s</a>
Nerudite25 天前
Helmsman works great:<p><a href="https://github.com/mkubaczyk/helmsman">https://github.com/mkubaczyk/helmsman</a>
Kerbonut25 天前
I built my own tooling around templated manifest files (jinja2) and management via ansible playbooks (templated).
Vespasian25 天前
My recommendation is fluxcd for a great gitops based workflow (incorporates soap for secrets)
delduca25 天前
+1 for Kustomize
johnjungles26 天前
ArgoCD