Concepts
What is Helm ? π
Helm is a Package Manager for Kubernetes, it allows defining, installing, upgrading and deleting applications.
A Helm Chart is an application packaged with Helm, it has a script file/folder structure and uses a templating language.
The Helm Client is a binary used to manipulate application packaged with Helm.

The complete documentation can be found at https://helm.sh
ArtifactHub π
The ArtifactHub is the place where many applications are distributed and ready to be deployed in a Kubernetes cluster.

Installing a chart π
An application installed from a Chart is called a release.
- Installing a chart from a helm repository
# Adding a repository
helm repo add grafana https://grafana.github.io/helm-charts
# Installing a chart (= creating a release from this chart)
helm install my-grafana grafana/grafana --version 7.3.8
- Installing a chart from an OCI registry
helm install my-redis oci://registry-1.docker.io/bitnamicharts/redis
Base commands π
- Creating / upgrading a release
helm install my-release CHART_URL -f values.test.yaml
or
helm upgrade --install my-release CHART_URL -f values.test.yaml
- Getting information about a given release
helm get all/hooks/manifest/notes/values my-release
- Listing existing releases
helm list
- Removing a release
helm delete my-release
Creating a chart to package an application π
The following command creates a sample Chart containing resources to deploy a NGinx server:
helm create my-app
The folder structure created is as follows:
$ tree my-app
my-app
βββ Chart.yaml
βββ charts
βββ templates
β βββ NOTES.txt
β βββ _helpers.tpl
β βββ deployment.yaml
β βββ ingress.yaml
β βββ service.yaml
β βββ serviceaccount.yaml
β βββ tests
β βββ test-connection.yaml
βββ values.yaml
- Chart.yaml contains the application metadata and the dependencies list
- charts is a folder used to store the dependent charts
- NOTES.txt provides the post install instructions to the user
- _helpers.tpl contains functions and variables to simplify the templating
- the YAML files in the templates’ folder contain specifications with templating code
- values.yaml defines the configuration values for the application
Packaging the VotingApp with Helm π
In the exercises we created many resources and put them all in a single folder. We will now use Helm to package the VotingApp to ease the distribution and deployment of this application.
