Release Notes

v1.30.1-acp.1 (2026-10-30, GA)

Minor release tracking upstream CloudNativePG v1.30.1 (upstream release date 2026-09-23). It replaces the v1.29 line: upstream 1.29.x reached end of life on 2026-09-29, and no further v1.29.x-acp.x release is planned.

Unlike v1.29.2-acp.1, this release rebuilds every operand image: PostgreSQL moves to the current minor of each major, and PgBouncer and the Barman Cloud plugin are upgraded.

Highlights

  • Product renamed to Alauda Data Services Relational Database E3. Following the ACP component naming rules, the product formerly listed as Alauda build of CloudNativePG is now named Alauda Data Services Relational Database E3 in the OperatorHub listing and this documentation. Display names only: the package name (cloudnative-pg), CRDs, API groups (postgresql.cnpg.io), RBAC role names and image paths are unchanged, so no action is needed on upgrade.

  • Safe primary election with a per-cluster Lease. The instance manager must hold a Kubernetes Lease, named after the cluster, before acting as primary, so at most one instance promotes itself at a time. It is enabled automatically; timings can be tuned through the new .spec.primaryLease stanza. The lease is a promotion gate, not a fence: primary isolation remains responsible for fencing. The operator's ClusterServiceVersion grants the leases permissions it needs. (#10627)

  • DatabaseRole for declarative role management. A PostgreSQL role can now be managed as a standalone DatabaseRole resource, with its own lifecycle, status and RBAC, instead of inline in the Cluster's .spec.managed.roles. A databaseRoleReclaimPolicy (retain, the default, or delete) controls what happens to the role when the resource is deleted. Inline roles keep working unchanged. (#6155)

  • TLS client certificates for roles. A DatabaseRole can carry a clientCertificate block; the operator then generates and renews a client certificate signed by the cluster's client CA, stored in a <databaserole-name>-client-cert Secret, which enables password-free PostgreSQL cert authentication. (#10896)

  • PgBouncer images from image catalogs. A Pooler can reference an ImageCatalog or ClusterImageCatalog entry through spec.pgbouncer.imageCatalogRef; updating the catalog entry rolls every referencing Pooler to the new image. kubectl get pooler shows a new Phase column. (#10568)

  • Cross-cluster disaster recovery tooling (ACP). This is the first release that ships the kubectl cnpg dr plugin commands for replica-cluster DR between two ACP clusters (registration, journaled switchover and replacement), the DR observer image, and validated DR alert rules. Unplanned failover is not part of this release. See Cross-cluster disaster recovery, and read its Limitations and Support statement before relying on it.

Security

  • Operator-to-instance-manager calls are now authenticated (GHSA-7qwx-x8ff-3px9). The instance manager's status port previously relied on network isolation for its operator-only endpoints (backup, pg_controldata, partial WAL archive, instance-manager upgrade). The operator now presents an in-memory client certificate whose fingerprint the instance manager checks. This hardening is new in 1.30 and not backported: on v1.29.x-acp.x, keep restricting TCP port 8000 with a NetworkPolicy. (#10579, GHSA-7qwx-x8ff-3px9)
  • CVE-2026-55769 (search_path pinning) and CVE-2026-55765 (operator-side SCRAM encoding) are included, as they already were in v1.29.2-acp.1.
  • A webhook validation bypass through an absolute extension path is fixed in upstream v1.30.1. (#11210)
  • Scanner results. A container scan reports 0 fixable CVEs of any severity on the shipped operator, kubectl cnpg plugin, DR observer, Barman Cloud plugin and sidecar images, and 0 fixable HIGH/CRITICAL on the PostgreSQL and PgBouncer images, on both amd64 and arm64. The pgvector, pgaudit and PostGIS extension images contain no operating-system packages, so a container scan has nothing to analyse in them.
  • These counts do not mean that no fixes exist. PgBouncer and the extensions are installed from the PostgreSQL project's package repository (PGDG), while the scanner compares them with the Debian tracker, which does not show those fixes. Known issues the scan does not report as fixable:
    • PgBouncer 1.25.2 is affected by CVE-2026-107349 and CVE-2026-6668 (a client that has not authenticated can make PgBouncer stop serving) and CVE-2026-19888 (a client with a valid user name and no password can crash it), among others. They are fixed in PgBouncer 1.26.1. The fix is planned for the next patch release. Until then, restrict network access to the Pooler with a NetworkPolicy.
    • The pgvector extension image is version 0.8.6 and is affected by CVE-2026-103484, fixed in 0.8.7. The fix is planned for the next patch release. The standard PostgreSQL 18 image includes pgvector 0.8.7.
    • PostGIS 3.6.4 and earlier are affected by CVE-2026-73515. The fix is planned for the next PostgreSQL image rebuild.

Component versions

Componentv1.29.2-acp.1v1.30.1-acp.1
Upstream CloudNativePG1.29.21.30.1
PostgreSQL 18 (default)18.418.6
PostgreSQL 17 / 16 / 15 / 1417.10 / 16.14 / 15.18 / 14.2317.11 / 16.15 / 15.19 / 14.24
PgBouncer1.25.11.25.2
Barman Cloud plugin0.12.00.15.1
pgvector extension image (PostgreSQL 18 only)0.8.20.8.6
pgaudit extension image (PostgreSQL 18 only)18.018.0 (rebuilt)
PostGIS extension image (PostgreSQL 18 only)3.6.33.6.3 library with 3.6.4 SQL scripts (see Known issues)

The images this release ships, as listed in the bundle's relatedImages:

ImageReference
PostgreSQL 18 (operator default)registry-dev.alauda.io/eco-oss/postgres/cnpg/postgresql:18.6-202610260653-standard-trixie
PostgreSQL 14 to 18registry-dev.alauda.io/eco-oss/postgres/cnpg/postgresql:<MM.mm>-202610260653-{standard,minimal}-trixie (18.6, 17.11, 16.15, 15.19, 14.24)
pgvectorregistry-dev.alauda.io/eco-oss/postgres/cnpg/pgvector:0.8.6-202610080947-pg18-trixie
pgauditregistry-dev.alauda.io/eco-oss/postgres/cnpg/pgaudit:18.0-202610080947-pg18-trixie
PostGISregistry-dev.alauda.io/eco-oss/postgres/cnpg/postgis:3.6.3-202610080947-pg18-trixie
PgBouncer (operator default)registry-dev.alauda.io/eco-oss/postgres/cnpg/pgbouncer:1.25.2-202610260735-trixie
Barman Cloud pluginregistry-dev.alauda.io/eco-oss/postgres/cnpg/plugin-barman-cloud:0.15.1-202610260735
Barman Cloud plugin sidecarregistry-dev.alauda.io/eco-oss/postgres/cnpg/plugin-barman-cloud-sidecar:0.15.1-202610260735
DR observer (new)registry-dev.alauda.io/eco-oss/postgres/kubectl-cnpg-dr-observer:<operator version>
  • Image paths changed: update air-gapped mirror lists and ImageWhiteLists. Every image of this release is published under registry-dev.alauda.io/eco-oss/postgres/... instead of build-harbor.alauda.cn/middleware/cnpg/..., and the DR observer image (kubectl-cnpg-dr-observer) is new. A mirror list or an ImageWhiteList built for v1.29.x-acp.x does not cover them: rebuild it from this release's image list before installing or upgrading.

  • PostgreSQL 14 reaches community end of life on 2026-11-12. It is still shipped in this release; plan the move to a newer major.

  • Native (in-tree) Barman Cloud support is still scheduled for removal in CloudNativePG 1.31.0. Use the bundled Barman Cloud plugin.

Upstream changes in this release

Beyond the highlights, the upstream v1.30.0 and v1.30.1 fixes most likely to matter in an ACP deployment:

  • An unresponsive old primary is demoted immediately during failover, instead of waiting on checkpoint and fast-shutdown attempts that could never complete, so it can rejoin as a replica of the new primary. Demotion can still take a minute or more if PostgreSQL keeps ignoring shutdown signals. (#11347)
  • Failover and Pod recreation no longer stall while any instance is fenced. A fenced instance kept reporting itself healthy, which blocked failover handling for an unrelated failure elsewhere in the cluster until the fencing was removed by hand. (#11274)
  • A pending failover no longer stalls or is silently reverted; it completes once the WAL receivers are down, with quorum safety rechecked right before promotion. (#11336)
  • The cluster reference is immutable on Database, Pooler, Publication, Subscription and ScheduledBackup (already enforced in v1.29.2-acp.1).
  • Kubernetes 1.34, 1.35 and 1.36 are the versions upstream supports and tests.

The complete upstream change lists are published at releases/tag/v1.30.0 and releases/tag/v1.30.1.

Validation summary

  • Functional: new deployment passed on ACP 4.1.6, 4.2.5, 4.3.2, 4.3.3 (arm64, IPv6-only) and 4.4.0, covering RBAC, cluster lifecycle, extensions, connection pooling, Barman Cloud backup, restore and point-in-time recovery, DR alert rules and DatabaseRole, plus monitoring everywhere except ACP 4.3.3, which had no monitoring stack. Image-volume extensions were tested on ACP 4.4.0 only, the one version with the ImageVolume feature gate on. Backups through CSI volume snapshots were not tested: none of these clusters had a snapshot class.
  • Upgrade: in-place upgrade from v1.29.2-acp.1 passed on ACP 4.3.3 (arm64, IPv6-only) and 4.4.0. Every instance rolled exactly once, the primary Lease was created, data was preserved, and poolers, scheduled backups and WAL archiving kept working.
  • High availability (ACP 4.3.3, arm64): primary pod deletion, switchover, network partition, fenced-instance failover and PVC replacement all completed with RPO = 0 and a single primary throughout. A primary whose PostgreSQL processes hang delays failover; see Known issues.
  • Stability: a 34-hour soak under steady load on ACP 4.3.3 (arm64) had no restart, no failover and no data mismatch between primary and replica, and every load run succeeded. Memory use was not measured: that environment has no monitoring stack.
  • Continuous integration: the operator end-to-end suite (smoke, basic, backup and restore, replication) runs on every change to the release branch, in a virtual cluster on Kubernetes 1.35 with Ceph RBD storage and the Barman Cloud plugin installed.
  • Not run for this release: performance benchmarking, and node shutdown/reboot scenarios.

ACP fixes

  • Instances are no longer recreated in a loop when ACP rewrites an image to its 3rdparty/ path. ACP admits an image from a registry it does not map path-preserving, such as the registry-dev.alauda.io images of this release, as <platform registry>/3rdparty/<path>. The image rewrite tolerance (ENABLE_IMAGE_REWRITE_TOLERANCE, enabled by default in the ACP bundle) ignored only the registry host, so the operator saw a different image on every non-primary instance and recreated it about every 25 seconds. The tolerance now also ignores a leading 3rdparty/ path segment. This fixes the recreation loop only; whether the rewritten image can be pulled is covered by the image rewrite known issue below.

Known issues

  • The PostGIS extension image mixes two versions. The image tagged 3.6.3 contains the PostGIS 3.6.3 library with 3.6.4 SQL scripts. CREATE EXTENSION succeeds, and postgis_full_version() reports that the core procedures need upgrade. Use the PostGIS included in the standard PostgreSQL 18 image instead.

  • Some ACP clusters cannot pull the images of this release without an image rewrite rule. The images are published under registry-dev.alauda.io, and the marketplace component of some ACP clusters rewrites such images to a 3rdparty/ path that does not exist in the platform registry. The operator then stays in Installing with ImagePullBackOff. ACP 4.3.3 and later, and ACP 4.4, are not affected. After pushing the package and before installing or upgrading, run the image rewrite check and add the rule if it prints RULE NEEDED.

    Supported ACP versions for this release: ACP 4.1 to 4.4, with the rewrite rule where the check asks for it. Validated on ACP 4.1.6, 4.2.5, 4.3.2, 4.3.3 (arm64, IPv6-only) and 4.4.0.

    Whether a cluster is affected depends on the version of its platform marketplace component, not only on the ACP version, so always run the check in step 1 of the rule procedure instead of deciding from the ACP version. Measured on 2026-10-30: ACP 4.1.6 and 4.2.5 clusters were affected and installed correctly with the rule; an ACP 4.3.2 cluster whose marketplace component was already updated was not affected and needed no rule.

  • Extensions mounted as image volumes need platform registry references. ACP rewrites the image of every container of a pod, but not the image of an image volume. An extension declared under .spec.postgresql.extensions with the shipped registry-dev.alauda.io/... reference is therefore pulled from registry-dev.alauda.io itself, and the instance fails with ErrImagePull. Write the reference against the platform registry instead, where the package push places these images:

    REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.registryAddress}')
    echo "$REGISTRY/eco-oss/postgres/cnpg/pgvector:0.8.6-202610080947-pg18-trixie"

    Image volumes also need the Kubernetes ImageVolume feature gate, which is off by default before Kubernetes 1.35 (ACP 4.1 to 4.3). With the gate off, the API server drops the image volumes without an error or event, and an instance that preloads an extension from one (for example pgaudit) fails to start with could not access file "pgaudit". On those versions, use the extensions included in the standard PostgreSQL images (pgvector, PostGIS and pgaudit for every major) instead.

  • A primary whose PostgreSQL processes hang delays failover until they stop. If every PostgreSQL process of the primary stops responding, for example because the processes are frozen or blocked on storage, while the instance manager in the same container keeps running, the instance manager keeps renewing the primary Lease (see Highlights). No replica can promote while the lease is held, and the lease is released only after PostgreSQL has shut down, which a hung process cannot do. The liveness probe checks the instance manager, not PostgreSQL, so the pod is not restarted either. Upstream v1.30.1 already demotes an unreachable primary without the fast-shutdown attempts (#11347), but the immediate shutdown it sends is also ignored by a frozen process. Tracked upstream as #11806.

    Measured on ACP 4.3.3 (arm64) with every PostgreSQL process of the primary frozen: the cluster reported Failing over after 62 seconds, the frozen primary kept the lease, and a replica was promoted only 364 seconds after the freeze, as soon as the processes resumed. No acknowledged write was lost, but writes failed for the whole time.

    Mitigation. If a cluster stays in Failing over for more than about a minute while the <cluster> lease (kubectl get lease <cluster> -n <namespace>) is still held and renewed by the old primary, and the old primary's node is reachable, force-delete the old primary's pod:

    kubectl delete pod <old-primary-pod> -n <namespace> --grace-period=0 --force

    This stops the instance manager, the lease expires after leaseDurationSeconds (15 seconds by default), and a replica promotes. In the same test, the replica was promoted 18 seconds after the deletion, and the old instance rejoined as a replica. The pods' terminationGracePeriodSeconds is 1800, so a deletion without --grace-period=0 --force can wait up to 30 minutes. This promotion follows the lease-expiry path: a replica that is catching up from the WAL archive, rather than streaming, can miss WAL the old primary had not yet archived. Do not force-delete a pod whose node is unreachable: the container may still be running there.

  • DR alerts are not listed in the ACP console alert center. Observed on ACP 4.4.0 (2026-10-27): the DR observer's PrometheusRule alerts fire and reach vmalert and Alertmanager, but the console's alert center lists only alerts defined as ACP alert policies. To see a DR alert in the console, create a Custom Metric Alert for it under Operations Center → Alerts → Rules.

Upgrade

In-place upgrade from v1.29.2-acp.1 is the supported path. Read Upgrading to v1.30 before upgrading.

v1.29.2-acp.1 (2026-08-14, GA)

Patch release tracking upstream CloudNativePG v1.29.2 (upstream release date 2026-06-29).

This is an operator-only release: the operator and bundle images are rebuilt, and every operand image — PostgreSQL, PostGIS, pgvector, pgaudit, PgBouncer, and the Barman Cloud plugin and its sidecar — is carried forward at the identical image tag as v1.29.1-acp.1.

Highlights

  • Two upstream security fixes, both in operator code.

    • CVE-2026-55769 — the operator now pins search_path = pg_catalog, public, pg_temp on every connection it opens. Previously a database owner could plant overloaded built-in operators in the public schema and alter the search_path so that the operator's introspection probes — which run as the cluster superuser — resolved those overloads before pg_catalog, a privilege-escalation chain of the same class as CVE-2018-1058. (#10774, GHSA-x8c2-3p4r-v9r6)
    • CVE-2026-55765 — the operator now SCRAM-SHA-256 encodes cleartext role passwords before issuing CREATE/ALTER ROLE ... PASSWORD, so the literal PostgreSQL parses — and that extensions such as pg_stat_statements or pgaudit may capture — is the SCRAM verifier rather than the cleartext secret. Pre-hashed (MD5 or SCRAM) values are forwarded unchanged, and the per-Secret annotation cnpg.io/passwordPassthrough: "enabled" opts out. (#10724, GHSA-w3gf-xc94-wvmj)
  • endpointslices RBAC granted in the OLM bundle. Upstream v1.29.2 makes the operator watch the EndpointSlices backing CNPG-i plugin Services, so that an upgraded plugin is picked up as soon as its pods become Ready instead of at the next resync. The matching permission was absent from the ClusterServiceVersion, and without it the operator entered CrashLoopBackOff on install. It is granted in this release.

  • Default PostgreSQL version is now 18.4. (#10719)

  • Kubernetes 1.36 is supported. (#10900)

  • A Cluster is now a valid autoscaler target. The scale subresource exposes status.selector, which lets the Vertical and Horizontal Pod Autoscalers map a Cluster to its instance pods and use it as a targetRef. (#8996)

  • The cluster reference is now immutable on the Database, Pooler, Publication, Subscription, and ScheduledBackup resources. Repointing one of these at a different cluster has no well-defined semantics and previously left the controllers inconsistent; the update is now rejected at the API server by a CEL validation rule. (#10743)

  • Native (in-tree) Barman Cloud support will be removed in CloudNativePG 1.31.0, not 1.30.0 as previously announced. Migration to the Barman Cloud Plugin — bundled since v1.29.1-acp.1 — is still recommended. (#11083)

Upstream changes in this release

Upstream v1.29.2 carries 2 important changes, 4 enhancements, 2 security fixes, 3 changes, and 32 bug fixes. Beyond the highlights above, the fixes most likely to matter in an ACP deployment are:

  • Switchover deadlock when a WAL-archiver plugin was enabled on an existing cluster. With primaryUpdateMethod: switchover the primary could not be rolled out, because a clean demotion needs the archiver sidecar that was still missing. The operator now recreates the primary Pod in place so the sidecar is injected and archiving resumes. The check also covers plugins that inject the archiver as a native sidecar, such as the Barman Cloud plugin. (#11032, #11059)
  • A cluster staying in Setting up primary indefinitely when the instance-creation Job exhausted its backoff limit. The operator now detects the terminal Job failure, marks the cluster unrecoverable, names the failed Job and points to its logs. (#11035)
  • spec.postgresql.parameters accepting keys that are not valid PostgreSQL parameter names, which could inject arbitrary directives into postgresql.conf. Key names are now validated by the webhook. (#11029)
  • Non-sequential pod names (for example -1, -3), caused by the instance serial counter being advanced before the corresponding Job and PVCs were created. (#10491)
  • Declarative Database, Publication, and Subscription objects reporting a stale primary-side status forever after their cluster was demoted to a replica (#10871), and getting stuck in Terminating on a replica cluster because the finalizer was never released (#10853).

The complete upstream change list is published at cloudnative-pg/cloudnative-pg releases/tag/v1.29.2.

Security and CVE status

  • No ERRATA is published for this release. No operand image was rebuilt, so no operating-system package CVE is fixed at product level. The operator image does pick up base package updates as part of its rebuild, but the same packages continue to ship in the unchanged Barman Cloud plugin and sidecar images delivered alongside it, so the exposure of a running deployment is unchanged.
  • The two CVEs in the highlights are defects in the operator's own Go code, not in operating-system packages. They are therefore invisible to container-image CVE scanning, and their absence from any ERRATA does not mean this release carries no security content — it does.
  • The residual no-fix base-OS CVEs listed under v1.29.1-acp.1 below still apply, unchanged. 0 fixable HIGH/CRITICAL CVEs remain on any shipped image.

Extension support

Unchanged from v1.29.1-acp.1 — every operand image ships at the same tag, so the per-major extension matrix in the v1.29.1-acp.1 notes below applies to this release without change.

Known issues / limitations

  • All limitations listed under v1.29.1-acp.1 still apply, since the operand images are identical: pgaudit must be enabled declaratively, the residual no-fix Debian trixie CVEs, and the PostGIS/GDAL transitive no-fix HIGHs.
  • In-place major upgrades via Image Volume extensions are not usable on ACP in this release. Upstream #10366 enables pg_upgrade in-place major upgrades for clusters that use Image Volume extensions, but it targets PostgreSQL 19 or later, and it depends on the Kubernetes ImageVolume feature gate, which is off by default on ACP. The highest PostgreSQL operand shipped here is 18.4.

Validation summary

  • Functional: new-deploy and in-place upgrade from v1.29.1-acp.1, on ACP 4.3 / amd64 / PostgreSQL 18, HA cluster — both passed with 0 product bugs. The upgrade round verified that the operator rolled to the new image, the previous ClusterServiceVersion was replaced, and pre-upgrade data was preserved intact.
  • Continuous integration: the operator end-to-end suite passed on the exact tagged commit.
  • Scope: this is an operator-only patch release, and performance and stability qualification were not repeated for it — no operand image changed, so the data-plane characteristics measured for v1.29.1-acp.1 continue to apply. The functional rounds above were run on ACP 4.3 / amd64 / PostgreSQL 18; other architectures and PostgreSQL majors are unchanged from the previous release by construction, not by re-measurement.

Upgrade

In-place upgrade from v1.29.1-acp.1 is supported and verified. See Upgrade.

v1.29.1-acp.1 (2026-06-11, GA)

First General Availability release of Alauda build of CloudNativePG, based on upstream CNPG v1.29.1. This is a security + capability release over the v1.29.0-acp.x preview line: all operand images were rebuilt against CVE-patched, compliance-hardened bases, the in-operand extension set was expanded, and Barman Cloud backup is now bundled.

Highlights

  • Barman Cloud backup is now bundled (resolves the Alpha known-limitation): the plugin-barman-cloud operator plugin + sidecar (0.12.0) ship inside the bundle. Object-store backup/restore and PITR work out of the box, alongside the CSI VolumeSnapshot backup path.
  • Expanded in-operand extensions: the standard PostgreSQL operands now compile in PostGIS 3.6.3, zhparser 2.4, and TimescaleDB 2.27.2 (Apache-2 OSS) in addition to pgvector 0.8.2, pgaudit, and pg_failover_slots. These are available without enabling the Kubernetes ImageVolume feature gate (which is off by default on ACP) — no overlay image needed.
  • IPv6 single-stack fix: the operator now correctly brackets IPv6 Pod addresses when building instance URLs (forward-port of upstream #10682). HA clusters now converge on single-stack IPv6 ACP clusters; previously a cluster could freeze at a single instance.
  • Security & compliance: the build-time gnupg dependency (and CVE-2026-24882) is removed via a gnupg-free rebuild; red-line hardening (nologin accounts, no sniffer tools, no sensitive build artifacts, flattened layers) is applied across all images. 0 fixable HIGH/CRITICAL CVEs remain on any shipped image.
  • Multi-architecture: amd64 + arm64 across operator, plugin, bundle, and PostgreSQL container images.

Extension support by PostgreSQL major

PG majorpgvectorpgauditpostgis (3.6.3)zhparser (2.4)timescaledb (Apache-2 OSS 2.27.2)
14✓✓✓✓✗ (not available)
15✓✓✓✓✓
16✓✓✓✓✓
17✓✓✓✓✓
18✓✓✓✓✓

TimescaleDB ships as the Apache-2 (OSS) edition only (matching the incumbent Zalando/Spilo stack) — TSL-gated features (compression/columnstore, continuous aggregates) are intentionally absent. There is no OSS TimescaleDB for PG 14 on Debian trixie; migrate PG 14 TimescaleDB workloads to PG 15+.

Known issues / limitations

  • pgaudit must be enabled declaratively. It is an operator-managed, shared_preload_libraries-loaded extension — set it via spec.postgresql.shared_preload_libraries + pgaudit.* parameters. A manual CREATE EXTENSION pgaudit is dropped on the next restart by the operator. See Configuration → Extensions.
  • Residual no-fix base-OS CVEs (Debian trixie, fix_available=false, accepted under a filed security exception): ncurses (CVE-2025-69720), libxml2 (CVE-2026-6732), perl/Archive::Tar (CVE-2026-42496 / 8376 / 42497 / 9538). These packages are not on the PostgreSQL runtime path.
  • PostGIS GDAL transitive no-fix HIGHs: bundling PostGIS pulls the full GDAL driver stack (libgdal36 → poppler/heif/curl/…), which carries Debian-unfixed HIGH CVEs in codec libraries (libheif1, libpoppler147, libgdal36, libcurl*, libexpat1, libgif7, libssh2-1t64). Accepted: PostGIS core geospatial/raster paths do not invoke the PDF/HEIF codec drivers. 0 fixable HIGH/CRITICAL.

Validation summary

  • Functional: R1 new-deploy (arm64 + single-stack IPv6 + dual-stack, TopoLVM) + R2 in-place upgrade (v1.29.0-acp.2 → v1.29.1-acp.1) — 100% pass, 0 product bugs. IPv6 fix verified on real single-stack IPv6 (3/3 instances converge; the prior build froze at 1/3 in the same environment).
  • Performance: meets or exceeds the incumbent Zalando operator across all 8 scenarios.
  • Stability: 24h soak under sustained load — no memory leak, 0 restart/OOM/failover.
  • High availability: 6/6 robustness scenarios (pod/PVC deletion, partition, reboot, shutdown) — failover + reconverge with RPO = 0.

Upgrade

In-place upgrade from v1.29.0-acp.2 is verified (operand swap; data intact, replica and metadata correct, 0 crash). See Upgrade.

v1.29.0-acp.1 (2026-05-08, Alpha)

First release of Alauda build of CloudNativePG. Based on upstream CNPG v1.29.0.

Highlights

  • Air-gapped operation: PostgreSQL container images for PG 14, 15, 16, 17, 18 (both standard and minimal variants), pgaudit/pgvector/pgbouncer extensions, all mirrored to build-harbor.alauda.cn/middleware/cnpg/....
  • Image-rewrite tolerance: ENABLE_IMAGE_REWRITE_TOLERANCE=true baked in the CSV so admission-time image rewriting (mirror substitution) does not trigger phantom rollouts of PostgreSQL primary pods.
  • Pre-baked default images: POSTGRES_IMAGE_NAME=cnpg/postgresql:18.3-standard-trixie and PGBOUNCER_IMAGE_NAME=cnpg/pgbouncer:1.25.1 (rolling tags, mirror-resolvable). Bare community-quickstart Cluster and Pooler CRs work zero-edit.
  • L5 RBAC: cpaas:middleware-cnpg:business-ns:{admin,edit,view,backup,restore} ClusterRoles, plus cluster-scope:*-base companion roles for ClusterImageCatalog. Aggregation labels target ACP aggregate-to-namespace-admin / aggregate-to-namespace-developer.
  • Multi-architecture: amd64 + arm64 across operator, plugin, bundle, and PostgreSQL containers.

Known limitations

  • Backup: Barman Cloud plugin is not bundled in this release. It will ship as a separate sibling package (cloudnative-pg-barman-cloud-plugin) post-Alpha.
  • OLM upgrade from rc-suffixed builds: due to strict SemVer §11 ordering, an rc.X.gSHA-suffixed ArtifactVersion semver-sorts above its bare release tag. Upgrading from a pre-release build requires the historical-version recovery sequence.

Verified install paths

  • Fresh install on ACP IDP-style cluster: bundle deploys cleanly via Subscription without startingCSV pin. CSV reaches Succeeded in under 30 seconds.
  • 3-instance Cluster CR with default image (POSTGRES_IMAGE_NAME rolling tag) and bare storageClass reference reaches "Cluster in healthy state" in ~2 minutes.
  • psql -h <cluster>-rw connection via TCP with auto-generated app-user password works out of the box (replace <cluster> with the Cluster CR name).
  • Failover (kubectl delete pod on primary): operator promotes a replica to primary in single-digit seconds.

Trademark Notice

CloudNativePG™ is a trademark of The Linux Foundation.

PostgreSQL® is a registered trademark of the PostgreSQL Community Association of Canada.

Alauda is an independent vendor. This product is not affiliated with, endorsed by, or sponsored by The Linux Foundation, PostgreSQL Community Association of Canada. All trademarks are the property of their respective owners and are used here for identification purposes only.