如何通过遍历Helm嵌套values批量创建K8s ConfigMap
解决方法
问题原因
- 现有代码遍历map时仅取值未取键,无法获取
config0/config1这类标识名拼接ConfigMap名称 - 多资源之间未添加YAML文档分隔符
---,导致Kubernetes将所有生成内容识别为同一个资源,最终仅保留最后一项的配置
修正后的模板代码
{{- range $key, $Mydata := $.Values.data.appdata }} --- apiVersion: v1 kind: ConfigMap metadata: name: {{ template "app" $ }}-{{ $key }} labels: {{- include "app.labels" $ | nindent 4 }} data: url: {{ $Mydata.url | quote }} port: {{ $Mydata.port | quote }} {{- end }}
代码说明
- 遍历map时改用
range $key, $value := 字典的写法,同时拿到子项的键名和对应值 - 每次迭代开头添加
---分隔符,生成独立的YAML资源 - 名称拼接使用
{{ template "app" $ }}-{{ $key }},符合要求的动态名称规则 - 额外增加
quote过滤器,避免特殊字符导致YAML格式错误,labels部分补全了通用的Helm标签生成逻辑,不需要可直接删除
内容的提问来源于stack exchange,提问作者centurions
相关产品推荐
相关产品推荐

