Grafana Operator CRD中通过Secret传递数据库密码的问题求助
解决Grafana Operator CRD中通过Secret传递数据库密码的问题
你直接在配置里写${secret-name}没用,因为Grafana Operator不会自动解析这种占位符,只会把它原封不动写到grafana.ini里。要实现用Secret传密码,得用Operator CRD专门提供的valueFrom机制,步骤如下:
创建存储数据库密码的Secret
先把密码做base64编码(比如执行echo -n "你的数据库密码" | base64生成编码值),然后创建Secret:apiVersion: v1 kind: Secret metadata: name: grafana-db-secret # 确保和你的Grafana CR在同一个命名空间下 namespace: your-namespace type: Opaque data: db-password: 你的base64编码密码修改Grafana CRD配置,引用Secret
在CR的spec.config.database字段下,把原来的明文密码替换成valueFrom引用Secret的配置,示例:apiVersion: grafana.integreatly.org/v1beta1 kind: Grafana metadata: name: grafana namespace: your-namespace spec: config: database: type: postgres # 替换为你实际使用的数据库类型 host: your-db-host:5432 name: grafana_db user: grafana_user password: valueFrom: secretKeyRef: name: grafana-db-secret key: db-password # 其他原有配置保持不变...验证配置生效
重新应用CR后,等待Pod重启完成,进入Pod查看/etc/grafana/grafana.ini,此时password字段会被Operator替换成Secret中的实际值,也可以直接测试Grafana是否能正常连接数据库。
注意:如果Secret和Grafana CR不在同一个命名空间,需要给Grafana Operator的ServiceAccount添加读取目标namespace下Secret的权限。
内容的提问来源于stack exchange,提问作者Prachi Tripathi
相关产品推荐
相关产品推荐

