web-dev-qa-db-ja.com

Helm _helpers.tpl:他のテンプレート定義の定義済みテンプレートの呼び出し

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" . }}

質問

定義したヘルパーを他のヘルパー定義で使用するにはどうすればよいですか?

たとえば、アプリケーション名のヘルパーがあり、入力ホスト名を決定するヘルパーの定義でそれを使用する場合はどうなりますか?

他の定義のヘルパーをいくつかの異なる方法で呼び出してみました。この基本的なヘルパー関数を考えます:

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

これを行うことも可能ですか?もしそうなら、どのように?

12
Noah Huppert

ネストされたテンプレート定義 を使用する必要があります。

あなたの特定のケースでは:

{{- define "Host" -}}
{{ template "name" . }}.example.com
{{- end -}}
7
Nickolay

(include ... )構文を使用できます。以前に定義されたテンプレートfooを含める例:

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