Image showing Propriétés multilignes dans kubernetes Helm avec ConfigMaps

Propriétés multilignes dans kubernetes Helm avec ConfigMaps

affiliate best offer

Summary

Il existe plusieurs API dans Kubernetes. Un ConfigMap est l’un d’entre eux. C’est un objet qui permet de stocker certaines données non confidentielles. Les données se présentent sous la forme de paires clé-valeur. Certains utilisent des variables d’environnement. Dans cet article de blog, nous verrons comment vous pouvez afficher des lignes à valeurs multiples.

En travaillant avec Kubernetes Helm, je suis allé à la documentation. Le lien vers la documentation est ici.

Dans la documentation de Helm v3, dans la section Accessing Files Inside Templates, vous avez un exemple de 3 fichiers de propriétés (toml) ; où chaque fichier n’a qu’une seule paire clé/valeur.

Le configmap.yaml ressemble à ceci. Il contient un config.toml pour plus de simplicité.

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-config
data:
  {{- $files := .Files }}
  {{- range tuple "config.toml" }}
  {{ . }}: |-
    {{ $files.Get . }}
  {{- end }}

J’en étais content. Ensuite, j’ajoute une deuxième ligne au fichier config.toml.

config.toml



replicaCount=1
foo=bar

Alors boum, j’obtiens une erreur :

INSTALLATION FAILED: YAML parse error on deploy/templates/configmap.yaml: error converting YAML to JSON: yaml: line 9: could not find expected ':'

En creusant dans cette erreur, j’ai trouvé une solution.

La solution

Helm lira dans ce fichier, mais comme il s’agit d’un moteur de création de modèles de texte, il ne comprend pas que j’essayais de composer un fichier YAML.

Par conséquent, cela ne m’aidait pas dans l’erreur.

C’est en fait pourquoi vous verrez tant de modèles dans la nature avec

{{ .thing | indent 8 }}

ou

{{ .otherThing | toYaml }}

– parce que vous devez aider Helm à savoir dans quel contexte il émet le texte.

Donc, dans mon cas spécifique, j’avais besoin d’indenter le filtre avec une valeur de 4 car mon modèle actuel a deux espaces pour le niveau d’indentation de la clé et deux autres espaces pour le scalaire du bloc de valeur

data:

  {{- $files := .Files }}
  {{- range tuple "config.toml" }}
  {{ . }}: |-
{{ $files.Get . | indent 4 }}
{{/* notice this ^^^ template expression is flush left,
because the 'indent' is handling whitespace, not the golang template itself */}}
  {{- end }}

J’espère que ce post rapide aidera quelqu’un dans ses recherches.

Inspiration de ce post.

Full Bright

Full Bright

A professional and sympathic business man.

Contact

Contact Us

To order one of our services, navigate to the order service page

Address

10 rue de Penthièvre,
75008 Paris

Email Us

hello at bright-softwares dot com

Open Hours

Monday - Friday
9:00AM - 05:00PM