в чем разница между {{- range .Values.xxx}} и {{range .Values.xxx}} у руля - PullRequest
0 голосов
/ 30 марта 2020

Я могу одновременно использовать

{{- range .Values.xxx }}

и

{{ range .Values.xxx }}

в моем шлеме, и результат будет одинаковым. они совершенно одно и то же? Дефис не нужен?

1 Ответ

0 голосов
/ 02 апреля 2020

Дефис удаляет все пробелы, смежные с шаблонной конструкцией. Зачастую это не является строго необходимым, но делает отображаемый вывод более читаемым. Поскольку 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, так что вы можете увидеть, к чему эти вещи расширяются .)

...