←back to thread

229 points mmoogle | 2 comments | | HN request time: 0.412s | source
Show context
dpkirchner ◴[] No.44610377[source]
Maybe this will finally break me of my habit of using helm charts, period.
replies(4): >>44610605 #>>44610877 #>>44610954 #>>44612370 #
skissane ◴[] No.44610954[source]
I’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

replies(7): >>44611081 #>>44611452 #>>44611555 #>>44611784 #>>44612267 #>>44612326 #>>44614078 #
0xbadcafebee ◴[] No.44612267[source]
Some people like that Helm:

- Makes it possible to go from zero to fully running k8s integrated components in 5 seconds by just running 'helm install --repo https://example.com/charts/ mynginx nginx' (very useful: https://artifacthub.io/)

- Gives the ability to transactionally apply k8s configs, and un-apply them if there is a failure along the way (atomic rollbacks)

- Stores copies/versions/etc of each installation in the server so you have metadata for troubleshooting/operations/etc without having to keep it in some external system in a custom way.

- Allows a user who doesn't know anything about K8s to provide some simple variables to customize the installation of a bunch of K8s resources.

- Is composeable, has templates, etc.

So basically Helm has a lot of features, while Kustomize has... one. Very different purposes I think. You can also use both at the same time.

Personally I think Helm's atomic deployment feature is well worth it. I also love how easy it is to install charts. It feels a bit like magic.

replies(2): >>44613664 #>>44614387 #
1. mxey ◴[] No.44614387[source]
What do you mean by atomic deployment? There are no transactions in the Kubernetes API. Helm has to make one request for each object it creates or modifies, like any other client.
replies(1): >>44618920 #
2. mdaniel ◴[] No.44618920[source]
It's a misnomer, but I don't think OP invented that language, it's the word Helm uses for that flag: https://helm.sh/docs/helm/helm_install/#:~:text=the%20instal...

I believe(!) that the "rollback" that helm attempts to put back all the mutated objects, which it can - in theory - do because it maintains the previous state in the Secret objects that contain the rendered(?) and the values for the prior revision

  try:
    for obj in manifest_objects:
      kubectl_apply(obj)
    revisions.push(manifest_objects)
  except:
    old_revision = revisions.pop()
    for obj in old_revision:
      kubectl_apply(obj)
type deal