Helm: 可以替换文件中的字符串吗?

创建于 2018-05-15  ·  3评论  ·  资料来源: 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命令时,我想从values.yaml中设置的值替换位于tee.xml文件( <from>${name}</from> )中的值${name} 。 可以使用头盔吗?如果可以,请您帮我进行相关更改吗?

questiosupport

最有用的评论

你好,

我可以使用“替换”找到上述问题的解决方案。 我已在下面附上了相关的头盔文件。

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,我们可以创建配置映射,该配置映射将替换为“约翰 ”中的“ Cigra”一词

请告诉我这是正确的方法吗?

所有3条评论

你好,

我可以使用“替换”找到上述问题的解决方案。 我已在下面附上了相关的头盔文件。

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,我们可以创建配置映射,该配置映射将替换为“约翰 ”中的“ Cigra”一词

请告诉我这是正确的方法吗?

如果可行,则可行。 使用replace替换给定字符串中子字符串的每个实例对我来说都是明智的。

我同意-在这种情况下,使用replace听起来是一个不错的选择。

鉴于此解决方案有效, @ KavinduZoysa让我继续解决此问题。 如果此操作与预期不符,或者您有任何其他相关问题,请随时重新打开。 谢谢!

此页面是否有帮助?
0 / 5 - 0 等级