Kubernetes 头盔设置选项(-Set)|更新数组的第n个键值

Kubernetes 头盔设置选项(-Set)|更新数组的第n个键值,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我的配置映射模板 apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.configmap.name }} binaryData: {{- range .Values.configmap.binaryData }} {{ .key }}: {{ .value }} {{- end }} 设置configmap的Myvalues.yaml如下所示 ... configmap: name: foo bin

我的配置映射模板

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.configmap.name }}
binaryData:
  {{- range .Values.configmap.binaryData }}
  {{ .key }}: {{ .value }}
  {{- end }}
设置configmap的My
values.yaml
如下所示

...
configmap:
    name: foo
    binaryData:
    - key: file1
      value: something_as_base64
    - key: file2
      value: something_as_base64
    - key: file3
      value: something_as_base64
...
工作原理:我可以设置所有数组项

helm upgrade foo_name bar_dir \
--set configmap.binaryData[0].key=file1 --set configmap.binaryData[0].value=xyz \
--set configmap.binaryData[1].key=file2 --set configmap.binaryData[1].value=xyz \
--set configmap.binaryData[N].key=file2 --set configmap.binaryData[N].value=xyz
什么不起作用:更新file2的值(数组[N]),只更新一项

helm upgrade foo_name bar_dir \
--set configmap.binaryData[1].key=file2 --set configmap.binaryData[1].value=xyz \
错误

错误:升级失败:模板:foo-helm/templates/configmap.yaml:x:y:在:nil指针求值接口{}.key处执行“foo-helm/templates/configmap.yaml”
  • 是否有专门更新数组第n项的语法
  • 另外,如果my values.yaml在数组中有5项,并且我设置了数组[0],那么[1-4]将被截断
    • 从这个头盔看来,这是不可能的。解决方法是使用map,或者使用不同数组的seprate文件,请参阅

      Error: UPGRADE FAILED: template: foo-helm/templates/configmap.yaml:x:y: executing "foo-helm/templates/configmap.yaml" at <.key>: nil pointer evaluating interface {}.key