Helm: ファイル内の文字列を置き換えることはできますか?

作成日 2018年05月15日  ·  3コメント  ·  ソース: helm/helm

こんにちは、
helmを使用してconfigmapをデプロイしようとすると、問題が発生します。 問題は次のように説明されます。
次のようなフォルダ構造のヘルムチャートがあるとしましょう。

├──チャート
├──Chart.yaml
├──conf
│└──tee.xml
├──テンプレート
│└──ConfigMap.yaml
└──values.yaml

tee.xmlを以下に示します。

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

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 $file.Lines $path }}
    {{ . }}
    {{- end }}
  {{- end }}

values.yamlの一部を以下に示します。
from: Shashi

helm installコマンドを実行するときに、tee.xmlファイル( <from>${name}</from> )にある値${name}をvalues.yamlに設定されている値から置き換えたいと思います。 これはヘルムを使用して可能ですか?可能であれば、関連する変更を行うのを手伝っていただけますか?

questiosupport

最も参考になるコメント

こんにちは、

「replace」を使用して、上記の問題の解決策を見つけることができました。 以下に関連するヘルムファイルを添付しました。

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>

values.yamlの一部
from: Cigra

helm installを実行することにより、キー "を置き換える構成マップを作成できます。ジョン 「「シグラ」という言葉から

これが正しい方法だと教えてください。

全てのコメント3件

こんにちは、

「replace」を使用して、上記の問題の解決策を見つけることができました。 以下に関連するヘルムファイルを添付しました。

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>

values.yamlの一部
from: Cigra

helm installを実行することにより、キー "を置き換える構成マップを作成できます。ジョン 「「シグラ」という言葉から

これが正しい方法だと教えてください。

それが機能する場合、それは機能します。 replaceを使用して、特定の文字列内の部分文字列のすべてのインスタンスを置き換えることは、私には理にかなっているように思えます。

私は同意します-この場合、 replaceを使用することはかなり良いオプションのように思えます。

@KavinduZoysaは、このソリューションが機能することを

このページは役に立ちましたか?
0 / 5 - 0 評価