Helm 不合并一系列秘密

Rad*_*ad4 6 kubernetes-helm

我正在尝试合并具有秘密数组的多个值文件。但是合并不起作用,而是最后一个值文件覆盖。这是我的秘密模板

---
{{- range  .Values.secrets }}
---
apiVersion: v1
kind: Secret
metadata:
   name: {{ required "a valid name is required" .name }}
   namespace: ""
type: Opaque
data:
   {{- range $key, $val := .data }}
     # fix printing the key name in the required string
     {{ $key }}: {{ required "a valid key is required" $val }}
   {{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

value1.yaml:

secrets:
- name: "sample"
 data:
   test: "YXBpa2V5MQo="
Run Code Online (Sandbox Code Playgroud)

value2.yaml:

- name: "sample2"
 data:
   test: "YXBpa2V5MQo="

helm template secrets-template -f value1.yaml -f value2.yaml
Run Code Online (Sandbox Code Playgroud)

输出是

---

apiVersion: v1
kind: Secret
metadata:
   name: sample2
   namespace: ""
type: Opaque
data:
     # fix printing the key name in the required string
     test: YXBpa2V5MQo=
Run Code Online (Sandbox Code Playgroud)

但预期输出是

---
apiVersion: v1
kind: Secret
metadata:
   name: sample
   namespace: ""
type: Opaque
data:
     # fix printing the key name in the required string
     test: YXBpa2V5MQo=
---
apiVersion: v1
kind: Secret
metadata:
   name: sample2
   namespace: ""
type: Opaque
data:
     # fix printing the key name in the required string
     test: YXBpa2V5MQo=
Run Code Online (Sandbox Code Playgroud)

对此有什么帮助吗?

Áng*_*ela 6

据我所知,helm 总是覆盖数组。解决方法是使用字典。例如,使用机密的名称作为密钥。

模板:

---
{{- range  $secretName, $secretValue := .Values.secrets }}
---
apiVersion: v1
kind: Secret
metadata:
   name: {{ required "a valid name is required" $secretName }}
   namespace: ""
type: Opaque
data:
   {{- range $key, $val := $secretValue }}
     # fix printing the key name in the required string
     {{ $key }}: {{ required "a valid key is required" $val }}
   {{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

value1.yaml

secrets:
 sample: 
   test: "YXBpa2V5MQo="
Run Code Online (Sandbox Code Playgroud)

value2.yaml

secrets:
 sample2: 
   test: "YXBpa2V5MQo="
Run Code Online (Sandbox Code Playgroud)