Skip to main content

Go templates

Элементы шаблонизации заключены в двойные фигурные скобки, остальные - статический текст. Элементы шаблонизации могут включать переменные, условия, циклы, функции.

Конструкция {{- удаляет строку в которой функция.

Условия: 

{{ if ConditionOne }}
# Do something
{{ else if ConditionTwo }}
# Do something else
{{ else }}
# Default case
{{ end }}
{{ if eq .Values.favorite.drink "coffee" }}mug: "true"{{ end }}

With

Работает так же как и в python 

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  {{- with .Values.favorite }}
  drink: {{ .drink | default "tea" | quote }}
  food: {{ .food | upper | quote }}
  {{- end }}

Циклы

values.yaml: 

favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions
  - pineapple

cur.yaml: 

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  {{- with .Values.favorite }}
  drink: {{ .drink | default "tea" | quote }}
  food: {{ .food | upper | quote }}
  {{- end }}
  toppings: |-
    {{- range .Values.pizzaToppings }}
    - {{ . | title | quote }}
    {{- end }}  

Функции:

Можно использовать pipeline: {{ .Values.favorite.drink | quote }}

Функция Описание
quote Добавляет кавычки 
{{ quote .Values.favorite.food }}

upper В верхний регистр
repeat n

Повтор значения n раз 

{{ .Values.favorite.drink | repeat 5 | quote }}

default "some_hy"

Присвоить значение по умолчанию если отсутствует 

drink: {{ .Values.favorite.drink | default "tea" | quote }}
eq, ne, lt, gt, and, or

Логические функции

indent n

Поставить n пробелов перед конструкцией

Список функций

Именованные шаблоны

С шаблонами нужно запускать 

helm install --dry-run --disable-openapi-validation

Шаблон внутри файла:

{{- define "mychart.labels" }}
  labels:
    generator: helm
    date: {{ now | htmlDate }}
    chart: {{ .Chart.Name }}
    version: {{ .Chart.Version }}
{{- end }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
  {{- template "mychart.labels" . }}

Точка означает передачу внутрь шаблона всех переменных.