Текстовая / шаблонная документация Go намекает на фактическое сообщение об ошибке: в выражениях .Values.foo.bar
каждая часть должна быть действительным именем Go, которое не может содержать дефисы. Обычно имена значений имеют camelCased, поэтому вы можете изменить и ссылку на переменную, и имя значения на admUsers
(заглавная "U", без дефиса).
Несколько слоев tpl
сбивают с толку ивероятно, не нужно, если ваши userName
и password
всегда будут простыми строками. От вас также не требуется назначать итератор range
чему-либо, и (в отличие от стандартного Go), если вы назначите только одну переменную, это будет значение.
Я, вероятно, записал бы этот цикл как:
{{/* Protect against .Values.ere being missing entirely */}}
{{- $ere := .Values.ere | default dict -}}
{{- range $ere.admUsers }}
<User Name="{{ .userName }}" Password="{{ .password }}" />
{{- end }}
Если вы хотите, чтобы можно было поместить синтаксис шаблона в файл values.yaml
для имен пользователей и паролей, вам необходимо создать соответствующее выражение для tpl
;вы не можете вложить синтаксис шаблона так, как вы его показали.
{{- $top := . -}}
{{- $ere := .Values.ere | default dict -}}
{{- range $ere.admUsers }}
<User Name="{{ tpl .userName $top }}" Password="{{ tpl .password $top }}" />
{{- end }}
Если вы хотите создать строку, подобную {{ .userName }}
, и оценить ее, вы могли бы , но вьющиесяБрекеты в шаблонах становятся хитрыми. Я думаю, что внутреннее тело вашего цикла эквивалентно моей первой форме (в конечном итоге оно печатает userName
и password
каждого элемента в цикле).