Helm Charts
Helm is like a Package Manager for Kubernetes it allows us to setup an entire application as a single package without worrying about the configuration of all the individual objects in the process, we define a single file values.yaml where we declare all the variable values which are required for that specific Helm Charts installation. Using a single command we can upgrade, rollback and uninstall the entire application from our infra.
Helm Components
Charts are a collection of files/objects that are required in my cluster to deploy an app, when the chart is applied a release is made and each release can have many revisions in it.
Just like containers and other software helm charts can be downloaded from public repos or where we host them
The Helm Revision data resides in the cluster as a Secret as metadata to the chart using which anyone managing cluster can perform necessary actions
using Helm Releases we can have the same helm installation of the application as two instances such as prod and dev environment, and each of these releases will have it’s own version history
Helm 2 vs Helm3
when Helm 2 was released Kubernetes did not have Role Based Access Control and Custom Resource Defintions (Resources & Limits), in this setup for Helm to work properly, an extra component Tiller used to be installed on the server which would communicate with the Cluster and perform the actions from the Helm Client, by default in this mode Tiller was running with all the privileges available to achieve the task at hand.
Over time as new features like Role Based Access Control was introduced in Kubernetes the need for Tiller reduced and was removed in Helm 3
Helm2 vs Helm3
Link to original
3 Way Strategic Merge Patch
In the latest version of helm, the CLI takes a snapshot of the entire chart as major changes are made to them, if someone made a change manually i.e not through the chart they are preserved while doing a upgrade and reverted during a roll back, this is essentially checking
- Current Chart
- New/Old Chart
- Objects in the Cluster of the chart
in the older versions of helm this information was not considered and would result in a messy un-tracked system of changes