Helm 模板:设置多个键值对

问题描述 投票:0回答:1

我想使用 --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 命令应该是什么来传递键值对列表?

kubernetes kubernetes-helm
1个回答
0
投票

根据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"
) 可以防止出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.