Как правило, .
в шаблонах Helm не имеет ничего общего с файлами или каталогами.
Язык шаблонов Helm использует систему Go text / template . Существует несколько различных способов появления символа точки.
Во-первых, .
может быть символом в строке:
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/* ^^^^^^^^^^^^
this is a literal string "config1.toml" */}}
...
{{- end }}
Во-вторых, .
может быть оператором поиска. В вашем вопросе нет примеров solid, но типичное использование - поиск значений. Если в вашем values.yaml
файле есть
root:
key: value
, вы можете развернуть
{{ .Values.root.key }}
, а .
перед root
и key
перемещается на один уровень вниз в структуре словаря. .
Третье использование и, возможно, то, которое вас сбивает с толку, заключается в том, что .
сам по себе является переменной.
{{ . }}
Вы можете выполнять поиск по нему в полях, и вы есть несколько примеров этого: .Files
совпадает с index . "Files"
и ищет поле «Файлы» на объекте .
.
Вы используете .
как переменную в нескольких местах:
{{- $files := .Files }} {{/* Get "Files" from . */}}
{{ . }} {{/* Write . as a value */}}
{{ include "mychart.app" . }} {{/* Pass . as the template parameter */}}
.
сложно в том, что он имеет некоторое контекстное значение:
- На верхнем уровне Helm инициализирует
.
как объект с ключами Files
, Release
, Values
и Chart
. - В шаблоне
define
d .
является параметром шаблона. (Поэтому, когда вы include
или template
, вам нужно передать .
в качестве этого параметра.) - В
range
l oop, .
- это текущий элемент, который повторяется. on. - В блоке
with
, .
является совпадающим элементом, если он существует.
В частности, взаимодействие с range
может быть сложным. Давайте посмотрим на упрощенную версию вашего l oop:
# {{ . }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
- {{ . }}
{{- end }}
За пределами range
l oop, .
, вероятно, является объектом Helm верхнего уровня. Но внутри range
l oop, .
находится имя файла (каждое значение из tuple
по очереди). Вот где вам нужно сохранить значения из .
в локальные переменные:
{{/* We're about to invalidate ., so save .Files into a variable. */}}
{{- $files := .Files }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/* This . is the filename from the "tuple" call */}}
{{ . }}: |-
{{/* Call .Get, from the saved $files, passing the filename .
as the parameter */}}
{{ $files.Get . }}
{{- end }}