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

Helm模板遍历标量块列表报错:无法解析interface{}类型字段

解决Helm模板报错:can't evaluate field name in type interface {}

错误原因

你在values.yaml里把myTest定义成了多行字符串(使用|-),虽然内容是YAML格式,但Helm读取时会将其当作字符串处理。模板里用fromYaml解析后,返回的数组元素是interface{}类型,Go模板无法直接访问其name、url字段,从而触发报错。

解决方案

方案1:修改values.yaml为原生YAML数组(推荐)

把myTest从多行字符串改成直接的YAML数组,Helm会自动识别为数组类型,无需额外解析:

myTest:
  - name: app1
    url: https://example.com/app1
  - name: app2
    url: https://example.com/app2

同步修改模板,去掉| fromYaml部分,直接遍历.Values.myTest:

{{- range $i, $item := .Values.myTest }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-{{ $item.name }}
data:
  url: {{ $item.url }}
---
{{- end }}

方案2:保留多行字符串,优化模板解析

如果必须保留values.yaml的多行字符串格式,可通过键名索引的方式访问字段,绕开Go模板的类型推断问题:

修改模板如下:

{{- $myTest := .Values.myTest | fromYaml }}
{{- range $i, $item := $myTest }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-{{ index $item "name" }}
data:
  url: {{ index $item "url" }}
---
{{- end }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:52:32