Helm is a tool for managing packages (i.e. charts) of templated Kubernetes resources.
Helm simplifies deploying a set of related Kubernetes resources by defining a standard directory structure to hold a set of YAML files, by adding a templating system to produce the actual Kubernetes resources, and by allowing prepackaged applications or components to be directly imported or installed.
The Go text/template engine allows values to be filled into Kubernetes YAML files. In a typical chart, templates/database_statefulset.yaml
might contain the fragment:
containers:
- name: mysql
image: "{{ .Values.image }}:{{ .Values.tag }}"
values.yaml
would provide default values for these settings:
image: mysql
tag: latest
When you install the chart, you can provide specific values for these settings.
helm install . --set tag=5.6
This tag is appropriate for most questions about Helm, including questions about the templating system and the command-line tool. It will frequently also be appropriate to tag questions as kubernetes related, and many questions relate to the more general go-templates system. Do not tag questions as helm; that is for a different tool.
External links
- Helm documentation
- Go text/template documentation: all of the syntax before the actual Go code documentation is allowed in Helm templates
- Sprig function documentation: almost all of these extension functions are also available in Helm templates
- Helm charts: Curated applications for Kubernetes: prepackaged applications that can be directly installed or used as dependencies