Helm - 如何在循环中调用辅助函数?
Helm - how to call helper functions in a loop?
我正在尝试定义 n 个 StatefulSet,其中 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
几个 Go 模板结构将 .
的含义更改为正在循环的内容,您需要使用 $
来引用初始值。您的大部分模板都正确地引用了 ,例如 $.Release.Name
,但是当您调用辅助模板时,它使用的是当前上下文而不是根值。变化:
chart: {{ template "myapp-on-kube.chart" $ }}
(请注意,您拥有的模板将声明多个同名的 StatefulSet,这不会很顺利。我可能只创建一个带有 replicas: {{ .Values.nodeCount }}
的 StatefulSet。)
我正在尝试定义 n 个 StatefulSet,其中 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
几个 Go 模板结构将 .
的含义更改为正在循环的内容,您需要使用 $
来引用初始值。您的大部分模板都正确地引用了 ,例如 $.Release.Name
,但是当您调用辅助模板时,它使用的是当前上下文而不是根值。变化:
chart: {{ template "myapp-on-kube.chart" $ }}
(请注意,您拥有的模板将声明多个同名的 StatefulSet,这不会很顺利。我可能只创建一个带有 replicas: {{ .Values.nodeCount }}
的 StatefulSet。)