Helm _helpers.tpl: Calling defined templates in other template definitions

我是研究僧i 提交于 2019-12-03 16:29:09

问题


Helm _helpers.tpl?

Helm allows for the use of Go templating in resource files for Kubernetes.

A file named _helpers.tpl is usually used to define Go template helpers with this syntax:

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

Which you can then use in your *.yaml resource files like so:

{{ template "yourFnName" . }}

The Question

How can I use the helpers I define, in other helper definitions?

For example, what if I have a helper for the application name, and want to use that in the definition for a helper which determines the ingress host name?

I have tried calling helpers in other definitions a couple different ways. Given this basic helper function:

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

I have tried the following:

{{- 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 -}}

Is it possible to even do this? If so, how?


回答1:


You should use Nested template definitions.

In your particular case it is:

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



回答2:


You can use (include ... ) syntax. Example of including previously defined template foo:

{{- define "bar" -}}
{{- printf "%s-%s" (include "foo" .) .Release.Namespace | trunc 63 | trimSuffix "-" -}}
{{- end -}}


来源:https://stackoverflow.com/questions/46719082/helm-helpers-tpl-calling-defined-templates-in-other-template-definitions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!