Grafana Helm Chart切换PostgreSQL并安全隐藏数据库凭证方法咨询
Grafana Helm Chart切换PostgreSQL并安全存储凭证方案
一、推荐方案:使用Kubernetes Secrets存储凭证
Kubernetes Secrets是集群内存储敏感信息的标准方式,能避免在values.yaml中明文暴露数据库账号密码,步骤如下:
1. 创建Kubernetes Secret
先在集群中创建存储数据库凭证的Secret:
kubectl create secret generic grafana-db-creds \ --from-literal=db-user=grafana-db-user \ --from-literal=db-pass=grafana-db-pass
替换命令中的grafana-db-user和grafana-db-pass为你的实际数据库账号密码。
2. 修改values.yaml配置(推荐:利用Chart内置database配置块)
Grafana Helm Chart提供了顶层database配置项,无需直接修改grafana.ini即可配置数据库连接并引用Secret,在values.yaml中添加或修改以下内容:
# 替换原有grafana.ini中的database配置块,若需保留grafana.ini其他配置可继续保留 database: type: postgres host: "db.postgres.database.azure.com" name: "grafana-db" # 引用Secret中的用户名 userSecretName: grafana-db-creds userKey: db-user # 引用Secret中的密码 passwordSecretName: grafana-db-creds passwordKey: db-pass sslMode: require
3. 备选:在grafana.ini中通过环境变量引用Secret
若你习惯直接配置grafana.ini,可通过环境变量注入Secret值,需同时配置env和grafana.ini:
# 配置环境变量从Secret获取凭证 env: - name: DB_USER valueFrom: secretKeyRef: name: grafana-db-creds key: db-user - name: DB_PASS valueFrom: secretKeyRef: name: grafana-db-creds key: db-pass # 在grafana.ini中引用环境变量 grafana.ini: database: type: "postgres" host: "db.postgres.database.azure.com" name: "grafana-db" user: "${DB_USER}" password: "${DB_PASS}" ssl_mode: "require"
关于之前env配置未生效的说明
大概率是以下原因导致:
- 未在
grafana.ini中用${变量名}的格式正确引用环境变量 env配置格式错误,比如直接用value而非valueFrom.secretKeyRef读取Secret值
二、验证配置
执行helm安装/升级命令应用配置:
helm upgrade --install grafana grafana/grafana -f values.yaml
可通过以下命令验证配置是否生效:
# 检查Pod环境变量是否正确注入 kubectl exec -it $(kubectl get pods -l app.kubernetes.io/name=grafana -o jsonpath="{.items[0].metadata.name}") -- env | grep DB_ # 查看Grafana日志确认数据库连接状态 kubectl logs $(kubectl get pods -l app.kubernetes.io/name=grafana -o jsonpath="{.items[0].metadata.name}")
内容的提问来源于stack exchange,提问作者Julio Enrique Guzmán Barraza
相关产品推荐
相关产品推荐

