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?
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 "
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!
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
tee.xml
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?