介绍

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_NAMEPGBOUNCER_IMAGE_NAME 默认值已预先写入 mirror tag,因此上游 Community quickstart 可以在 air-gapped 集群中零修改运行。
  • Image-rewrite 容忍:默认启用 operator 的 ENABLE_IMAGE_REWRITE_TOLERANCE 标志,因此 admission 阶段的镜像重写(mirror 替换)不会触发虚假的滚动更新。
  • L5 RBACcpaas:middleware-cnpg:business-ns:{admin,edit,view,backup,restore} role 族已接入 ACP 的 namespace-admin / namespace-developer 聚合链。
  • OLM 打包:bundle 通过标准 violet push 发布到 ACP 的 platform catalog 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(独立的配套包)集成,支持对象存储备份和时间点恢复。
  • 连接池:专用的 Pooler CR 用于承载 PgBouncer。
  • 复制拓扑:支持同步和异步副本;可通过 minSyncReplicas/maxSyncReplicas 调整可用性。
  • 逻辑复制:以声明式 PublicationSubscription CR 进行管理(无需手写 SQL)。
  • 镜像目录ImageCatalogClusterImageCatalog CR 允许集群 operator 集中管理 PostgreSQL 镜像版本。
  • 多架构:完整镜像集均支持 amd64 + arm64。

与上游 CNPG 的差异

方面上游 CNPGAlauda CloudNativePG
发行方式Helm Chart,来自 operatorhub.io 的 OLM bundle来自 ACP platform catalog source 的 OLM bundle
镜像仓库ghcr.io/cloudnative-pg/...build-harbor.alauda.cn/middleware/cnpg/...(mirror)
Image-rewrite 容忍禁用(operator 严格比较镜像字符串)启用(ENABLE_IMAGE_REWRITE_TOLERANCE=true
默认 PG 镜像ghcr.io/cloudnative-pg/postgresql:18.3-system-trixiebuild-harbor.alauda.cn/middleware/cnpg/postgresql:18.3-standard-trixie
多架构大多数镜像支持 amd64+arm64所有镜像均支持 amd64+arm64
RBAC* operator + 标准 K8s RBAC额外支持 L5 namespace-admin / namespace-developer 聚合

何时使用此发行版

在以下场景中使用 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 发行版更为合适。