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

如何向Helm的values.yaml注入密钥且避免敏感信息上传Git

解决方案

你可以通过Helm原生的多Values文件合并能力实现需求,全程无需修改子Chart代码,具体实现有两种常用方案:

方案1:私有Values文件合并(最简便)

步骤1:拆分公开与敏感配置

首先修改可提交到Git的values/deploymentXY.yaml,仅保留非敏感配置,删除param3字段:

subchart:
 configuration:
  param1: "foo"
  param2: "bar"

步骤2:创建私有敏感配置文件

新建secrets-deploymentXY.yaml文件,仅存储敏感配置:

subchart:
 configuration:
  param3: "supersecret"

将该文件路径添加到.gitignore中,确保不会被误提交到Git仓库。

步骤3:调整部署命令

Helm支持同时指定多个Values文件,后加载的文件会与前面的配置做层级合并、同名值覆盖,因此直接在原有部署命令后追加敏感配置文件即可:

helm upgrade -i mychart helm/mychart -f values/deploymentXY.yaml -f secrets-deploymentXY.yaml

方案2:基于Kubernetes Secret动态注入

如果不想在本地存储明文敏感配置文件,可以提前将敏感值存入集群的Secret资源,部署时动态读取注入:

步骤1:创建Secret资源

手动在集群中创建存储敏感值的Secret(该配置不要提交到Git,可通过权限管控限制Secret的访问范围):

apiVersion: v1
kind: Secret
metadata:
  name: mychart-secrets
type: Opaque
stringData:
  param3: "supersecret"

执行kubectl apply -f <secret文件名>创建资源。

步骤2:调整部署命令

部署时通过kubectl读取Secret的敏感值,用--set参数注入到对应配置项:

helm upgrade -i mychart helm/mychart -f values/deploymentXY.yaml --set subchart.configuration.param3=$(kubectl get secret mychart-secrets -o jsonpath='{.data.param3}' | base64 -d)

注意事项

  • 若使用CI/CD流程部署,可将敏感值存入CI系统的保密变量中,部署时通过--set参数或临时生成敏感Values文件注入,无需在任何代码文件中明文存储敏感值
  • 两种方案都不会影响原有非敏感配置的加载逻辑,param1、param2等公开配置可以正常从Git存储的Values文件中读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:07