Helm: Peut remplacer une chaîne dans un fichier?

Créé le 15 mai 2018  ·  3Commentaires  ·  Source: helm/helm

Salut,
Je rencontre un problème lorsque j'essaye de déployer une configuration en utilisant helm. Le problème est expliqué comme suit.
Supposons que j'ai un diagramme de barre qui a la structure de dossier comme suit.

├── graphiques
├── Chart.yaml
├── conf
│ └── tee.xml
├── modèles
│ └── ConfigMap.yaml
└── values.yaml

tee.xml est illustré ci-dessous.

<note>
<to>Tove</to>
<from>${name}</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

ConfigMap.yaml est illustré ci-dessous.

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $file.Lines $path }}
    {{ . }}
    {{- end }}
  {{- end }}

une partie de values.yaml est affichée ci-dessous.
from: Shashi

Lorsque j'exécute la commande helm install, je souhaite remplacer la valeur ${name} qui se trouve dans le fichier tee.xml ( <from>${name}</from> ) par une valeur définie dans values.yaml. Est-ce possible avec la barre et si c'est possible pouvez-vous m'aider s'il vous plaît à faire les changements nécessaires?

questiosupport

Commentaire le plus utile

Salut,

J'ai pu trouver la solution au problème ci-dessus en utilisant "remplacer". J'ai joint les fichiers de barre pertinents ci-dessous.

ConfigMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $line := $file.Lines $path }}
    {{ $line | replace "John" $var }}
    {{- end }}
  {{- end }}

tee.xml

<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Fait partie de values.yaml
from: Cigra

En exécutant helm install, nous pouvons créer la carte de configuration qui remplace la clé "John "du mot" Cigra "

S'il vous plaît dites-moi que c'est la bonne façon?

Tous les 3 commentaires

Salut,

J'ai pu trouver la solution au problème ci-dessus en utilisant "remplacer". J'ai joint les fichiers de barre pertinents ci-dessous.

ConfigMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $line := $file.Lines $path }}
    {{ $line | replace "John" $var }}
    {{- end }}
  {{- end }}

tee.xml

<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Fait partie de values.yaml
from: Cigra

En exécutant helm install, nous pouvons créer la carte de configuration qui remplace la clé "John "du mot" Cigra "

S'il vous plaît dites-moi que c'est la bonne façon?

Si ça marche, ça marche. Utiliser replace pour remplacer chaque instance d'une sous-chaîne dans une chaîne donnée me semble judicieux.

Je suis d'accord - utiliser replace semble être une très bonne option dans ce cas.

@KavinduZoysa étant donné que cette solution fonctionne, laissez-moi terminer ce problème. N'hésitez pas à rouvrir si cela n'a pas fonctionné comme prévu ou si vous avez d'autres questions connexes. Merci!

Cette page vous a été utile?
0 / 5 - 0 notes