RATATOSKRATATOSK
Sign in

CloudNativePG

v1.28.0Storage & Data
Dec 9, 2025

CHECK 3OTHER 30

This release adds declarative management and security configuration, changes defaults, broadens supported operations, and includes correctness fixes. It also updates supported Kubernetes and PostgreSQL versions and adds configuration options for backups, TLS, monitoring, and reporting.

Check if affected (3)

  • breakingThe replica tcp_user_timeout default

    Applies if you run replica instances.

    The default tcp_user_timeout is now 5 seconds for replica instances, improving network failure detection.

  • breakingCluster-wide postgres and operator user settings, replaced

    Applies if you configure postgres or operator.

    The previous cluster-wide postgres and operator user settings are replaced by granular securityContext and containerSecurityContext configuration.

  • breakingThe PgBouncer auth_dbname default

    Applies if you use PgBouncer.

    For PgBouncer integration, auth_dbname is automatically set to the pgbouncer database, simplifying authentication setup.

All 30 other recorded changesadditions 10 · fixes 9 · value changes 6 · constraints 4 · renames 1

additions (10)

  • Introduced comprehensive declarative management for Foreign Data Wrappers (FDW) by extending the Database CRD. This feature adds the .spec.fdws and .spec.servers fields, allowing you to manage FDW extensions and their corresponding foreign servers directly from the Database resource.
  • Introduced securityContext at the pod level and containerSecurityContext for individual containers (including postgres, init, and sidecars).
  • Introduced the alpha.cnpg.io/unrecoverable=true annotation for replica pods.
  • Introduced a new caching layer for user-defined monitoring queries to reduce load on the PostgreSQL database.
  • Allowed providing stage-specific pg_restore options (preRestore, postRestore, dataRestore) during database import.
  • Added the PostgreSQL majorVersion to the Backup object's status for easier identification and management.
  • Added the PGBOUNCER_IMAGE_NAME operator configuration parameter to allow overriding the default PgBouncer image.
  • Added a --timeout flag to the kubectl cnpg status command for configuring the timeout for filesystem operations such as calculating cluster size.
  • Allowed providing fine-grained custom TLS configurations for PgBouncer. The Pooler CRD was extended with clientTLSSecret, clientCASecret, serverTLSSecret, and serverCASecret fields under .spec.pgbouncer.
  • Added optional TLS support for the operator's metrics server (port 8080). This feature is opt-in and enabled by setting the METRICS_CERT_DIR environment variable, which instructs the operator to look for tls.crt and tls.key files in the specified directory.

fixes (9)

  • Improved resilience of all probe types (liveness, readiness, and startup) to transient Kubernetes API server connectivity issues.
  • Fixed the CheckEmptyWalArchive safeguard to run correctly when restoring from a volume snapshot using CNPG-I backup/WAL plugins (e.g., plugin-barman-cloud).
  • Improved error reporting when ImageCatalog retrieval fails.
  • Fixed TLS certificate verification issues when connecting to CNPG-I plugins by adding the cnpg.io/pluginServerName annotation.
  • Fixed an issue where the instance manager controller could fail to restart after an error, reporting a "controller already exists" message.
  • Fixed incorrect WAL restore path handling in plugins when the destination path is absolute, preventing path duplication issues.
  • Fixed the CREATE PUBLICATION SQL generation for multi-table publications to be backward-compatible with PostgreSQL 13+.
  • Fixed backup failures in complex pod definitions by reliably selecting the postgres container by name instead of by index.
  • Fixed bugs in cnpg report log collection, especially when fetching previous logs.

value changes (6)

  • Promoted the quorum-based failover feature, introduced experimentally in 1.27.0, to a stable API.
  • Updated the default PostgreSQL version to 18.1-system-trixie.
  • Updated the default PgBouncer version to **1.25.1** for new Pooler deployments.
  • Adopted standard Kubernetes recommended labels (e.g., app.kubernetes.io/name) for all resources generated by CloudNativePG (Clusters, Backups, Poolers, etc.).
  • Enhanced cluster restore to wait for all init containers to complete before starting the restore process.
  • Improved cnpg report to generate more shell-friendly file names.

constraints (4)

  • Enabled simultaneous image and configuration changes when using primaryUpdateMethod: restart, allowing you to update the container image (including PostgreSQL version or extensions) and PostgreSQL configuration settings in the same operation.
  • Enabled cnpg report operator to work with minimal permissions by making only the operator deployment required.
  • Kubernetes 1.34, 1.33, and 1.32
  • PostgreSQL 18, 17, 16, 15, and 14 - PostgreSQL 18.1 is the default image

renames (1)

  • This data-driven failover mechanism is now configured via the spec.postgresql.synchronous.failoverQuorum field, graduating from the previous alpha.cnpg.io/failoverQuorum annotation.
Add CloudNativePG to your stack

A weekly email arrives when a release needs action. Like the breaking changes in this release.

Add to stack →