试图在kubernetes (https://github.com/paunin/PostDock/tree/master/k8s/example2-single-statefulset)部署postgres,
kubectl get pods -n postgres
NAME READY STATUS RESTARTS AGE
psql-db-pgpool-8****c-7**k 1/1 Running 0 35d
psql-db-pgpool-8****c-m**5 1/1 Running 0 35d
psql-db-node-0 1/1 Running 0 35d
psql-db-node-1 1/1 Running 0 35d
psql-db-node-2 1/1 Running 0 20hroot@postgres-db-node-0:/# psql -h localhost postgres -U test
psql (11.4 (Debian 11.4-1.pgdg90+1))
Type "help" for help.
postgres=> \lpsql -h NODE_IP -U test -d postgres --port NODE_PORT
psql: FATAL: md5 authentication failed
DETAIL: pool_passwd file does not contain an entry for "test"root@psql-db-pgpool-8****c-7**k:/# cat /usr/local/etc/pool_passwd
user1:md5****422f
replica_user:md5****3在数据库中创建的新用户"test“没有反映在pgpool中。它是否以这种方式工作,每次创建新用户时都要创建和更新pgpool?或者我是不是遗漏了这个用户更新的东西。
发布于 2019-11-20 11:25:46
您部署的postgres示例使用秘密对象存储用户和密码凭据。这是管理kubernetes部署中敏感数据的推荐方法。
本例中有以下使用说明:
kubectl create -f ./namespace/创建命名空间kubectl create -f ./configs/kubectl create -f ./volumes/kubectl create -f ./services/kubectl create -f ./nodes/kubectl create -f ./pgpool/如果您按照正确的顺序跟踪它们,则在从mysystem-secret调用kubectl create -f ./configs/时创建configs/secret.yml秘密对象。
apiVersion: v1
kind: Secret
metadata:
namespace: mysystem
name: mysystem-secret
type: Opaque
data:
app.db.user: d2lkZQ== #wide
app.db.password: cGFzcw== #pass
app.db.cluster.replication.user: cmVwbGljYV91c2Vy #replica_user
app.db.cluster.replication.password: cmVwbGljYV9wYXNz #replica_pass
app.db.pool.users: d2lkZTpwYXNz #wide:pass
app.db.pool.pcp.user: cGNwX3VzZXI= #pcp_user
app.db.pool.pcp.password: cGNwX3Bhc3M= #pcp_pass注意,每个编码密码旁边的注释都是解码密码,因此在生产设置中应该避免它。
然后,来自mysystem-secret的用户和密码凭据在kubectl create -f ./nodes/和kubectl create -f ./pgpool/中作为环境值使用,这些值位于所有副本中,可用于连接到数据库。
...
- name: "POSTGRES_USER"
valueFrom:
secretKeyRef:
name: mysystem-secret
key: app.db.user
- name: "POSTGRES_PASSWORD"
valueFrom:
secretKeyRef:
name: mysystem-secret
key: app.db.password
...如果要使用自己的用户和密码,则需要修改configs/secret.yml文件,并用base64编码的密码替换要修改的密码。
您可以使用以下命令轻松地将任何密码编码为base64:
echo -n 'admin' | base64
YWRtaW4=
echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm更新:
要添加在集群部署后使用pgpool的其他用户,可以使用工具postgres算子。用户通过exec手动添加到pod,然后在本地创建,将不会传播到其他节点。
按照这些指令安装Postgres操作符(pgo ),并将其配置为与kubernetes一起工作。
https://stackoverflow.com/questions/58941380
复制相似问题