k8s部署的PostgreSQL同时使用了pgpool修改密码

439 阅读1分钟

更新secret文件

提前生成好base64格式的密码

# 假设新的密码为33445566
# 注意echo一定要使用-n参数,-n参数的意思是输出去掉结尾换行符
[root@harbor ~]# echo -n "33445566" |base64
MzM0NDU1NjYK

修改secret

# 编辑pgpool的secret,修改为下面的内容
kubectl edit secret mypostgres-postgres-secret -n demo
# 编辑文件,替换原来的密码
apiVersion: v1
data:
  password: MzM0NDU1NjYK   # 这里将密码修改为新的密码,然后保存退出
  username: cG9zdGdyZXM=
kind: Secret
metadata:
  creationTimestamp: "2023-07-21T05:15:24Z"
  name: mypostgres-postgres-secret
  namespace: demo
  resourceVersion: "6869094"
  uid: 7677ae03-ccdd-4513-961b-17a997d8d02e
type: Opaque

重启pod

# 执行该命令后,pod重新部署了
kubectl replace --force -f pgpool-deploy.yml -n demo

修改postgre集群部署时候的Secret

 kubectl edit secret p1-auth -n demo

将PostgreSQL的用户也更新下密码

[root@master ~]# kubectl exec -it hot-postgres-2  -n demo -- bash
Defaulted container "postgres" out of: postgres, pg-coordinator, postgres-init-container (init)
bash-5.1$ psql
psql (13.2)
Type "help" for help.

postgres=# alter user postgres with password '33445566';
ALTER ROLE

查看部署的数据库StatefulSet的yaml文件

kubectl get statefulsets.apps hot-postgres -n demo -o yaml

# 从输出的文件中可以看到用户名和密码是以env的方式注入到容器中的,由于该env的用户和密码引用的是Secret,而Secret改变后,env不会热更新,所以需要手动滚动更新pod才能生效