You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Helm模板中使用lookup获取ConfigMap内嵌套YAML的指定字段值

问题原因

你遇到的报错和取值失败是两个独立问题导致的:

  • 通过get $configmap.data "test.yml"拿到的内容是纯文本YAML字符串,不是可直接点取属性的结构化对象,需要先反序列化
  • Go模板(Helm模板基于Go模板实现)不支持直接用.数字开头的键名这种写法访问属性,数字开头的键必须用index函数取值
正确实现代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
data:
{{- $configmap := (lookup "v1" "ConfigMap" "default" "myconfig") }}
{{- if $configmap }}
  {{- /* 把test.yml的字符串反序列化为结构化对象 */}}
  {{- $models := get $configmap.data "test.yml" | fromYaml }}
  {{- /* 用index函数取数字开头的键,再获取Version属性 */}}
  version: {{ index $models.map_a "123v1" | get "Version" }}
{{- end }}
补充注意事项

helm template命令默认不会连接Kubernetes APIServer,此时lookup函数永远返回空值,如果你需要本地验证效果,需要改用以下命令:

helm install --dry-run=server test-release .

这个命令会和集群APIServer交互,正常拿到已存在的ConfigMap内容。

内容的提问来源于stack exchange,提问作者qxing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:21:02