Introduction
- Helm is like a package manager for K8s.
- A Chart is a Helm package.
- A Repository is a place where charts can be collected and shared.
- A Release is an instance of a chart running in a K8s cluster.
- Helm installs charts into K8s, creating a new release for each installation.
Usage
helm install is used to install a chart.
- Release names may be manually specified or automatically generated.
helm status <release-name> can be used to track the status of a release.
- A chart can be customized before installation. Run
helm show values <package> to see the available configuration options.
- The configuration options can be overridden with an YAML file. E.g.
helm install -f values.yaml <package>. You can also use the —set directive to set configuration values.
helm upgrade is used to upgrade to a new version of a chart.
helm rollback is used to rollback to a previous version of a chart.
- Useful options:
—timeout sets the wait for K8s commands to complete.
—wait waits until all pods are in a ready state.
—no-hooks skips running hooks.
helm uninstall <release> can be used to uninstall a particular release.
helm list shows all release records.
helm repo allows you to work with repositories. It has commands such as list, add, and remove.
helm create is used to create your own chart.
helm package is used to package the chart for distribution.
Templating
- Helm uses Go templates for templating.
- It includes the functions provided by the package sprig.
include lets you include another template.
required allows you to declare particular values as required for template rendering.
- Prefer quoting strings using
{{ .Values.Foo | quote }}.
tpl allows you to evaluate strings as templates inside a template.
- A
checksum/config annotation can be used to guarantee a Deployment is restarted when one of its ConfigMaps (i.e. an external dependency) changes.
- Any template that begins with an is not expected to output a Kubernetes manifest file. By convention, helper templates and partials are placed in a
_helpers.tpl file.
- Built-in objects are available, such as:
Release, related with the release and its state.
Values, which are the values passed from values.yaml.
Chart, which are the contents of Chart.yaml.
Files, to access any other type of file in the charts.
Capabilities, which provides information about the K8s cluster capabilities.
Template, which provides information about the current template being executed.