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

Helm伞形图引用自定义values文件报nil pointer evaluating host错误

问题原因与解决方案

根本原因

这是Helm伞形图的Values作用域规则导致的:

  • 子chart默认无法直接访问伞形图顶层传入的、非global域、且未归属到对应子chart名下的配置值
  • 子chart的.Values默认仅包含三类配置:
    • 子chart自己values.yaml文件中定义的默认值
    • 伞形图顶层传入的global域下的所有公共配置
    • 伞形图顶层配置中、键名与子chart名称完全匹配的配置块下的所有值

你之前直接在顶层values-ext.yaml中定义的sql配置块不属于上面三类,所以子chart读取时会识别为nil,报指针空值错误,用$.Values也无法解决,因为$指代的是当前子chart模板自身的根作用域,依然无法跨作用域访问伞形图顶层的非规则内配置。

两种可行解决方案

方案1:使用global公共域(适合多子chart共用的配置)

  1. 修改values-ext.yaml,把公共配置放到global字段下:
global:
  sql:
    common:
      host: <SQL Server host>
      user: <SQL user>
      pwd: <SQL password>
  1. 修改子chart的configmap.yaml,引用global域下的配置:
apiVersion: v1
kind: ConfigMap
metadata:
  name: "childchart-config"
  labels:
    app: some-app
    chart: my-child-chart
data:
  ConnectionStrings__DbConnection: Server={{ .Values.global.sql.common.host }};Database=some-db

方案2:配置归属到对应子chart名下(适合仅单个子chart使用的配置)

  1. 先确认子chart的名称:即子chart自身Chart.yaml中name字段的取值,假设为child-chart
  2. 修改values-ext.yaml,把sql配置块放到子chart名称对应的键下:
child-chart:
  sql:
    common:
      host: <SQL Server host>
      user: <SQL user>
      pwd: <SQL password>
  1. 子chart的configmap.yaml不需要做任何修改,原写法{{ .Values.sql.common.host }}可正常生效。

修改完成后再执行helm template --values values-ext.yaml .即可正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:36:04