我想使用 --set-string 在 helm 图表中动态注入多个键值对。这就是我想要实现的最终目标:
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap1
data:
key1: "value1"
key2: "Value2"
以下内容是动态注入的:
key1: "value1"
key2: "value2"
因此,如果注入三个键值对,它将呈现为:
key1: "value1"
key2: "value2"
key3: "value3"
到目前为止,我的模板 yaml 文件中有这个:
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap1
data:
{{- range $env_key, $env_value := .Values.env }}
{{ $env_key }}: "{{ $env_value }}"
{{- end }}
当它从values.yaml 文件中获取 env 的默认值时,效果很好:
env:
key1: "value1"
key2: "Value2"
这就是它的样子:
bash-3.2$ helm template my-helmchart
---
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap1
data:
key1: "value1"
key2: "Value2"
bash-3.2$
但我想使用 --set-string 注入它。这不起作用:
bash-3.2$ helm template workflow-helmchart --set-string env={key1:value1\,key2:value2}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap1
data:
0: "key1:value1"
1: "key2:value2"
bash-3.2$
有什么想法吗?我的 helm template --set-string 命令应该是什么来传递键值对列表?
根据helm template命令的文档:
--set-string stringArray
:在命令行上设置字符串值(可以用逗号指定多个或单独的值:key1=val1,key2=val2
)所以代替:
helm template workflow-helmchart --set-string env={key1:value1\,key2:value2}
尝试:
helm template workflow-helmchart --set-string --set-string env.key1="value1",env.key2="value2"
请注意,如果值包含空格或特殊字符,使用双引号 (
env.key1="value1"
) 可以防止出现问题。