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

如何在Helm Chart中使用系统环境变量?

在Helm Chart中使用系统环境变量的实现方法

Helm默认不会解析values.yaml中的模板语法(比如{{ env "USER" }}),所以直接写在values里不会生效。以下是几种可行的实现方式:

方法1:命令行参数传递

部署时通过--set或--set-string直接将环境变量值传入对应的values字段:

# 直接传递环境变量USER的值到home.user
helm install myapp ./mychart --set home.user=$USER

如果变量值包含特殊字符或需要强制字符串类型,使用--set-string避免类型转换问题:

helm install myapp ./mychart --set-string home.user=$USER

方法2:利用Helm内置的环境变量覆盖机制(Helm 3.7+)

Helm 3.7及以上版本支持通过HELM_VALUES_*前缀的环境变量覆盖values配置。比如要设置home.user:

# 导出对应前缀的环境变量
export HELM_VALUES_home_user=$USER
# 正常执行Helm部署命令,变量会自动注入
helm install myapp ./mychart

方法3:将模板逻辑移到templates文件中

把依赖环境变量的配置放到templates目录下的YAML文件里,Helm会渲染这些文件中的模板语法:
比如在templates/deployment.yaml中直接使用环境变量:

spec:
  containers:
    - name: myapp
      env:
        - name: HOME_USER
          value: {{ env "USER" | quote }}

或者在模板中结合values使用,实现“values优先,环境变量兜底”的逻辑:

# templates/configmap.yaml
data:
  user: {{ .Values.home.user | default (env "USER") | quote }}

方法4:用外部工具预渲染values文件

使用envsubst等工具先替换values文件中的环境变量占位符,再传给Helm:

  1. 修改values.yaml为占位符格式:
home:
  user: ${USER}
  1. 预渲染并部署:
# 替换占位符生成渲染后的values文件
envsubst < values.yaml > rendered-values.yaml
# 使用渲染后的文件部署
helm install myapp ./mychart -f rendered-values.yaml

注意事项

  • 确保Helm运行的环境能正确读取到目标系统环境变量(比如部署脚本所在的服务器已设置USER=build)。
  • 敏感信息避免通过--set传递(会在进程列表中可见),优先使用环境变量或Secret管理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:17:36