Helm: ¿Se puede reemplazar una cadena en un archivo?

Creado en 15 may. 2018  ·  3Comentarios  ·  Fuente: helm/helm

Hola,
Tengo un problema cuando intento implementar un mapa de configuración usando helm. El problema se explica a continuación.
Supongamos que tengo un gráfico de timón que tiene la estructura de carpetas de la siguiente manera.

├── gráficos
├── Chart.yaml
├── conf
│ └── tee.xml
├── plantillas
│ └── ConfigMap.yaml
└── valores.yaml

tee.xml se muestra a continuación.

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

ConfigMap.yaml se muestra a continuación.

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

parte de los valores .yaml se muestra a continuación.
from: Shashi

Cuando ejecuto el comando helm install, quiero reemplazar el valor ${name} que se encuentra en el archivo tee.xml ( <from>${name}</from> ) de un valor que se establece en values.yaml. ¿Es esto posible usando helm y, si es posible, puede ayudarme a hacer los cambios relevantes?

questiosupport

Comentario más útil

Hola,

Pude encontrar la solución al problema anterior usando "reemplazar". He adjuntado los archivos de timón correspondientes a continuación.

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>

Parte de values.yaml
from: Cigra

Al ejecutar helm install podemos crear el mapa de configuración que se reemplaza con la clave "John "de la palabra" Cigra "

Por favor dime que esta es la forma correcta.

Todos 3 comentarios

Hola,

Pude encontrar la solución al problema anterior usando "reemplazar". He adjuntado los archivos de timón correspondientes a continuación.

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>

Parte de values.yaml
from: Cigra

Al ejecutar helm install podemos crear el mapa de configuración que se reemplaza con la clave "John "de la palabra" Cigra "

Por favor dime que esta es la forma correcta.

Si funciona, funciona. Usar replace para reemplazar cada instancia de una subcadena dentro de una cadena dada me suena sensato.

Estoy de acuerdo: usar replace parece una opción bastante buena en este caso.

@KavinduZoysa dado que esta solución funciona, permítanme seguir adelante y cerrar este problema. No dude en volver a abrir si esto no funcionó como se esperaba o si tiene alguna otra pregunta relacionada. ¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones