首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Helm3:在模板中包含模板的问题

Helm3:在模板中包含模板的问题
EN

Stack Overflow用户
提问于 2022-10-24 09:08:48
回答 1查看 75关注 0票数 1

我在一个简单的模板中遇到了问题,我无法得到一个有效的解决方案。这是综合报道:

这是Helm自己创建的标准模板:

代码语言:javascript
复制
{{/*
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

代码语言:javascript
复制
{{- define "app.userSessionSelector" -}}
workload.user.cattle.io/workloadselector: deployment-{{ .Release.Namespace }}-{{ include "app.fullname" . }}-usersession
{{- end }}

当我测试这个配置时,我得到:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2022-10-25 08:51:04

这可能是由范围引起的。

$表示值的根。

range循环(或with等)中,您应该使用。表示当前元素。

代码语言:javascript
复制
{{- define "app.userSessionSelector" -}}
workload.user.cattle.io/workloadselector: deployment-{{ .Release.Namespace }}-{{ include "app.fullname" $ }}-usersession
{{- end }}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74178846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档