选择 打开 改范围 完整检索页

CloudNativePG 1.30.0 已发布!

发布于 2026-07-06,The CloudNativePG Contributors
相关开源软件

原文:https://www.postgresql.org/about/news/cloudnativepg-1300-released-3337/

发布日期:2026-07-06
作者:The CloudNativePG Contributors

CloudNativePG 社区宣布 CloudNativePG 1.30.0 正式发布。

这个小版本引入了新的 DatabaseRole CRD,用于以声明式、适合 GitOps 的方式管理 PostgreSQL 角色;同时新增基于 Kubernetes Lease 的主库选举机制,以提升故障转移安全性。版本还包含安全性与运维方面的重要改进,进一步巩固了 CloudNativePG 作为在 Kubernetes 上运行 PostgreSQL 工作负载的主流 operator 的地位。

社区同时发布了维护版本 1.29.21.28.4。其中 1.28.4 是 1.28.x 系列计划中的最后一个版本,仍在 1.28 上的用户应规划升级到 1.29 或 1.30。

随着 1.30.0 发布,CloudNativePG 1.28.x 系列已在 2026 年 6 月 30 日到达生命周期终点;1.29.x 系列的 EOL 日期确认为 2026 年 9 月 29 日。

1.30.0 亮点

用于声明式角色管理的 DatabaseRole CRD

1.30 的核心新增能力是 DatabaseRole 自定义资源。它把 PostgreSQL 角色作为独立 Kubernetes 对象管理,而不是内联在 Cluster 的 .spec.managed.roles 中。每个角色都有独立生命周期、状态和 RBAC,更适合 GitOps 工作流,也方便把角色定义放在拥有这些角色的应用旁边。迁移已有角色时,只需把原有 stanza 移到专用 manifest 中。

DatabaseRole 还可以包含 clientCertificate 配置块,让 operator 自动生成并续期由集群客户端 CA 签名的 TLS 客户端证书,并存放在 <databaserole-name>-client-cert Secret 中。这支持无密码的 PostgreSQL cert 认证;关闭该功能或删除资源时,Secret 会被自动清理。

用于安全主库选举的 Primary Lease

CloudNativePG 1.30 引入了以集群命名的 Kubernetes Lease 对象,作为串行化主库提升的互斥机制。实例管理器必须持有该 Lease 才能作为主库运行,并会在干净关闭时释放它,因此副本无需等待完整 TTL 即可提升。相关时间参数可通过新的 .spec.primaryLease 配置。

从架构上说,Lease 是提升门禁,而不是隔离栅栏;主库隔离仍负责 fencing,Lease 用于缩小状态切换期间非协调提升的窗口。

安全性与韧性增强

  • search_path 固定(CVE-2026-55769):修复数据库所有者可在 public schema 中植入重载 operator 的提权漏洞。operator 现在会在连接池连接上固定 search_path = pg_catalog, public, pg_temp
  • SCRAM-SHA-256 密码编码(CVE-2026-55765):operator 在执行 CREATE/ALTER ROLE 前会把明文密码编码为 SCRAM-SHA-256,因此日志或扩展捕获中最多出现 SCRAM verifier,而不是明文密钥。
  • 实例通信认证(GHSA-7qwx-x8ff-3px9):operator 与 instance manager 之间的通信现在通过 ECDSA 证书认证。该加固仅在 1.30.0 中提供,不会回移植;早期版本仍应通过 NetworkPolicy 限制实例状态端口。

其他重要改进

  • 使用 Image Volume 扩展时支持原地大版本升级,源版本和目标版本扩展镜像可并排挂载,升级失败时可干净回退。
  • PgBouncer 镜像可通过 Image Catalog 管理,Pooler 能通过 spec.pgbouncer.imageCatalogRef 引用 ImageCatalogClusterImageCatalog
  • Pooler 指标端点支持通过 .spec.monitoring.tls.enabled 启用 TLS,并在每次握手时热加载证书。
  • Cluster 可通过 scale subresource 的新 status.selector 成为 VPA/HPA 目标。
  • 当主库 pod 对 kubelet 显示 Ready 但无法通过 operator 的 /pg/status 检查时,operator 会发出 PrimaryStatusCheckFailed 警告事件。

该版本还支持 Kubernetes 1.36,并把默认 PostgreSQL 版本更新为 18.4。

API 变更提醒:DatabasePoolerPublicationSubscriptionScheduledBackup 资源中的 cluster 引用现在不可变。把这些资源重新指向另一个集群没有明确定义的语义,因此现在会被 API server 的 CEL 校验规则拒绝。

完整变更与修复请参见 CloudNativePG 1.30 发布说明

维护版本:1.29.2 与 1.28.4

与 1.30 同步发布的还有前一稳定系列的维护更新。两个版本都回移植了上述安全修复,包括 search_path 固定和 SCRAM-SHA-256 密码编码,并包含 VPA/HPA 支持、主库状态可见性、CNPG-I 插件自动重新加载、Kubernetes 1.36 支持、默认 PostgreSQL 18.4 以及多项错误修复。

  • CloudNativePG 1.29.2:参见 1.29 发布说明
  • CloudNativePG 1.28.4:1.28.x 系列计划中的最后一个维护版本,参见 1.28 发布说明。强烈建议规划升级到仍受支持的版本。

建议所有用户升级到最新稳定版本,以获得最新功能、安全增强和错误修复。升级步骤见 升级说明

参与社区

欢迎 加入社区,共同塑造云原生 Postgres 的未来。如果你在生产环境中使用 CloudNativePG,也可以考虑把组织加入 ADOPTERS 列表,支持项目成长。