Helm Variables

From NovaOrdis Knowledge Base
Jump to: navigation, search

External

Internal

Overview

A variable is a named reference to another built-in object or a constant. It is assigned and referred using the $<name> syntax. := is used as assignment operator.

{{- $relname := .Release.Name -}}
{{- $color := "green" -}}
...
data:
  release: {{ $relname }}
  color: {{ $color }}

Variables are less frequently used, as an alternative preferred construct is the named template.

Variable Scope

Variables are normally not "global". They are scoped to the block in which they are declared. However, there is one variable that is aways global: $. This variable will always point to the root context:

{{ $.Chart.AppVersion }}

Variables and Range Loops

Variables are particularly useful in range loops. They can be used on list-like objects to capture both the index and the value:

toppings: |-
  {{- range $index, $topping := .Values.pizzaToppings }}
    {{ $index }}: {{ $topping }}
  {{- end }}

This will assign the integer index (0-based) to $index and the value to $topping. For data structures that have both key and value, range can be used to get both and assign them to variables:

{{- range $key, $val := .Values.favorite }}
{{ $key }}: {{ $val | quote }}
{{- end }}