J'essaie de définir une collection ( dict
), et je voudrais ajouter une nouvelle ligne sur chaque définition (pour la lisibilité), par exemple:
Error: parse error in "XXX": template: XXX:2: unclosed action Error: UPGRADE FAILED: parse error in "XXX": template: XXX:2: unclosed action
Mais quand je fais cela, helm répond à une erreur d'analyse:
{{ $deployment := dict "Release" .Release "Chart" .Chart "Values" .Values }}
Y a-t-il un moyen dans HELM de faire cela?
3 Réponses :
Il semble impossible de le faire. Le système de modèles Helm est essentiellement le système de modèles Go. Comme indiqué dans la Go templating docs :
À l'exception des chaînes brutes, les actions ne peuvent pas couvrir les sauts de ligne, bien que les commentaires le puissent.
Il est impossible de déclarer dict de manière multiligne, comme avec l'opérateur Perl grosse virgule .
Veuillez consulter la référence de "Sprig: Fonctions de modèle pour les modèles Go". P >
À la place, vous pouvez utiliser ce type de méthode hacky pour obtenir un résultat similaire:
--- # Source: mychart/templates/data_type.yaml helm_data: someMap: map[crema:true origin:Angola coffee:robusta] Release: "dict-chart" Chart: mychart Values: coffee: robusta crema: true origin: Angol
helm_data: {{- $global := default (dict) .Values.global -}} {{- range $key, $value := $global }} {{ $key }}: {{ $value }} {{- end }} {{ include "mychart.labels.standard" . | nindent 0 -}}
{{- define "mychart.labels.standard"}} {{- $global := default (dict) .Values.global.someMap -}} Release: {{ .Release.Name | quote }} Chart: {{ .Chart.Name }} Values: {{- $global := default (dict) .Values.global.someMap -}} {{- range $key, $value := $global }} {{ $key }}: {{ $value }} {{- end }} {{- end -}}
# values.yaml -- global: someMap: coffee: robusta origin: Angola crema: yes
Merci, c'est le hack que je cherchais.
J'ai réussi cela en définissant d'abord le dict, puis en définissant une clé par ligne.
{{/* Hack needed until helm 3 which has 'get' for 'dict' */}} {{- $myValue3Var := pluck "myKey3" $myDict | first -}}
Conseil bonus: puisque la fonction dict get
est apparemment disponible uniquement dans helm3 et plus tard, vous pouvez utiliser ce hack pour obtenir une valeur d'un dict à une chaîne.
{{- $myDict := dict "" "" -}} {{- $_ := set $myDict "myKey1" "myValue1" -}} {{- $_ := set $myDict "myKey2" "myValue2" -}} {{- $_ := set $myDict "myKey3" "myValue3" -}} {{- $_ := set $myDict "myKey4" "myValue4" -}}