Helm _helpers.tpl?

Helm允许在Kubernetes的资源文件中使用Go templating.

名为_helpers.tpl的文件通常用于定义具有以下语法的GO模板帮助器:

{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}

然后您可以在您的*.yaml个资源文件中使用它,如下所示:

{{ template "yourFnName" . }}

The Question

如何使用我在其他帮助器定义中定义的帮助器?

例如,如果我有一个用于应用程序名称的帮助器,并且希望在确定入口主机名的帮助器的定义中使用该帮助器,该怎么办?

我try 过用其他几种不同的方式给助手打电话.鉴于这一基本辅助功能:

{{- define "host" -}}
{{- printf "%.example.com" <Somehow get result of "name" helper here> -}}
{{- end -}}

我试过以下几种方法:

{{- printf "%.example.com" {{ template "name" . }} -}}
{{- printf "%.example.com" {{- template "name" . -}} -}}
{{- printf "%.example.com" ( template "name" . ) -}}
{{- printf "%.example.com" template "name" . -}}
# Separator
{{- $name := {{ template "environment" . }} -}}
{{- printf "%.example.com" $name -}}
# Separator
{{- $name := template "environment" . -}}
{{- printf "%.example.com" $name -}}
# Separator
{{- $name := environment -}}
{{- printf "%.example.com" $name -}}

有没有可能做到这一点呢?如果是这样的话,是如何做到的呢?

推荐答案

你应该用Nested template definitions.

在你的特殊情况下:

{{- define "host" -}}
{{ template "name" . }}.example.com
{{- end -}}

Go相关问答推荐

Golang regexpp:获取带有右括号的单词

macOS上GoLand 2023.3.4中的代码导航

为什么Slices包中的函数定义Slice参数的类型参数?

Golang使用Run()执行的命令没有返回

如何用Golang解码这个嵌套的json?

我们如何保证取消的上下文会导致 goroutine 终止?

如何使用 sync.WaitGroup 来执行所有的 goroutine?

使用 Go Colly 抓取所有可能的标签并将它们放入一个变量中

如何使用名称具有包名称的嵌套 struct 启动 go struct

如何匹配两次出现的相同但随机字符串之间的字符

emersion/go-imap - imap.FetchRFC822:无效内存地址或零指针取消引用

访问传递给可变参数函数的通用 struct 的特定字段

CBC Decrypter 解密加密文本,但部分文本被随机字符替换

将shell输出绑定到Go中的 struct 的最佳方法?

在 docker kill --signal=SIGX 上以这种方式关闭容器内运行的 go 应用程序是否安全?

Golang prometheus 显示自定义指标

正确编码 JWT

测试包外文件时的 Golang 测试覆盖率

go mod tidy 错误消息:但是 go 1.16 会 Select

如何允许可转换为指针的泛型类型参数化另一种可转换为指针的泛型类型?