web-dev-qa-db-fra.com

Comment passer la chaîne JSON entière à la valeur du graphique Helm?

Comment puis-je passer la chaîne JSON entière à une valeur de graphique Helm?

J'ai values.yml où la valeur de configuration doit contenir JSON entier avec une configuration d'une application

...
config: some JSON here
...

et je dois transmettre cette valeur à un modèle secret, puis la monter en tant que volume sur un module Kubernetes.

{{- $env := default "integration" .Values.env}}
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-{{ $env }}
type: Opaque
data:
  config.json: {{ .Values.config | b64enc | quote }}

Cependant, l'approche évidente consistant à passer une chaîne entre guillemets simple comme '{"redis": "localhost:6379"}' échoue parce que Helm pour une raison quelconque supprime tous les guillemets doubles dans la chaîne (même si je leur échappe), donc je me retrouve avec {redis: localhost:6379} qui n'est pas un JSON valide.

Existe-t-il une autre possibilité pour passer la configuration au pod à la fois sans charger les fichiers de modèle avec la fonction tpl et rendre tous les champs nécessaires accessibles via values.yml séparément?

5
Kostrahb

Voici une autre suggestion si vous souhaitez éviter l'encodage:

env:
  - name: MYCONFIG
  value: {{ .Files.Get "config.json" | toPrettyJson }}

Selon les helm docs , helm utilise des fonctions de modèle telles que toPrettyJson qui sont fournies par le package texte/modèle Go intégré et la bibliothèque de fonctions de modèle Sprig =.

0
Rose