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

如何让Helm应用图表默认使用库图表values.yaml的配置值?

解决Helm库图表默认值不生效的问题

问题根源

Helm库图表的默认values会被自动放到和库名同名的节点下(也就是你的my-library节点),不会自动并入应用图表的根values里。所以你直接在应用模板里用.Values.xxx的话,根本读不到库的默认值,自然就不生效。

几种可行的解决办法

1. 把库的默认值合并到应用根values里

在应用图表的values.yaml里,用Helm模板函数把库的默认值和应用自己的values合并,优先用应用自定义的配置,没有的话就 fallback 到库的默认值:

# 应用的values.yaml
{{- include "my-library.default-values" . | merge .Values | toYaml }}

然后在库图表的templates/_helpers.tpl里定义一个输出默认值的模板:

# 库的templates/_helpers.tpl
{{- define "my-library.default-values" -}}
# 这里写你的库默认配置,示例:
replicaCount: 2
image:
  repository: nginx
  tag: stable
resources:
  requests:
    cpu: 100m
    memory: 128Mi
{{- end -}}

2. 模板里直接优先引用根值, fallback到库节点

如果不想全局合并,也可以在应用的每个模板文件里,明确指定优先用应用自己的配置,没有的话用库的默认值:

# 应用的templates/deployment.yaml
replicaCount: {{ .Values.replicaCount | default .Values.my-library.replicaCount }}

这种方式适合只在特定模板里用到库配置的场景。

3. 用Chart.yaml的import-values自动导入

在应用的Chart.yaml里配置依赖的时候,加上import-values,把库的根values直接导入到应用的根values里,这样应用模板就能直接用.Values.xxx读取库的默认值,自定义值会自动覆盖:

# 应用的Chart.yaml
dependencies:
  - name: my-library
    version: 0.1.0
    repository: file://../my-library # 根据你的库实际路径调整
    import-values:
      - child: .
        parent: .

验证方法

执行helm template --debug <你的应用图表名称>,检查输出的配置:

  • 未自定义值时,应该显示库的默认配置
  • 自定义了某个参数后,应该显示你设置的自定义值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:58:23