Хелм - как вызвать вспомогательные функции в цикле? - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь определить n StatefulSets, где n - количество требуемых узлов, установленных в values.yaml как nodeCount. Я получаю сообщение об ошибке, связанное с областью действия, но не могу разобраться с областью действия. Я что-то здесь упускаю?

Соответствующее содержимое в моем файле StatefulSet .yaml:

{{ range $k, $v := until ( .Values.nodeCount | int) }}
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: {{ $.Release.Name }}  
  labels:
    app: {{ $.Release.Name }}
    chart: {{ template "myapp-on-kube.chart" . }}  #here's my call to _helpers
    release: {{ $.Release.Name }}
    heritage: {{ $.Release.Service }}

Соответствующее содержимое в _helpers.tpl:

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "myapp-on-kube.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

Я получаю ошибку:

Error: render error in "myapp-on-kube/templates/statefulset.yaml": template: myapp-on-kube/templates/_helpers.tpl:31:25: executing "myapp-on-kube.chart" at <.Chart.Name>: can't evaluate field Chart in type int

1 Ответ

0 голосов
/ 05 ноября 2018

Некоторые из шаблонных конструкций Go изменяют значение . на то, что зацикливается, и вам нужно использовать $ для ссылки на начальное значение. Большая часть вашего шаблона правильно ссылается на , например, $.Release.Name, но когда вы вызываете вспомогательный шаблон, он использует текущий контекст, а не корневое значение. Изменения:

chart: {{ template "myapp-on-kube.chart" $ }}

(Обратите внимание, что шаблон, который у вас есть, объявляет несколько наборов StatefulSet с одинаковым именем, что не очень хорошо. Я мог бы создать только один StatefulSet с replicas: {{ .Values.nodeCount }}.)

...