Переменные шаблона Helm равны нулю - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь использовать шаблон, чтобы получить значения из values.yaml, объединить их в список CSV. Вот пример моего решения.

values.yaml:

testValue1: "string1"
testValue2: "String2"
credentials: 
- c1: "string3"
- c2: "string4"

_helpers.tpl:

{{- define "test.template" -}}
{{- $value1 := .Values.testValue1 -}}
{{- $value2 := .Values.testValue2 -}}
{{- $credentials := "" -}}
{{- range $index, $cred := .Values.credentials -}}
{{- $credentials = $cred "," $credentials -}}
{{- end -}}
{{- printf "%s,%s,%s" $value1 $value2 $credentials -}}
{{- end -}}

test.yaml

templatedValue: {{ template "test.template" }}

Когда я запускаю helm template --output-dir outputs chart Я получаю:

test.yaml

templatedValue: %!s(<nil>),%!s(<nil>),

обе переменные, которые я устанавливаю в качестве значений, равны нулю, а credentials - просто пустая строка. Если я помещаю значения в values.yaml прямо в файл test.yaml, он работает нормально. Поэтому я не уверен, почему я получаю эти нулевые значения из шаблона. В _helpers.tpl есть другие шаблоны, которые получают значения из файла values.yaml, поэтому я не уверен, почему мой шаблон не работает. Любая помощь с благодарностью.

helm version: 
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

1 Ответ

2 голосов
/ 30 января 2020

Действие {{ template "test.template" }} выполняет шаблон "test.template", но не передает ему никаких параметров. Таким образом, внутри test.template конвейер будет <nil>, поэтому .Values недействителен.

Цитирование из text/template:

{{template "name"}}
  The template with the specified name is executed with nil data.

{{template "name" pipeline}}
  The template with the specified name is executed with dot set
  to the value of the pipeline.

Вы должны передать что-то в {{template}}. Если у вас нет другой информации, что передать, попробуйте передать точку ., текущий конвейер.

{{ template "test.template" . }}
...