架构
参考文档:Zalando Postgres Operator Official Documentation

PostgreSQL Operator 使用 Kubernetes Operator 模式管理 PostgreSQL 集群,主要由以下核心组件组成:
核心组件
-
Operator Controller
- 监听 PostgreSQL Custom Resource Definitions (CRD) 的变更
- 负责集群创建、扩缩容、配置更新以及其他操作
- 管理集群生命周期
-
Patroni
- 提供高可用保障
- 处理主备切换和故障转移
- 管理集群拓扑和成员状态
-
Spilo
- 提供 PostgreSQL 容器镜像
- 集成 Patroni 和 PostgreSQL
- 处理初始化配置和启动
-
监控组件
- 集成 Prometheus 进行指标采集
- 提供 Grafana 仪表板
- 支持告警规则配置
数据流
- 用户通过 Kubernetes API 创建 PostgreSQL Custom Resource
- Operator Controller 监听资源变更并创建相关 Kubernetes 资源
- Patroni 负责集群初始化和高可用管理
- Spilo 启动 PostgreSQL 实例并应用配置
- 监控组件采集指标并进行展示
RBAC 架构
PostgreSQL Operator 实现了最小权限 RBAC 模型,并通过职责分离满足企业安全合规要求。
Operator 权限
operator 遵循最小权限原则。它仅拥有管理 PostgreSQL 集群所需的最小权限:
operator 不具备集群级 RBAC 管理权限(ClusterRole、ClusterRoleBinding)。
运行时 RBAC
当在某个 namespace 中创建 PostgreSQL CR 时,operator 会自动创建:
这是标准的 Kubernetes operator 模式,其中 ClusterRole 权限由 OLM/admin 控制。
面向用户的角色
operator 提供用于职责分离的角色模板:
角色聚合
面向用户的角色会聚合到平台角色:
- admin:聚合 admin-base + backup + restore 角色
- edit/view:聚合到
rbac.cpaas.io/aggregate-to-namespace-developer - 所有角色:聚合到
rbac.cpaas.io/aggregate-to-scope-business-ns
部署模式
PostgreSQL Operator 支持以下部署模式:
- Single Cluster Mode:运行在单个 Kubernetes 集群中
- Multi-Cluster Mode:跨多个 Kubernetes 集群管理 PostgreSQL 实例
- High Availability Mode:通过 Patroni 实现自动故障转移