Helm _helpers.tpl: 调用其他模板定义中定义的模板
Helm _helpers.tpl: Calling defined templates in other template definitions
头盔_helpers.tpl?
Helm 允许在 Kubernetes 的资源文件中使用 Go templating。
一个名为 _helpers.tpl
的文件通常用于使用以下语法定义 Go 模板助手:
{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}
然后您可以在 *.yaml
资源文件中使用它,如下所示:
{{ template "yourFnName" . }}
问题
如何在其他帮助器定义中使用我定义的帮助器?
例如,如果我有一个应用程序名称的助手,并且想在定义入口主机名的助手的定义中使用它怎么办?
我试过用几种不同的方式调用其他定义中的助手。给定这个基本的辅助函数:
{{- 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 -}}
您可以使用 (include ... )
语法。包含先前定义的模板的示例 foo
:
{{- define "bar" -}}
{{- printf "%s-%s" (include "foo" .) .Release.Namespace | trunc 63 | trimSuffix "-" -}}
{{- end -}}
头盔_helpers.tpl?
Helm 允许在 Kubernetes 的资源文件中使用 Go templating。
一个名为 _helpers.tpl
的文件通常用于使用以下语法定义 Go 模板助手:
{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}
然后您可以在 *.yaml
资源文件中使用它,如下所示:
{{ template "yourFnName" . }}
问题
如何在其他帮助器定义中使用我定义的帮助器?
例如,如果我有一个应用程序名称的助手,并且想在定义入口主机名的助手的定义中使用它怎么办?
我试过用几种不同的方式调用其他定义中的助手。给定这个基本的辅助函数:
{{- 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 -}}
您可以使用 (include ... )
语法。包含先前定义的模板的示例 foo
:
{{- define "bar" -}}
{{- printf "%s-%s" (include "foo" .) .Release.Namespace | trunc 63 | trimSuffix "-" -}}
{{- end -}}