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

如何安全地为Prometheus PostgreSQL Exporter Helm Chart提供数据库密钥?

安全部署Prometheus PostgreSQL Exporter的凭据管理方案

下面是几种避免明文传递数据库凭据的安全实现方式:

1. 预创建Kubernetes Secret并直接引用

不要通过Helm values传递明文凭据,先手动创建包含数据库连接信息的Secret:

kubectl create secret generic pg-exporter-credentials \
  --from-literal=DATA_SOURCE_NAME="postgresql://<用户名>:<密码>@<数据库地址>:5432/<数据库名>"

然后在Helm配置文件(values.yaml)里指定使用这个已存在的Secret,让Exporter直接读取其中的环境变量:

env:
  existingSecret: "pg-exporter-credentials"
  createSecret: false # 禁止Helm自动创建Secret

这种方式下,Helm不会在任何配置或release记录中存储敏感凭据,所有敏感数据仅存在于Kubernetes Secret中。

2. 复用现有数据库Secret

如果你的集群中已经有应用使用的数据库凭据Secret(比如包含username和password字段),可以直接复用,通过环境变量组合生成Exporter需要的DATA_SOURCE_NAME:

env:
  createSecret: false
  envFrom:
    # 引用现有数据库Secret,将其中的字段注入为环境变量
    - secretRef:
        name: existing-app-db-secret
  extraEnv:
    # 用环境变量拼接出完整的数据库连接串
    - name: DATA_SOURCE_NAME
      value: "postgresql://$(DB_USERNAME):$(DB_PASSWORD)@pg-cluster:5432/app-db"

Kubernetes会自动替换环境变量中的$(DB_USERNAME)和$(DB_PASSWORD)为Secret中的对应值,全程无需明文编写凭据。

3. 集成外部Secret管理工具(如HashiCorp Vault)

如果你的团队使用Vault这类外部Secret管理系统,可以通过Vault Agent Injector将凭据直接注入Exporter Pod,完全避免在Kubernetes中存储敏感数据:

  1. 关闭Helm自动创建Secret的功能:
env:
  createSecret: false
  1. 给Exporter的Pod添加Vault注入注解(具体配置根据你的Vault实例调整):
podAnnotations:
  vault.hashicorp.com/agent-inject: "true"
  vault.hashicorp.com/role: "pg-exporter-role"
  vault.hashicorp.com/agent-inject-secret-db-creds: "path/to/pg/credentials"
  vault.hashicorp.com/agent-inject-template-db-creds: |
    {{- with secret "path/to/pg/credentials" -}}
    export DATA_SOURCE_NAME="postgresql://{{ .Data.data.username }}:{{ .Data.data.password }}@pg-cluster:5432/app-db"
    {{- end -}}

Vault Agent会在Pod启动时自动从Vault拉取凭据并生成环境变量,Exporter启动后直接读取该变量即可。

4. 避免在Helm操作中传递明文

永远不要用--set直接传递明文凭据(比如--set env.password=xxx),因为Helm会将这些参数记录在release历史中。如果需要动态指定配置,建议从环境变量读取:

# 从环境变量获取Secret名称,避免明文暴露
export PG_EXPORTER_SECRET="pg-exporter-credentials"
helm install pg-exporter prometheus-community/prometheus-postgres-exporter \
  --set env.existingSecret=$PG_EXPORTER_SECRET

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:52:42