zalando/postgres-operator
- zalando/postgres-operator
- Operator 可通过 ConfigMap 或 CRD 配置 - 推荐 CRD 配置
- CRD 要求类型匹配 - Helm values 需要调整
- ConfigMap 值均为字符串
- 每个用户会创建一个 secret 存储账号密码
{username}.{team}-{clustername}.credentials.postgresql.acid.zalan.do
- username
- password
- CRD
- OperatorConfiguration - CRD 配置 Operator
- postgresql - 定义 PostgreSQL 集群
- PostgresTeam - 定义团队
- 特性
- WAL 备份
- 逻辑备份 - SQL dump
提示
- Patroni 和 Spilo 也是 zalando 开发的,因此这个 operator 相对更有保障
警告
备份注意事项
- S3 bukect 是全局的,不支持每个集群独立配置
- pod_environment_secret 目前只挂载在了 operator 上
- 逻辑备份无法使用该配置
- #1348
- 非 AWS S3 只能使用 WAL-G - 因为 WAL-E 开启了 SSE
- 例如 Minio
# {team}-{name}
CLUSTER_NAME=acid-minimal-cluster
# Master Host
PGMASTER=$(kubectl get pods -o jsonpath={.items..metadata.name} -l application=spilo,cluster-name=${CLUSTER_NAME},spilo-role=master)
# 端口转发
kubectl port-forward $PGMASTER 6432:5432
# 获取密码连接数据库
export PGUSER=postgres
export PGPASSWORD=$(kubectl get secret ${PGUSER}.${CLUSTER_NAME}.credentials.postgresql.acid.zalan.do -o 'jsonpath={.data.password}' | base64 -d)
export PGSSLMODE=require
psql -h localhost -p 6432
# 转发 operator-ui
kubectl port-forward -n postgres-operator svc/postgres-operator-ui 8080:80