Helm渲染KeyDB模板报can't evaluate field Values in type int错误求助
报错信息
/templates/_helpers.tpl:15:14: executing "keydb.fullname" at <.Values.keyDB.fullnameOverride>: can't evaluate field Values in type int
错误根因
这个报错的核心是keydb.fullname模板执行到第15行时,当前作用域上下文不是预期的包含.Values的对象,而是一个int类型数值,因此无法读取.Values字段。常见触发场景有三类:
- 调用
keydb.fullname模板时传入了错误的参数,比如传入了数值类型的变量(如副本数、端口号等),而非根上下文.或者包含.Values的上下文对象 keydb.fullname模板内部使用了with、range等会修改当前作用域的语句,没有保留根上下文引用,导致后续读取.Values时作用域已经变成了int类型的变量- values.yaml中
keyDB字段被误配置为数值类型,而非字典类型,导致读取.Values.keyDB时拿到的是int值,无法读取下级的fullnameOverride字段(该场景报错提示会略有差异,优先级低于前两类)
解决方案
按优先级依次检查修改:
- 检查
_helpers.tpl中keydb.fullname模板的第15行附近逻辑
如果模板内使用了with、range语句,涉及.Values的引用统一加$前缀指向根上下文,示例正确写法如下:{{- define "keydb.fullname" -}} {{- if $.Values.keyDB.fullnameOverride -}} {{- $.Values.keyDB.fullnameOverride | trunc 63 | trimSuffix "-" -}} {{- else -}} {{- $name := default $.Chart.Name $.Values.nameOverride -}} {{- printf "%s-%s" $.Release.Name $name | trunc 63 | trimSuffix "-" -}} {{- end -}} {{- end -}} - 检查所有调用
keydb.fullname模板的位置(Pod模板、secret-util.yaml等)
确保调用时传入的参数是根上下文.或者包含完整层级的上下文对象,不要传入数值类型参数。错误写法示例:{{ include "keydb.fullname" .Values.replicaCount }},正确写法:{{ include "keydb.fullname" . }} - 校验values.yaml配置格式
确保keyDB是字典类型,没有被误设为数值,示例正确配置:keyDB: fullnameOverride: "" # 其他keyDB配置项
内容的提问来源于stack exchange,提问作者Syed Towkhir
相关产品推荐
相关产品推荐

