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

如何通过Values.yaml向依赖的第三方Helm Chart传递checksum/config注解?

解决从values.yaml传入checksum/config注解的问题

首先要明确:Helm不会解析values.yaml中的模板表达式,所以直接把{{ include ... }}写在values里只会被当成字符串输出,无法计算出真实的checksum。下面给出几种可行的解决方案,按推荐程度排序:

方法一:覆盖第三方Chart的模板(最可靠)

如果第三方Chart的资源(比如Deployment)模板中定义了annotations字段,你可以将该模板文件复制到父Chart的templates目录下,然后修改它,直接添加checksum注解:

  1. 找到第三方Chart中定义annotations的模板文件(比如charts/mychart/templates/deployment.yaml)
  2. 复制该文件到父Chart的templates目录下(保持相同的路径结构,比如templates/charts/mychart/deployment.yaml,不同Helm版本可能路径要求略有不同,测试下即可)
  3. 修改复制后的模板,在annotations部分添加checksum计算:
    metadata:
      annotations:
        {{- if .Values.annotations }}
        {{- toYaml .Values.annotations | nindent 8 }}
        {{- end }}
        checksum/config: {{ include (print $.Parent.Template.BasePath "/configmap.yaml") $.Parent | sha256sum }}
    
    这里用$.Parent来引用父Chart的上下文,从而可以调用父Chart的configmap.yaml模板计算checksum。

方法二:使用Helm的Post-Rendering功能(无需修改模板)

Helm支持Post-Rendering,允许你在Helm渲染完所有资源后,用脚本修改生成的YAML文件:

  1. 创建一个bash脚本add-checksum.sh:

    #!/bin/bash
    # 计算父Chart中configmap.yaml的checksum
    CHECKSUM=$(helm template . --show-only templates/configmap.yaml | sha256sum | cut -d' ' -f1)
    # 给目标资源添加checksum/config注解(这里假设目标是Deployment,可根据实际修改)
    yq eval 'select(.kind == "Deployment").metadata.annotations."checksum/config" = "'"$CHECKSUM"'"' -
    

    注意:需要提前安装yq工具(v4版本以上)

  2. 给脚本添加执行权限:

    chmod +x add-checksum.sh
    
  3. 安装Chart时指定Post-Renderer:

    helm install my-release . --post-renderer ./add-checksum.sh
    

方法三:通过命令行动态传递checksum(适合临时测试)

先手动计算出checksum,再通过--set参数传递给values:

  1. 计算父Chart中configmap的checksum:

    CHECKSUM=$(helm template . --show-only templates/configmap.yaml | sha256sum | cut -d' ' -f1)
    
  2. 安装Chart时传入该值:

    helm install my-release . --set mychart.annotations.checksum/config=$CHECKSUM
    

为什么直接在values.yaml中写表达式不行?

Helm的加载顺序是:先加载values.yaml文件(将所有内容解析为静态字符串/数据结构),再开始渲染模板文件。所以values中的模板表达式不会被执行,只会原样输出为字符串,自然无法得到真实的checksum值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:34:08