我在一个简单的模板中遇到了问题,我无法得到一个有效的解决方案。这是综合报道:
这是Helm自己创建的标准模板:
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "app.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}稍后,我想在这个模板中重用app.fullname:
{{- define "app.userSessionSelector" -}}
workload.user.cattle.io/workloadselector: deployment-{{ .Release.Namespace }}-{{ include "app.fullname" . }}-usersession
{{- end }}当我测试这个配置时,我得到:
Error: Failed to render chart: exit status 1: install.go:178: [debug] Original chart version: ""
install.go:195: [debug] CHART PATH: /home/user/helm/app
Error: template: app/templates/_helpers.tpl:70:81: executing "app.userSessionSelector" at <include "app.fullname" .>: error calling include: template: app/templates/_helpers.tpl:18:16: executing "app.fullname" at <$name>: invalid value; expected string
helm.go:84: [debug] template: app/templates/_helpers.tpl:70:81: executing "app.userSessionSelector" at <include "app.fullname" .>: error calling include: template: app/templates/_helpers.tpl:18:16: executing "app.fullname" at <$name>: invalid value; expected string令我困惑的是,为什么在$name模板进行评估并在项目中的不同地方使用时,app.fullname会出现问题。我敢打赌,这是在文档中解释的某个地方,或者是一个错误,但我无法找到原因。
顺便说一句:我使用的是Helm v3.9.2。
发布于 2022-10-25 08:51:04
这可能是由范围引起的。
$表示值的根。
在range循环(或with等)中,您应该使用。表示当前元素。
{{- define "app.userSessionSelector" -}}
workload.user.cattle.io/workloadselector: deployment-{{ .Release.Namespace }}-{{ include "app.fullname" $ }}-usersession
{{- end }}https://stackoverflow.com/questions/74178846
复制相似问题