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

如何在非本地管理的Helm Chart中集成自定义ConfigMap并随其卸载?

解决方案:将自定义ConfigMap集成到第三方Helm Chart部署中

有几种可行的办法满足你的需求,不用本地管理第三方Chart仓库,还能让卸载Chart时一并移除自定义ConfigMap:

1. 利用第三方Chart自带的额外资源参数(最省心)

很多成熟的官方Helm Chart(比如New Relic的)会提供extraManifests这类参数,允许你直接传入自定义的K8s资源YAML。你只需要:

  • 在自己的values.yml里添加如下内容:
    extraManifests:
      - apiVersion: v1
        kind: ConfigMap
        metadata:
          name: {{ .Release.Name }}-infra-config
        data:
          infra-config.yml: |
            # 这里填你的基础设施配置内容
            key1: value1
            key2: value2
    
  • 安装时指定这个values文件:
    helm install my-newrelic newrelic/newrelic-infrastructure --version <固定版本号> -f ./my-values.yml
    

这样安装后,ConfigMap会和New Relic的资源同属一个Helm Release,卸载时helm uninstall my-newrelic会一并删除它。

2. 用极简Wrapper Chart封装(最灵活)

如果第三方Chart没有提供额外资源的入口,你可以创建一个超简单的“包装”Chart,只做两件事:引用第三方Chart作为依赖、添加你的自定义ConfigMap模板,完全不用修改第三方Chart的代码:

  1. 创建一个新的目录作为Wrapper Chart,比如newrelic-wrapper,里面的Chart.yaml内容如下:
    apiVersion: v2
    name: newrelic-wrapper
    version: 0.1.0
    dependencies:
      - name: newrelic-infrastructure
        version: "<你固定的版本号>"
        repository: "https://helm-charts.newrelic.com"
    
  2. 在这个目录下创建templates文件夹,里面新增你的ConfigMap模板infra-configmap.yaml:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-infra-config
    data:
      infra-config.yml: |
        {{- .Values.infra.config | nindent 4 }}
    
  3. 写自己的values.yml,包含New Relic Chart的配置和你的ConfigMap内容:
    # New Relic官方Chart的配置
    newrelic-infrastructure:
      licenseKey: "你的密钥"
      # 其他官方配置项...
    
    # 自定义ConfigMap的内容
    infra:
      config: |
        key1: value1
        key2: value2
    
  4. 安装Wrapper Chart即可:
    helm install my-newrelic ./newrelic-wrapper -f ./my-values.yml
    

这个方案的好处是完全隔离第三方Chart的更新,你只需要维护几行配置,卸载时同样用helm uninstall就能把所有资源清掉。

3. 用Helm Post-Renderer动态注入资源

如果不想维护任何本地Chart文件,可以用Helm的--post-renderer功能,在渲染第三方Chart的模板后,自动追加你的ConfigMap内容:

  1. 写一个简单的shell脚本add-configmap.sh:
    #!/bin/bash
    cat - ./my-configmap.yaml
    
    (my-configmap.yaml是你的ConfigMap文件,注意把metadata.name设为和Release关联的名字,比如{{ .Release.Name }}-infra-config)
  2. 安装时用post-renderer参数:
    helm install my-newrelic newrelic/newrelic-infrastructure --version <固定版本号> -f ./my-values.yml --post-renderer ./add-configmap.sh
    

这种方式完全不用维护Chart结构,但需要确保脚本和ConfigMap文件路径正确,卸载时同样会一并删除ConfigMap。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:50:40