Helm is a:
Package manager for Kubernetes (the YAML configuration files).
- A bundle of YAML files is called a “Helm chart”
- Think of this as a dockerfile manager
- There are Public and Private repositories
- You can use
helm search
to find charts in your repository, or public ones helm install
will install a chart on your cluster.
Templating Engine
- Define a common blueprint for (say) microservices, and use that blueprint with some
placeholders
for some values (say for, image and name). values.yaml
file can be used to populate the templates with data for the placeholders.- command line
--set
can also be used to set values in placeholders. - useful for deploying same containers in different environments (eg. Dev/Staging/Prod)
Helm Chart Directory Structure:
└── myChart
├── Chart.yaml
├── values.yaml
├── charts
├── templates
Where
myChart
is the name of the chart
Chart.yaml
holds the meta info about the chart
values.yaml
values for template. (These are the defaults, and can be overridden later)
charts
directory, holds chart dependencies.
and templates
directory, holds the templates for this chart
helm install myChart
to install this chart
Optional files include README.md
and LICENSE
helm install --values=myvalues.yaml chartname
to override the default values with the ones specified in the myvalues.yaml
file.
example values.yaml
imageName: myApp
port: 8080
version: 1.0.0
example myvalues.yaml
version: 2.0.0
result will be
imageName: myApp
port: 8080
version: 2.0.0
commandline example:
helm install --set version=2.0.0 <chartname>
Release Manager
Depending on helm version.
Helm 2.0 had a client server setup, where a server (named tiller
) was installed on the kubernetes cluster and helm clients sent it charts that it then used to CRUD deployments (etc) with. Unfortunately this was seen as a security risk (a single service on the cluster that had the power to CRUD everything was a rpime target for malicious users, or even problematic if people made mistakes).
Instead, in helm 3.0 there is no tiller
service.
Helm can help rolling back to states because it keeps a record of previous states of the cluster.