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

如何将Helm中共享配置与敏感数据迁移至全局配置和Secret?

方案可行性及实现步骤

完全可行,通过Helm全局配置集中管理+Kubernetes Secret存储敏感数据,可满足需求。以下是具体实现步骤:

一、迁移Shards配置到全局

  1. 清理局部配置:删除some-module1、some-module2、some-module3各自values.yaml中的shards配置段,避免局部值干扰全局配置。
  2. 配置全局Shards:在global-config/values.yaml中添加全局的Shards配置,仅保留非敏感字段(敏感的login、password将迁移至Secret):
global:
  shards:
    - name: "db1"
      url: "url1"
    - name: "db2"
      url: "url2"
  # 可选:统一定义Secret名称,方便后续引用
  dbSecretName: "db-shards-secrets"

二、将敏感数据迁移至Secret

修改global-config/templates/secrets.yaml,创建存储敏感数据的Secret(使用stringData无需手动做Base64编码,Helm会自动处理):

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Values.global.dbSecretName }}
type: Opaque
stringData:
  # 按shard名称做key前缀,避免字段冲突
  db1-login: "login1"
  db1-password: "password1"
  db2-login: "login2"
  db2-password: "password2"

三、修改业务模块的Deployment配置

更新some-module1、some-module2、some-module3的templates/deployment.yaml,改为读取全局Shards配置,并从Secret注入敏感数据:

{{- range $shard := .Values.global.shards }}
env:
  # 非敏感URL直接从全局配置读取
  - name: DB_URL_{{ $shard.name | upper }}
    value: {{ $shard.url }}
  # 敏感登录名从Secret获取
  - name: DB_LOGIN_{{ $shard.name | upper }}
    valueFrom:
      secretKeyRef:
        name: {{ $.Values.global.dbSecretName }}
        key: {{ $shard.name }}-login
  # 敏感密码从Secret获取
  - name: DB_PASSWORD_{{ $shard.name | upper }}
    valueFrom:
      secretKeyRef:
        name: {{ $.Values.global.dbSecretName }}
        key: {{ $shard.name }}-password
{{- end }}

注:给环境变量加上Shard名称前缀(如DB_URL_DB1),避免多个Shard的环境变量冲突,解决原配置中重复赋值的问题。

四、确保全局配置生效

如果使用Helm子Chart/依赖结构,需在业务模块的Chart.yaml中添加对global-config的依赖,或在父Chart的配置中包含所有模块,保证全局values能被业务模块读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:17:06