web-dev-qa-db-fra.com

Helm _helpers.tpl: Appel de modèles définis dans d'autres définitions de modèles

Helm _helpers.tpl?

Helm permet l'utilisation de Go templating dans les fichiers de ressources pour Kubernetes.

Un fichier nommé _helpers.tpl est généralement utilisé pour définir les assistants de modèle Go avec cette syntaxe:

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

Que vous pourrez ensuite utiliser dans votre *.yaml fichiers de ressources comme ceci:

{{ template "yourFnName" . }}

La question

Comment puis-je utiliser les assistants que je définis, dans d'autres définitions d'aide?

Par exemple, que se passe-t-il si j'ai un assistant pour le nom de l'application et que je souhaite l'utiliser dans la définition d'un assistant qui détermine le nom d'hôte d'entrée?

J'ai essayé d'appeler des aides dans d'autres définitions de deux manières différentes. Compte tenu de cette fonction d'assistance de base:

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

J'ai essayé ce qui suit:

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

Est-il même possible de faire cela? Si c'est le cas, comment?

12
Noah Huppert

Vous devez utiliser définitions de modèles imbriqués .

Dans votre cas particulier, c'est:

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

Vous pouvez utiliser (include ... ) syntaxe. Exemple d'inclusion d'un modèle précédemment défini foo:

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