1
votes

Ajout de lignes de nouvelles lors de la définition de la collection

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?


0 commentaires

3 Réponses :


1
votes

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.


0 commentaires

1
votes

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:

  1. Conservez chaque paire valeur / clé sur une ligne distincte, dans le fichier de valeurs globales pour plus de lisibilité:

---
# 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
  1. Définir un modèle d'assistance dans _helpers.tpl:

helm_data:
  {{- $global := default (dict) .Values.global -}}
  {{- range $key, $value := $global }}
    {{ $key }}: {{ $value }}
  {{- end }}
  {{ include "mychart.labels.standard" . | nindent 0 -}}
  1. Incluez-le dans un autre modèle:

{{- 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 -}}
  1. Rendez-le pour vérifier le résultat (modèle de barre - nom dict-chart.)

# values.yaml
  -- 
  global:
  someMap:
    coffee: robusta
    origin: Angola
    crema: yes


1 commentaires

Merci, c'est le hack que je cherchais.



2
votes

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


0 commentaires