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

Helm如何覆盖从依赖的common子chart中继承的配置值

覆盖Bitnami Common依赖继承配置的方法

你当前使用的是Bitnami官方维护的公共辅助chart common,它提供的公共模板(如common.labels.standard)的输出值可以通过以下几种方式覆盖:

  • 方式1:通过commonLabels全局参数覆盖(最简便)
    你当前的Service模板已经内置了commonLabels的渲染逻辑,直接在自己chart的values.yaml中添加commonLabels字段即可,自定义标签会自动追加到公共模板生成的标签末尾,同名标签会自动覆盖默认值,示例配置如下:

    # values.yaml
    commonLabels:
      # 覆盖默认的app.kubernetes.io/name标签
      app.kubernetes.io/name: my-custom-app
      # 新增自定义标签
      business/team: data
      business/env: production
    

    该配置会作用于所有引用了commonLabels渲染逻辑的资源。

  • 方式2:重写公共模板实现完全自定义
    如果需要完全替换common.labels.standard的默认输出逻辑,可以在自己chart的templates目录下新建_helpers.tpl文件,定义同名的模板即可。Helm加载模板时,主chart的模板优先级高于依赖chart的模板,同名模板会自动覆盖依赖中的实现,示例如下:

    # templates/_helpers.tpl
    {{- define "common.labels.standard" -}}
    # 这里完全自定义标签输出逻辑
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
    global.custom.label: fixed-value
    {{- end -}}
    

    修改后所有引用include "common.labels.standard" .的位置都会使用你自定义的模板输出。

  • 方式3:单个资源局部覆盖
    如果不需要全局修改,仅要覆盖单个资源的特定标签,直接在对应资源的labels字段下追加同名标签即可。YAML映射中后定义的键值会覆盖先定义的内容,示例如下:

    apiVersion: v1
    kind: Service
    metadata:
      ...
      labels: {{- include "common.labels.standard" . | nindent 4 }}
        app.kubernetes.io/component: zookeeper
        # 直接覆盖common模板生成的app.kubernetes.io/name标签
        app.kubernetes.io/name: my-custom-zookeeper
        {{- if .Values.commonLabels }}
        {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
        {{- end }}
    ...
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:18:04