发版日志
目录
v1.29.2-acp.1 (2026-08-14, GA)亮点本次发版中的上游变更安全与 CVE 状态扩展支持已知问题 / 限制验证摘要升级v1.29.1-acp.1 (2026-06-11, GA)亮点按 PostgreSQL 主版本划分的扩展支持已知问题 / 限制验证摘要升级v1.29.0-acp.1 (2026-05-08, Alpha)亮点已知限制已验证的安装路径v1.29.2-acp.1 (2026-08-14, GA)
跟踪上游 CloudNativePG v1.29.2 的补丁发版(上游发版日期为 2026-06-29)。
这是一个仅 operator发版:operator 和 bundle 镜像已重新构建,而每个 operand 镜像——PostgreSQL、PostGIS、pgvector、pgaudit、PgBouncer,以及 Barman Cloud plugin 及其 sidecar——都沿用与 v1.29.1-acp.1 完全相同的镜像标签。
亮点
-
两个上游安全修复,均位于 operator 代码中。
CVE-2026-55769— operator 现在会在其打开的每个连接上固定设置search_path = pg_catalog, public, pg_temp。此前,数据库所有者可以在publicschema 中植入重载的内置 operator,并修改search_path,从而让 operator 的自省探针——它们以 cluster superuser 身份运行——在pg_catalog之前解析到这些重载项,形成与CVE-2018-1058同类的权限提升链条。 (#10774,GHSA-x8c2-3p4r-v9r6)CVE-2026-55765— operator 现在会在发出CREATE/ALTER ROLE ... PASSWORD之前,对明文角色密码进行 SCRAM-SHA-256 编码,因此 PostgreSQL 实际解析的字面量——以及pg_stat_statements或pgaudit等扩展可能捕获到的内容——是 SCRAM verifier,而不是明文 secret。预先哈希过的(MD5 或 SCRAM)值会原样透传,而按 Secret 粒度的注解cnpg.io/passwordPassthrough: "enabled"可用于选择退出。 (#10724,GHSA-w3gf-xc94-wvmj)
-
OLM bundle 中授予了
endpointslicesRBAC。 上游v1.29.2让 operator 监听支撑 CNPG-i plugin Services 的EndpointSlices,这样一旦插件升级后的 pods 变为Ready,operator 就能立即拾取,而不是等到下一次 resync。对应的权限原本缺失于 ClusterServiceVersion 中,没有它时,operator 在安装时会进入CrashLoopBackOff。本次发版已授予该权限。 -
默认 PostgreSQL 版本现为 18.4。 (#10719)
-
现已支持 Kubernetes 1.36。 (#10900)
-
Cluster现在是一个有效的 autoscaler 目标。 scale 子资源暴露了status.selector,这使得 Vertical Pod Autoscaler 和 Horizontal Pod Autoscaler 可以将Cluster映射到其实例 pods,并将其作为targetRef使用。 (#8996) -
cluster引用现在在Database、Pooler、Publication、Subscription和ScheduledBackup资源上不可变。 将这些资源重定向到不同的 cluster 没有明确定义的语义,且此前会让 controllers 处于不一致状态;现在该更新会在 API server 侧被 CEL validation rule 拒绝。 (#10743) -
原生(in-tree)Barman Cloud 支持将于 CloudNativePG 1.31.0 中移除,而不是先前公布的 1.30.0。仍然建议迁移到 Barman Cloud Plugin——它自
v1.29.1-acp.1起已随包提供。 (#11083)
本次发版中的上游变更
上游 v1.29.2 包含 2 项重要变更、4 项增强、2 项安全修复、3 项变更以及 32 项 bug 修复。除上述亮点外,在 ACP 部署中最可能产生影响的修复包括:
- 当已存在的 cluster 启用了 WAL-archiver plugin 时,switchover 会发生死锁。 在
primaryUpdateMethod: switchover下,primary 无法滚动升级,因为完成一次干净降级所需的 archiver sidecar 仍然缺失。operator 现在会就地重建 primary Pod,以便注入 sidecar 并恢复归档。该检查也覆盖会将 archiver 作为原生 sidecar 注入的插件,例如 Barman Cloud plugin。 (#11032, #11059) - 当实例创建 Job 耗尽 backoff limit 时,cluster 会无限停留在
Setting up primary。 operator 现在会检测到该终态 Job 失败,标记 cluster 为不可恢复,并指出失败的 Job 名称以及其日志位置。 (#11035) spec.postgresql.parameters接受了并非有效 PostgreSQL 参数名的 key,这可能会向postgresql.conf注入任意指令。现在 key 名称会由 webhook 进行校验。 (#11029)- 非连续的 pod 名称(例如
-1、-3),其原因是实例序号计数器在对应的 Job 和 PVC 创建之前就已前进。 (#10491) - 声明式
Database、Publication和Subscription对象在其 cluster 降级为 replica 之后,始终报告过期的 primary 侧状态 (#10871),并且在 replica cluster 上卡在Terminating中,因为 finalizer 从未释放 (#10853)。
完整的上游变更列表已发布于 cloudnative-pg/cloudnative-pg releases/tag/v1.29.2。
安全与 CVE 状态
- 本发版未发布 ERRATA。 没有任何 operand 镜像被重新构建,因此没有操作系统包级别的 CVE 在产品层面得到修复。operator 镜像在重建过程中确实吸收了基础包更新,但与其一同交付且未发生变化的 Barman Cloud plugin 和 sidecar 镜像仍继续包含相同的软件包,因此运行中部署的暴露面保持不变。
- 亮点中提到的两个 CVE 是 operator 自身 Go 代码中的缺陷,而不是操作系统包中的缺陷。因此,它们不会出现在容器镜像 CVE 扫描中;而它们未列入任何 ERRATA,并不意味着本发版没有安全内容——实际上是有的。
- 下方
v1.29.1-acp.1中列出的剩余未修复 base-OS CVE 仍然适用,且未发生变化。 任何已交付镜像上都不再存在可修复的 HIGH/CRITICAL CVE。
扩展支持
与 v1.29.1-acp.1 相比没有变化——每个 operand 镜像都以相同标签交付,因此下方 v1.29.1-acp.1 发版日志中的按 PostgreSQL 主版本扩展矩阵同样适用于本次发版,且无需任何改动。
已知问题 / 限制
v1.29.1-acp.1下列出的所有限制仍然适用,因为 operand 镜像完全相同:pgaudit必须以声明式方式启用、残留的 Debian trixie 未修复 CVE,以及 PostGIS/GDAL 传递依赖带来的未修复 HIGH 问题。- 通过 Image Volume 扩展进行原地 major 升级在本发版的 ACP 上不可用。 上游 #10366 为使用 Image Volume 扩展的 cluster 启用了
pg_upgrade原地 major 升级,但它面向的是 PostgreSQL 19 或更高版本,并且依赖 KubernetesImageVolumefeature gate,而该 feature gate 在 ACP 上默认关闭。此处交付的最高 PostgreSQL operand 版本为 18.4。
验证摘要
- 功能验证:在 ACP 4.3 / amd64 / PostgreSQL 18 的 HA cluster 上,从
v1.29.1-acp.1进行新部署和原地升级——两者均通过,0 个产品 bug。升级轮次验证了 operator 已滚动到新镜像、上一版 ClusterServiceVersion 已被替换,并且升级前数据保持完整。 - 持续集成:operator 端到端套件在精确标记的 commit 上通过。
- 范围:这是一个仅 operator 的补丁发版,因此并未再次执行性能和稳定性认证——没有 operand 镜像发生变化,所以为
v1.29.1-acp.1测得的数据平面特性继续适用。上述功能轮次运行于 ACP 4.3 / amd64 / PostgreSQL 18;其他架构和 PostgreSQL 主版本由于构建方式保持不变,而不是通过重新测量确认。
升级
支持并已验证从 v1.29.1-acp.1 进行原地升级。请参见 升级。
v1.29.1-acp.1 (2026-06-11, GA)
Alauda 版 CloudNativePG 的首个 General Availability 发版,基于上游 CNPG v1.29.1。这是相较于 v1.29.0-acp.x preview 线的一个安全 + 能力发版:所有 operand 镜像都以已修复 CVE、加固合规的基础镜像重新构建,operand 内扩展集得到扩展,并且现在已内置 Barman Cloud 备份。
亮点
- 现在已内置 Barman Cloud 备份(解决 Alpha 版本中的已知限制):
plugin-barman-cloudoperator plugin + sidecar(0.12.0)随 bundle 一并交付。 对象存储备份/恢复和 PITR 可直接开箱即用,同时还支持 CSIVolumeSnapshot备份路径。 - 扩展了 operand 内扩展:
standardPostgreSQL operands 现在除了 pgvector 0.8.2、pgaudit 和 pg_failover_slots 之外,还编译内置 PostGIS 3.6.3、zhparser 2.4 以及 TimescaleDB 2.27.2(Apache-2 OSS)。这些扩展无需启用 KubernetesImageVolumefeature gate(ACP 默认关闭)即可使用——不需要 overlay 镜像。 - IPv6 单栈修复:operator 现在在构建实例 URL 时会正确地为 IPv6 Pod 地址加括号(上游 #10682 的前移移植)。HA cluster 现在可以在 单栈 IPv6 的 ACP cluster 上正常收敛;此前 cluster 可能会冻结在单个实例上。
- 安全与合规:通过一次不依赖 gnupg 的重建移除了构建时
gnupg依赖(以及CVE-2026-24882);红线加固(nologin账户、无嗅探工具、无敏感构建产物、扁平化层)已应用到所有镜像。 任何已交付镜像上都没有可修复的 HIGH/CRITICAL CVE。 - 多架构:operator、plugin、bundle 和 PostgreSQL 容器镜像均支持 amd64 + arm64。
按 PostgreSQL 主版本划分的扩展支持
TimescaleDB 仅以 Apache-2(OSS) 版本交付(与现有 Zalando/Spilo 栈保持一致)——受 TSL 约束的功能(压缩/列存、continuous aggregates)被有意移除。Debian trixie 上没有适用于 PG 14 的 OSS TimescaleDB;请将 PG 14 的 TimescaleDB 工作负载迁移到 PG 15+。
已知问题 / 限制
pgaudit必须以声明式方式启用。 它是一个由 operator 管理、通过shared_preload_libraries加载的扩展——请通过spec.postgresql.shared_preload_libraries+pgaudit.*参数进行设置。手动执行CREATE EXTENSION pgaudit会在下一次重启时被 operator 移除。请参见 配置 → 扩展。- 残留的 base-OS 未修复 CVE(Debian trixie,
fix_available=false,已通过提交的安全例外被接受):ncurses(CVE-2025-69720)、libxml2(CVE-2026-6732)、perl/Archive::Tar(CVE-2026-42496 / 8376 / 42497 / 9538)。这些包不在 PostgreSQL 运行时路径上。 - PostGIS GDAL 传递依赖的未修复 HIGH 问题:打包 PostGIS 会拉入完整的 GDAL driver 栈(
libgdal36→ poppler/heif/curl/...),其中 codec 库里包含 Debian 尚未修复的 HIGH CVE(libheif1、libpoppler147、libgdal36、libcurl*、libexpat1、libgif7、libssh2-1t64)。已接受的理由是:PostGIS 核心地理空间/栅格路径不会调用 PDF/HEIF codec driver。 没有可修复的 HIGH/CRITICAL 问题。
验证摘要
- 功能验证:R1 新部署(arm64 + 单栈 IPv6 + 双栈,TopoLVM)+ R2 原地升级(
v1.29.0-acp.2→v1.29.1-acp.1)——100% 通过,0 个产品 bug。已在真实单栈 IPv6 环境中验证 IPv6 修复(3/3 个实例收敛;前一个构建在同一环境下会冻结在 1/3)。 - 性能:在全部 8 个场景中达到或优于现有的 Zalando operator。
- 稳定性:在持续负载下进行了 24 小时 soak 测试——无内存泄漏、0 次重启/OOM/failover。
- 高可用性:6/6 个健壮性场景(pod/PVC 删除、分区、重启、关机)——failover 并重新收敛,RPO = 0。
升级
已验证可从 v1.29.0-acp.2 进行原地升级(operand 替换;数据完整、replica 和元数据正确、0 次崩溃)。请参见 升级。
v1.29.0-acp.1 (2026-05-08, Alpha)
Alauda 版 CloudNativePG 的首个发版。基于上游 CNPG v1.29.0。
亮点
- 空气隔离环境支持:PG 14、15、16、17、18 的 PostgreSQL 容器镜像(
standard和minimal两种变体)、pgaudit/pgvector/pgbouncer 扩展,均已镜像到build-harbor.alauda.cn/middleware/cnpg/...。 - 镜像重写容忍:在 CSV 中内置
ENABLE_IMAGE_REWRITE_TOLERANCE=true,因此 admission 阶段的镜像重写(镜像仓库替换)不会触发 PostgreSQL primary pods 的虚假滚动升级。 - 预置默认镜像:
POSTGRES_IMAGE_NAME=cnpg/postgresql:18.3-standard-trixie和PGBOUNCER_IMAGE_NAME=cnpg/pgbouncer:1.25.1(rolling tag,可通过镜像仓库解析)。原生社区 quickstart 的 Cluster 和 Pooler CR 无需修改即可工作。 - L5 RBAC:
cpaas:middleware-cnpg:business-ns:{admin,edit,view,backup,restore}ClusterRole,以及ClusterImageCatalog的配套cluster-scope:*-base角色。聚合标签面向 ACPaggregate-to-namespace-admin/aggregate-to-namespace-developer。 - 多架构:operator、plugin、bundle 和 PostgreSQL 容器均支持 amd64 + arm64。
已知限制
- 备份:本发版未内置 Barman Cloud plugin。Alpha 之后将以独立的兄弟包(
cloudnative-pg-barman-cloud-plugin)形式交付。 - 从带 rc 后缀的构建通过 OLM 升级:由于严格的 SemVer §11 排序,带有
rc.X.gSHA后缀的 ArtifactVersion 在 semver 排序上高于其不带后缀的 release tag。从预发布构建升级需要使用 历史版本恢复流程。
已验证的安装路径
- 在 ACP IDP-style cluster 上全新安装:bundle 可通过
Subscription干净部署,且无需固定startingCSV。CSV 在 30 秒内进入 Succeeded。 - 3 实例
ClusterCR 使用默认镜像(POSTGRES_IMAGE_NAMErolling tag)和裸storageClass引用后,可在约 2 分钟内达到“Cluster in healthy state”。 - 通过 TCP 使用
psql -h <cluster>-rw连接并自动生成 app-user 密码,可直接开箱即用(将<cluster>替换为 Cluster CR 名称)。 - 故障切换(在 primary 上执行
kubectl delete pod):operator 会在数秒内将一个 replica 提升为 primary。