Дефис удаляет все пробелы, смежные с шаблонной конструкцией. Зачастую это не является строго необходимым, но делает отображаемый вывод более читаемым. Поскольку YAML чувствителен к пробелам, иногда это требуется.
Basi c пример:
environment:
{{ range .Values.xxx }}
- { name: {{ . }}, value: "test" }
{{ end }}
Отображает в:
environment:
- { name: a, value: "test" }
- { name: b, value: "test" }
В строке range
после }}
и до -
- перевод строки и два пробела; они необходимы для того, чтобы быть действительным YAML. Перед обоими {{
есть дополнительный символ новой строки, и это не требуется, поэтому вы можете использовать {{-
для его подавления.
environment:
{{- range .Values.xxx }}
- { name: {{ . }}, value: "test" }
{{- end }}
environment:
- { name: a, value: "test" }
- { name: b, value: "test" }
Это также полезно для таких функций, как nindent
, которые включают свои собственные новые строки.
items: {{- .Values.xxx | toYaml | nindent 2 }}
items:
- a
- b
toYaml
преобразует список [a, b]
в строку YAML - a\n- b
; nindent 2
добавляет начальный символ новой строки и два пробела в начале каждой строки \n - a\n - b
; а затем -
удаляет лишний пробел перед новой строкой, которая испускается.
Вы также можете поместить -
в закрывающий }}
, с тем же эффектом, но это, как правило, съедает следующее Отступ строки, поэтому он имеет тенденцию быть немного менее полезным.
(Помните, что helm template
будет отображать диаграмму на стандартный вывод, не отправляя ее на сервер API Kubernetes, так что вы можете увидеть, к чему эти вещи расширяются .)