What are the benefits of helm?

7/24/2019

Okay you can easy install application but where is the benefit compared to normal .yaml files from Kubernetes? Can someone give me a example where it is useful to use helm and why normal Kubernetes is not sufficient? Also a confrontation for helm and Kubernetes would be nice.

-- djkobi97
kubernetes
kubernetes-helm

1 Answer

7/24/2019

With Helm, a set of resources (read as Kubernetes manifests) logically define a release - and you need to treat this group of resources as a single unit.

A simple example on why this is necessary: Imagine an application bundle that has, let's say, 10 kubernetes objects in total. On the next release, due to the changes in the app, now 1 of the resources is not needed anymore - there are 9 objects in total. How would I roll out this new release? If I simply do kubectl apply -f new_release/, that wouldn't take care of the deletion of that 1 resource that is not needed anymore. This means, I cannot roll upgrades that doesn't need manual intervention. Helm takes care of this.

Helm also keeps a history of releases with their exact set of resources, so you can rollback to a previous release with a single command, in case things go wrong.

Also, one of the things you need often is templating your resources - imagine you want to deploy multiple instances of the same exact application. What would you do?

Kubernetes doesn't offer many options to tackle this problem - one solution is to use different namespaces: Don't specify namespace in the manifests, but give it in the command, such as kubectl apply -n my_namespace -f resources/, but what if you want to deploy two of this instances on the same namespace? Then you need some kind of name/label/selector templating, and Helm takes care of that.

These are some examples for the use cases that Helm addresses.

-- Utku Ă–zdemir
Source: StackOverflow