Release notes for CloudNativePG 1.25

History of user-visible changes in the 1.25 minor release of CloudNativePG.

For a complete list of changes, please refer to the commits on the release branch in GitHub.

Version 1.25.0

Release Date: December 23, 2024

Features

  • Declarative Database Management: Introduce the Database Custom Resource Definition (CRD), enabling users to create and manage PostgreSQL databases declaratively within a cluster. (#5325)

  • Logical Replication Management: Add Publication and Subscription CRDs for declarative management of PostgreSQL logical replication. These simplify replication setup and facilitate online migrations to CloudNativePG. (#5329)

  • Experimental Support for CNPG-I: Introducing CNPG-I (CloudNativePG Interface), a standardized framework designed to extend CloudNativePG functionality through third-party plugins and foster the growth of the CNPG ecosystem. The Barman Cloud Plugin serves as a live example, illustrating how plugins can be developed to enhance backup and recovery workflows. Although CNPG-I support is currently experimental, it offers a powerful approach to extending CloudNativePG without modifying the operator’s core code—akin to PostgreSQL extensions. We welcome community feedback and contributions to shape this exciting new capability.

Enhancements

  • Add the dataDurability option to the .spec.postgresql.synchronous stanza, allowing users to choose between required (default) or preferred durability in synchronous replication. (#5878)
  • Enable customization of startup, liveness, and readiness probes through the .spec.probes stanza. (#6266)
  • Support additional pg_dump and pg_restore options to enhance database import flexibility. (#6214)
  • Add support for maxConcurrentReconciles in the CloudNativePG controller and set the default to 10, improving the operator's ability to efficiently manage larger deployments out of the box. (#5678)
  • Add the cnpg.io/userType label to secrets generated for predefined users, specifically superuser and app. (#4392)
  • Improved validation for the spec.schedule field in ScheduledBackups, raising warnings for potential misconfigurations. (#5396)
  • cnpg plugin:
    • Enhance the backup command to support plugins. (#6045)
    • Honor the User-Agent header in HTTP requests with the API server. (#6153)

Bug Fixes

  • Ensure the former primary flushes its WAL file queue to the archive before re-synchronizing as a replica, reducing recovery times and enhancing data consistency during failovers. (#6141)
  • Clean the WAL volume along with the PGDATA volume during bootstrap. (#6265)
  • Update the operator to set the cluster phase to Unrecoverable when all previously generated PersistentVolumeClaims are missing. (#6170)
  • Fix the parsing of the synchronous_standby_names GUC when .spec.postgresql.synchronous.method is set to first. (#5955)
  • Resolved a potential race condition when patching certain conditions in CRD statuses, improving reliability in concurrent updates. (#6328)
  • Correct role changes to apply at the transaction level instead of the database context. (#6064)
  • Remove the primary_slot_name definition from the override.conf file on the primary to ensure it is always empty. (#6219)
  • Configure libpq environment variables, including PGHOST, in PgBouncer pods to enable seamless access to the pgbouncer virtual database using psql from within the container. (#6247)
  • Remove unnecessary updates to the Cluster status when verifying changes in the image catalog. (#6277)
  • Prevent panic during recovery from an external server without proper backup configuration. (#6300)
  • Resolved a key collision issue in structured logs, where the name field was inconsistently used to log two distinct values. (#6324)
  • Ensure proper quoting of the inRoles field in SQL statements to prevent syntax errors in generated SQL during role management. (#6346)
  • cnpg plugin:
    • Ensure the kubectl context is properly passed in the psql command. (#6257)
    • Avoid displaying physical backups block when empty with status command. (#5998)

Supported Versions

  • Kubernetes: 1.32, 1.31, 1.30, and 1.29
  • PostgreSQL: 17, 16, 15, 14, and 13
    • Default image: PostgreSQL 17.2
    • Officially dropped support for PostgreSQL 12
    • PostgreSQL 13 support ends on November 12, 2025