使用头盔模板语言避免重复的全局变量

问题描述 投票:0回答:1

我是掌舵人和掌舵模板语言的新手。我的_helper.tpl中包含以下内容:

{{/*
Get couchdb password
*/}}
{{- define "couchdb.password" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "'@refsec/couchdb-%s/adminPassword'" $name -}}
{{- end -}}

{{/* 
Get couchdb username 
*/}}
{{- define "couchdb.username" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "'@refsec/couchdb-%s/adminUsername'" $name -}}
{{- end -}}

但是这段代码有问题。重复!!如您所见,此行重复了2次:{{- $name := default .Chart.Name .Values.nameOverride -}}

我可以为这些情况定义一个全局变量a并一遍又一遍地重复使用它吗?

kubernetes kubernetes-helm
1个回答
0
投票

原则上,您可以只为那一行定义模板

{{- define "couchdb.chart.name" -}}
{{- default .Chart.Name .Values.nameOverride -}}
{{- end -}}

但是调用它的语法实际上并不短

{{- define "couchdb.password" -}}
{{- $name := include "couchdb.chart.name" . -}}
{{- printf "'@refsec/couchdb-%s/adminPassword'" $name -}}
{{- end -}}

{{- define "couchdb.username" -}}
{{- printf "'@refsec/couchdb-%s/adminUsername'" (include "couchdb.chart.name" .) -}}
{{- end -}}

我很确定Go文本/模板语言没有您在此处建议的形式的全局变量。 documentation描述了变量的语法和调用,但包含了一些隐晦的注释

模板调用不会从调用点继承变量。

而且我认为通过阅读其他上下文,没有“全局范围”那么多,而是“主要模板”。

无论如何,我从未在Helm图表中看到过全局变量,甚至您在问题中显示的形式的变量也有点不寻常。

© www.soinside.com 2019 - 2024. All rights reserved.