介绍
CloudNativePG 介绍
CloudNativePG (CNPG) 是一个 Kubernetes 原生的 PostgreSQL operator,最初由 EDB 开发,并捐赠给 CNCF(当前是 Sandbox 项目)。不同于旧式 PostgreSQL operator,这类方案通常封装 Patroni 并需要单独的分布式一致性存储(etcd、ZooKeeper),CNPG 直接在 operator 中使用 Kubernetes 原语实现主/备协调。这显著缩短了故障切换时间,消除了外部依赖,并使运维模型与云原生标准保持一致。
CNPG 在 Kubernetes 上管理 PostgreSQL 的完整生命周期:部署、配置、扩缩容、自动故障切换、备份、时间点恢复、滚动升级以及连接池管理。支持 PostgreSQL 14 到 18 版本。
Alauda build of CloudNativePG 介绍
Alauda build of CloudNativePG 将 CNPG 打包为一个 Alauda Container Platform (ACP) bundle。operator 代码仍然是上游 CNPG 项目;Alauda 发行版额外增加了以下内容:
- Air-gapped 运行:PostgreSQL 容器镜像、extensions 和 PgBouncer 镜像镜像到
build-harbor.alauda.cn,并通过 ACP 的 image-rewrite admission 使用。该 bundle 的POSTGRES_IMAGE_NAME和PGBOUNCER_IMAGE_NAME默认值已预先写入 mirror tag,因此上游 Community quickstart 可以在 air-gapped 集群中零修改运行。 - Image-rewrite 容忍:默认启用 operator 的
ENABLE_IMAGE_REWRITE_TOLERANCE标志,因此 admission 阶段的镜像重写(mirror 替换)不会触发虚假的滚动更新。 - L5 RBAC:
cpaas:middleware-cnpg:business-ns:{admin,edit,view,backup,restore}role 族已接入 ACP 的 namespace-admin / namespace-developer 聚合链。 - OLM 打包:bundle 通过标准
violet push发布到 ACP 的platformcatalog source。通过 artifacts repository(release-4.3分支)跟踪,并纳入 ACP 4.3 release artifacts。 - 多架构:operator、plugin、bundle 以及 PostgreSQL 容器镜像均支持 amd64 + arm64。
主要特性
- Kubernetes 原生 HA:通过 operator 进行主/备协调,无需 Patroni 或 etcd。故障切换通常可在数秒内完成。
- 多版本 PostgreSQL:bundle 随附 PG 14、15、16、17、18。每个主版本均提供
standard(包含 extensions)和minimal变体。 - 内置 extensions:pgaudit、pgvector 可通过共享的
ClusterImageCatalog供 PostgreSQL 18 使用。 - 备份/恢复:与 Barman Cloud plugin(独立的配套包)集成,支持对象存储备份和时间点恢复。
- 连接池:专用的
PoolerCR 用于承载 PgBouncer。 - 复制拓扑:支持同步和异步副本;可通过
minSyncReplicas/maxSyncReplicas调整可用性。 - 逻辑复制:以声明式
Publication和SubscriptionCR 进行管理(无需手写 SQL)。 - 镜像目录:
ImageCatalog和ClusterImageCatalogCR 允许集群 operator 集中管理 PostgreSQL 镜像版本。 - 多架构:完整镜像集均支持 amd64 + arm64。
与上游 CNPG 的差异
何时使用此发行版
在以下场景中使用 Alauda CloudNativePG:
- 你正在 Alauda Container Platform 上运行 PostgreSQL。
- 你的环境是 air-gapped,或对公共容器仓库的出站访问受限。
- 你希望 operator pod、PostgreSQL pod 和 extensions 都从单一的内部镜像仓库解析。
- 你需要与 ACP 的 namespace-admin / namespace-developer 聚合模型集成 RBAC。
对于非 ACP Kubernetes 集群,或可以不受限制访问互联网的环境,来自 cloudnative-pg.io 的上游 CNPG 发行版更为合适。