Helm Chart中如何配置多个同名Key且不触发重复键报错
你遇到的重复键错误是YAML语法本身的限制:同一层级下不允许出现完全相同的键名,你当前在values文件的envFrom映射下重复定义了3次secretRef键,Helm在解析YAML阶段就会直接抛出错误,和键内部的name字段是否加编号无关。
解法1:直接复用列表结构(推荐)
这种方案不需要修改任何你要引用的Secret、ConfigMap名称,后续新增envFrom条目也不需要修改模板,维护成本最低。
- 调整
nonproduction.yaml值文件结构:
envFrom: - secretRef: name: secret1 - secretRef: name: secret2 - configMapRef: name: configmap1 - secretRef: name: secret3
- 调整
deployment.yaml模板写法,直接渲染列表即可:
containers: - name: {{ .Values.appName }} image: {{ .Values.image.repository }}:{{ .Values.image.tag }} envFrom: {{- toYaml .Values.envFrom | nindent 12 }}
解法2:保留你原来的单独引用写法
如果你需要保留name1/name2/name3/name4的编号键单独引用的逻辑,不需要修改模板里的引用代码,只需要调整values文件的结构,把重复的secretRef合并为一个映射即可:
# nonproduction.yaml 调整后 envFrom: secretRef: name1: secret1 name2: secret2 name4: secret3 configMapRef: name3: configmap1
调整后同一层级下只有一个secretRef和一个configMapRef,不存在重复键,你原来的模板引用代码可以完全复用,不需要修改。
内容的提问来源于stack exchange,提问作者arsaphone
相关产品推荐
相关产品推荐

