# 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 пробелов перед конструкцией
[Список функций](https://helm.sh/docs/chart_template_guide/function_list/) **Именованные шаблоны** С шаблонами нужно запускать ``` helm install --dry-run --disable-openapi-validation ``` Шаблон внутри \_helpers.tpl файла: ``` {{- define "first.labels" -}} labels: 'app.kubernetes.io/instacce': {{ .Release.Name }} 'app.kubernetes.io/managed-by': {{ .Release.Service }} {{- end }} {{- define "first.nameofchart" -}} {{- printf "mycurname" -}} {{ - end }} ``` ``` apiVersion: v1 kind: ConfigMap metadata: name: {{ include "first.nameofchart" . }} {{- include "first.labels" . | nindent 2 }} data: myvalue: "Hello World" food: {{ .Values.favourite.food }} drink: {{ .Values.favourite.drink }} ``` Точка означает передачу внутрь шаблона всех переменных. Разница между include и template: проще использовать include, template не дает использовать дополнительные функции через pipeline