Helm: Pode substituir string em um arquivo?

Criado em 15 mai. 2018  ·  3Comentários  ·  Fonte: helm/helm

Oi,
Estou tendo um problema ao tentar implantar um configmap usando o helm. O problema é explicado a seguir.
Vamos supor que eu tenha o gráfico do leme com a estrutura de pastas a seguir.

├── gráficos
├── Chart.yaml
├── conf
│ └── tee.xml
├── modelos
│ └── ConfigMap.yaml
└── values.yaml

tee.xml é mostrado abaixo.

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

ConfigMap.yaml é mostrado abaixo.

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 values.yaml é mostrada abaixo.
from: Shashi

Quando executo o comando helm install, desejo substituir o valor ${name} que está localizado no arquivo tee.xml ( <from>${name}</from> ) de um valor definido em values.yaml. Isso é possível usando o leme e, se for possível, você pode me ajudar a fazer as alterações relevantes?

questiosupport

Comentários muito úteis

Oi,

Consegui encontrar a solução para o problema acima usando "substituir". Anexei os arquivos de leme relevantes abaixo.

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

Ao executar o helm install, podemos criar o mapa de configuração que é substituído pela chave "João "da palavra" Cigra "

Por favor, diga-me que esta é a maneira correta?

Todos 3 comentários

Oi,

Consegui encontrar a solução para o problema acima usando "substituir". Anexei os arquivos de leme relevantes abaixo.

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

Ao executar o helm install, podemos criar o mapa de configuração que é substituído pela chave "João "da palavra" Cigra "

Por favor, diga-me que esta é a maneira correta?

Se funcionar, funciona. Usar replace para substituir cada instância de uma substring dentro de uma determinada string parece sensato para mim.

Eu concordo - usar replace parece uma boa opção neste caso.

@KavinduZoysa dado que esta solução funciona, deixe-me ir em frente e encerrar este problema. Sinta-se à vontade para reabrir se não funcionar como esperado ou se você tiver outras perguntas relacionadas. Obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações