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" . }}
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?
Vous devez utiliser définitions de modèles imbriqués .
Dans votre cas particulier, c'est:
{{- define "Host" -}}
{{ template "name" . }}.example.com
{{- end -}}
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 -}}