Helm
Helm’s components
Helm is a package manager which is made of 2 parts:
- client
- tiller
Client
The helm’s client is a CLI app that’s coupled to the kubectl configuration. Indeed the helm’s CLI will allow you to trigger some action that are going to be trigger by the tiller.
Tiller
The tiller is a pod which is running in your Kubernetes cluster. This tiller will actually communicate with the api-server.
The role of this tiller is to deploy your Helm chart into Kubernetes by communicating with api-server. It’s abstracting the headache of deploying a service, deployment and other things for you…
We can sum up the architecture of Helm like below
Helm global architecture
Helm’s chart structure
Creating a chart is easy just run the command
helm create <char_name>
Helm will create a chart with already some examples files that you could re-use in for easily create your deployment. For the sake of this article the needed charts are already provided.
The structure of a chart is define like below
- Chart.yaml –> Information about your chart
- requirements.yaml –> Optional, listing the dependencies of your chart
- values.yaml –> Default values files use for hydrating your template files
- templates/*.yaml –> Directory where your charts are stored
- templates/NOTES.txt –> Optional, file use for describing your chart during installation (e.g can show which command to run for debugging etc..)
- charts –> Directory where your subchart are stored (dependencies)