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 | Добавляет кавычки
|
upper | В верхний регистр |
repeat n |
Повтор значения n раз
|
default "some_hy" |
Присвоить значение по умолчанию если отсутствует
|
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" . }}
Точка означает передачу внутрь шаблона всех переменных.