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 -}}
これを行うことも可能ですか?もしそうなら、どのように?
ネストされたテンプレート定義 を使用する必要があります。
あなたの特定のケースでは:
{{- define "Host" -}}
{{ template "name" . }}.example.com
{{- end -}}
(include ... )
構文を使用できます。以前に定義されたテンプレートfoo
を含める例:
{{- define "bar" -}}
{{- printf "%s-%s" (include "foo" .) .Release.Namespace | trunc 63 | trimSuffix "-" -}}
{{- end -}}