---
id: v1.27
title: Release notes for CloudNativePG 1.27
---

# Release notes for CloudNativePG 1.27

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

For a complete list of changes, please refer to the
[commits](https://github.com/cloudnative-pg/cloudnative-pg/commits/release-1.27)
on the release branch in GitHub.

## Version 1.27.4

**Release date:** Mar 31, 2026

:::warning
    This is the final release in the 1.27.x series.
    Users are strongly encouraged to upgrade to a newer minor version, as 1.27
    is no longer supported.
:::

### Important changes

- Updated the deprecation notice for native (in-tree) Barman Cloud support to
  reflect that it will now be removed in CloudNativePG 1.30.0, rather than
  1.29.0. Users are still encouraged to migrate to the Barman Cloud Plugin.
  ([#10167](https://github.com/cloudnative-pg/cloudnative-pg/pull/10167)) <!-- 1.28 1.27 -->

### Enhancements

- Improved the `Pooler` CRD with support for granular configuration of TLS
  cipher suites and minimum/maximum TLS versions. This enables administrators
  to meet strict security compliance requirements for pooler-to-client and
  pooler-to-server connections.
  Contributed by @alex1989hu.
  ([#9571](https://github.com/cloudnative-pg/cloudnative-pg/pull/9571)) <!-- 1.28 1.27 1.25 -->

- Improved the reliability of major upgrades by setting `BackoffLimit=0` on the
  upgrade job, preventing unnecessary retries of a failed `pg_upgrade`. The
  operator now automatically deletes the failed job when a user reverts the
  container image, allowing the cluster to restart gracefully on the original
  version.
  ([#10104](https://github.com/cloudnative-pg/cloudnative-pg/pull/10104),
  [#10298](https://github.com/cloudnative-pg/cloudnative-pg/pull/10298)) <!-- 1.28 1.27 -->

- Improved role management by verifying the instance is the primary before
  each reconciliation cycle, avoiding unnecessary reconciliation attempts and
  spurious error messages on read-only replicas.
  ([#9971](https://github.com/cloudnative-pg/cloudnative-pg/pull/9971)) <!-- 1.28 1.27 1.25 -->

- Extended the CRD schemas for `Cluster`, `ImageCatalog`, and
  `ClusterImageCatalog` to accept the `extensions`, `bin_path`, and `env`
  fields introduced in 1.29. The operator ignores these fields on older
  versions, but accepting them in the schema allows users to share a single
  manifest across clusters running different CNPG versions.
  ([#10131](https://github.com/cloudnative-pg/cloudnative-pg/pull/10131),
  [#10387](https://github.com/cloudnative-pg/cloudnative-pg/pull/10387)) <!-- 1.28 1.27 -->

- The operator now honors the `primaryUpdateMethod` when adding new PVCs to a
  cluster, ensuring that the rollout strategy (e.g., switchover vs. restart) is
  respected during storage expansion or additions.
  ([#9720](https://github.com/cloudnative-pg/cloudnative-pg/pull/9720)) <!-- 1.28 1.27 -->

### Security and Supply Chain

- **Security best practices integration**: integrated the OpenSSF baseline
  scanner and added a `SECURITY-INSIGHTS.yaml` file to the repository to align
  with industry-standard security reporting.
  ([#10054](https://github.com/cloudnative-pg/cloudnative-pg/pull/10054), <!-- 1.28 1.27 1.25 -->
  [#10062](https://github.com/cloudnative-pg/cloudnative-pg/pull/10062)) <!-- 1.28 1.27 1.25 -->

- **SLSA provenance and SBOMs**: added SLSA (Supply-chain Levels for Software
  Artifacts) provenance to release binaries and container images. Additionally,
  enabled Software Bill of Materials (SBOM) generation within the GoReleaser
  pipeline for improved dependency transparency.
  ([#10048](https://github.com/cloudnative-pg/cloudnative-pg/pull/10048), <!-- 1.28 1.27 1.25 -->
  [#10074](https://github.com/cloudnative-pg/cloudnative-pg/pull/10074)) <!-- 1.28 1.27 1.25 -->

- **Password leak prevention**: fixed a potential security risk where PostgreSQL
  could leak role passwords in the logs during specific reconciliation phases.
  ([#9950](https://github.com/cloudnative-pg/cloudnative-pg/pull/9950)) <!-- 1.28 1.27 1.25 -->

### Changes

- Updated the default PostgreSQL version to 18.3 (image `18.3-system-trixie`).
  ([#10090](https://github.com/cloudnative-pg/cloudnative-pg/pull/10090)) <!-- 1.28 1.27 1.25 -->

### Fixes

- Fixed an issue where fencing annotations could not be processed when the WAL
  disk was full, because the disk space check blocked the instance manager from
  starting. The check is now performed later in the lifecycle loop, after
  fencing is evaluated.
  ([#10302](https://github.com/cloudnative-pg/cloudnative-pg/pull/10302)) <!-- 1.28 1.27 -->

- Fixed an issue where replicas would get stuck in a `Pending` state if the
  `VolumeSnapshot` used for the initial bootstrap had been deleted. The
  operator now validates snapshot existence before use; if a snapshot is missing,
  it attempts to use the next available candidate or falls back to
  `pg_basebackup`.
  ([#10192](https://github.com/cloudnative-pg/cloudnative-pg/pull/10192)) <!-- 1.28 1.27 1.25 -->

- Prevented the "supervised primary" rollout strategy from consuming all
  available rollout slots, which previously caused delays in scheduled updates.
  Contributed by @ermakov-oleg.
  ([#9977](https://github.com/cloudnative-pg/cloudnative-pg/pull/9977)) <!-- 1.28 1.27 1.25 -->

- Fixed an issue where certain hot-standby parameter changes were not being
  correctly applied to replica clusters.
  ([#9952](https://github.com/cloudnative-pg/cloudnative-pg/pull/9952)) <!-- 1.28 1.27 1.25 -->

- Fixed a bug in the CNPG-I reconciler hook that could lead to skipping
  subsequent plugins when a "continue" result was returned.
  Contributed by @sharifmshaker.
  ([#9978](https://github.com/cloudnative-pg/cloudnative-pg/pull/9978)) <!-- 1.28 1.27 -->

- Fixed a deadlock scenario that occurred when attempting to resize a
  filesystem on a PVC that was not currently attached to a Pod.
  Contributed by @jmealo.
  ([#9981](https://github.com/cloudnative-pg/cloudnative-pg/pull/9981)) <!-- 1.28 1.27 -->

- Fixed webhook validation of bootstrap recovery sources to accept external
  clusters configured with `ConnectionParameters` (for `pg_basebackup`-based
  recovery). Previously, these were incorrectly rejected unless a Barman
  object store or CNPG-i plugin was also configured.
  ([#10268](https://github.com/cloudnative-pg/cloudnative-pg/pull/10268)) <!-- 1.28 1.27 1.25 -->

- Volume names for extensions and tablespaces are now prefixed to avoid naming
  collisions with standard cluster volumes.
  ([#9973](https://github.com/cloudnative-pg/cloudnative-pg/pull/9973)) <!-- 1.28 1.27 -->

- When hibernating a non-healthy cluster, the operator now reports a
  `WaitingForHealthy` condition, making the deferred hibernation state visible
  through `cnpg status`.
  ([#10193](https://github.com/cloudnative-pg/cloudnative-pg/pull/10193)) <!-- 1.28 1.27 1.25 -->

- Fixed fencing to work correctly even when the target pod does not exist.
  Fencing operates on a cluster-level annotation and should not depend on pod
  existence; instance name validation is now performed only in the `cnpg
  fencing on` command.
  ([#10035](https://github.com/cloudnative-pg/cloudnative-pg/pull/10035)) <!-- 1.28 1.27 1.25 -->

- Fixed the cluster and pooler service reconcilers to correctly handle changes
  to all spec fields when using the patch update strategy. The reconciler now
  uses RFC 7386 JSON Merge Patching, preventing cloud-provider-set fields
  (such as `loadBalancerClass`) from being inadvertently removed.
  ([#10190](https://github.com/cloudnative-pg/cloudnative-pg/pull/10190),
  [#10311](https://github.com/cloudnative-pg/cloudnative-pg/pull/10311)) <!-- 1.28 1.27 1.25 -->

- Fixed a race condition in the deprecated in-tree Barman Cloud backup
  implementation affecting parallel WAL restore, where prefetched files could
  be read while still being downloaded, causing PostgreSQL recovery to fail
  with "invalid checkpoint record" errors.
  ([#10285](https://github.com/cloudnative-pg/cloudnative-pg/pull/10285)) <!-- 1.28 1.27 1.25 -->

- Fixed the timeline history file validation to also apply to plugin-based WAL
  restore. Previously, the protection introduced in
  [#9650](https://github.com/cloudnative-pg/cloudnative-pg/pull/9650) only
  covered in-tree restores, allowing plugins to bypass the check and download
  future timeline history files, causing timeline mismatch errors on replicas.
  ([#9849](https://github.com/cloudnative-pg/cloudnative-pg/pull/9849)) <!-- 1.28 1.27 1.25 -->

- `cnpg` plugin:

    - The cnpg plugin now correctly propagates ImagePullSecrets to the
      `pgbench` Job pod template.
      ([#10174](https://github.com/cloudnative-pg/cloudnative-pg/pull/10174)) <!-- 1.28 1.27 1.25 -->

## Version 1.27.3

**Release date:** Feb 5, 2026

### Enhancements

- Added support for Azure's `DefaultAzureCredential` authentication mechanism
  for backup and recovery operations. This can be enabled by setting
  `azureCredentials.useDefaultAzureCredentials: true` in the backup
  configuration, simplifying authentication in Azure environments without
  requiring explicit storage account keys or SAS tokens.
  ([#9468](https://github.com/cloudnative-pg/cloudnative-pg/pull/9468)) <!-- 1.27 1.25 -->

### Fixes

- Fixed validation of PostgreSQL extension names containing underscores (e.g.,
  `pg_partman`, `pg_ivm`). Extension names with underscores are
  automatically sanitized to use hyphens for Kubernetes volume names while
  preserving the original name in mount paths. Webhook validation prevents
  naming conflicts after sanitization. Contributed by @shusaan.
  ([#9386](https://github.com/cloudnative-pg/cloudnative-pg/pull/9386)) <!-- 1.27 -->

- Fixed a critical issue where the `TimelineID` in the cluster status was not
  reset to 1 after a major version upgrade. Because `pg_upgrade` initializes a
  new timeline, keeping the old ID (e.g., timeline 2) caused replicas to attempt
  to restore incompatible history files from object storage, leading to fatal
  "requested timeline is not a child of this server's history" errors.
  ([#9830](https://github.com/cloudnative-pg/cloudnative-pg/pull/9830)) <!-- 1.27 -->

- Fixed a bug where replicas could enter a crash-loop by attempting to download
  timeline history files from future timelines. This occurred when stale files
  remained in the WAL archive from a previous cluster life, and replicas would
  incorrectly try to fetch them during recovery.
  ([#9650](https://github.com/cloudnative-pg/cloudnative-pg/pull/9650)) <!-- 1.27 1.25 -->

- Fixed a race condition in `replica_cluster` setups during designated primary
  transitions, preventing transient "no primary" states in the replica cluster.
  ([#9601](https://github.com/cloudnative-pg/cloudnative-pg/pull/9601)) <!-- 1.27 1.25 -->

- The backup controller now uses the unique instance session ID to detect
  instance manager restarts. This prevents the operator from incorrectly
  assuming a backup is still progressing if the underlying container has crashed
  and restarted, which previously led to orphaned backup objects.
  ([#9370](https://github.com/cloudnative-pg/cloudnative-pg/pull/9370)) <!-- 1.27 -->

- Fixed a validation gap in Azure object store configurations where the
  `storageAccount` was not required when using explicit credentials (such as a
  storage key or SAS token). The operator now enforces that a storage account
  name is provided in these cases and that `connectionString` is mutually
  exclusive with other authentication parameters.
  ([#9604](https://github.com/cloudnative-pg/cloudnative-pg/pull/9604)) <!-- 1.27 1.25 -->

- Optimized the deletion path so the operator begins cleaning up resources
  immediately when a cluster is marked for deletion. This significantly reduces
  the time a cluster remains in `Terminating` status while waiting for internal
  reconciliation loops.
  ([#9555](https://github.com/cloudnative-pg/cloudnative-pg/pull/9555)) <!-- 1.27 1.25 -->

- Fixed an issue where replication slots were not properly dropped from
  replicas when the feature was disabled or the cluster was reconfigured.
  This ensures that unused slots do not cause WAL build-up on the primary.
  ([#9381](https://github.com/cloudnative-pg/cloudnative-pg/pull/9381)) <!-- 1.27 1.25 -->

- Fixed an issue where `imagePullSecrets` were not added to the `ServiceAccount`
  created for the `Pooler`. Previously, these secrets were applied to the
  Deployment but not the SA, which caused image pull failures in restricted
  environments using certain security policies.
  ([#9427](https://github.com/cloudnative-pg/cloudnative-pg/pull/9427)) <!-- 1.27 1.25 -->

- Added a check to verify ownership before the operator deletes a `PodMonitor`.
  This prevents the operator from accidentally deleting manually managed
  monitoring resources that happen to share a name with expected CNPG
  resources. Contributed by @juliamertz.
  ([#9340](https://github.com/cloudnative-pg/cloudnative-pg/pull/9340)) <!-- 1.27 1.25 -->

- Fixed a bug where `pg_stat_archiver` metrics would continue to report stale
  data on standby instances after a switchover. The exporter now skips these
  metrics on standbys, as PostgreSQL only provides valid archiver stats on the
  primary.
  ([#9411](https://github.com/cloudnative-pg/cloudnative-pg/pull/9411)) <!-- 1.27 1.25 -->

- Clarified the interpretation of timestamp formats for recovery `targetTime`.
  Timestamps provided without an explicit timezone are now consistently
  interpreted as UTC. Contributed by @pchovelon.
  ([#8937](https://github.com/cloudnative-pg/cloudnative-pg/pull/8937)) <!-- 1.27 1.25 -->

- Fixed backup status updates to prevent "resource has been modified" errors
  during concurrent updates.
  ([#9551](https://github.com/cloudnative-pg/cloudnative-pg/pull/9551)) <!-- 1.27 1.25 -->

- Fixed event reporting to use the correct pod name when a backup pod is not
  found.
  ([#9552](https://github.com/cloudnative-pg/cloudnative-pg/pull/9552)) <!-- 1.27 1.25 -->

- Improved performance of scheduled backup operations for clusters with a very
  high number of historical backups.
  ([#9489](https://github.com/cloudnative-pg/cloudnative-pg/pull/9489)) <!-- 1.27 1.25 -->

- Fixed error handling when removing finalizers on `Database` objects.
  ([#9431](https://github.com/cloudnative-pg/cloudnative-pg/pull/9431)) <!-- 1.27 1.25 -->

- `cnpg` plugin:

    - Updated the `status` command to display "Disabled" when the
      `skipWalArchiving` annotation is present on a cluster. This replaces
      confusing "starting up" or "unknown" states when WAL archiving is
      intentionally bypassed.
      ([#9709](https://github.com/cloudnative-pg/cloudnative-pg/pull/9709)) <!-- 1.27 1.25 -->

    - Fixed the `logs --follow` command to continue polling for new pods instead
      of exiting prematurely when all current log streams complete.
      ([#9599](https://github.com/cloudnative-pg/cloudnative-pg/pull/9599)) <!-- 1.27 1.25 -->

## Version 1.27.2

**Release date:** Dec 9, 2025

:::warning
    Version 1.27 will be supported until 9 March 2026.
:::

### Changes

- Updated the default PostgreSQL version to `18.1-system-trixie`.
  ([#9178](https://github.com/cloudnative-pg/cloudnative-pg/pull/9178)) <!-- 1.27 1.26 1.25 -->

- Updated the default PgBouncer version to **1.25.1** for new `Pooler`
  deployments.
  ([#9367](https://github.com/cloudnative-pg/cloudnative-pg/pull/9367)) <!-- 1.27 1.26 1.25 -->

### Enhancements

- Added the PostgreSQL `majorVersion` to the `Backup` object's status for
  easier identification and management.
  ([#8464](https://github.com/cloudnative-pg/cloudnative-pg/pull/8464)) <!-- 1.27 1.26 -->

- Added the `PGBOUNCER_IMAGE_NAME` operator configuration parameter to allow
  overriding the default PgBouncer image. This is useful for air-gapped
  environments or when using internal registries.
  ([#9232](https://github.com/cloudnative-pg/cloudnative-pg/pull/9232)) <!-- 1.27 1.26 1.25 -->

- `cnpg` plugin:

    - Added a `--timeout` flag to the `kubectl cnpg status` command for
      configuring the timeout for filesystem operations such as calculating
      cluster size. The default remains 10 seconds but can be adjusted for
      large clusters where operations may take longer.
      ([#9201](https://github.com/cloudnative-pg/cloudnative-pg/pull/9201)) <!-- 1.27 -->

    - Improved `cnpg report` to generate more shell-friendly file names.
      ([#8984](https://github.com/cloudnative-pg/cloudnative-pg/pull/8984)) <!-- 1.27 1.26 1.25 -->

### Fixes

- Improved resilience of all probe types (liveness, readiness, and startup) to
  transient Kubernetes API server connectivity issues. Probes now use a caching
  mechanism that falls back to cached cluster definitions during brief network
  interruptions, preventing unnecessary pod restarts and probe failures.
  ([#9148](https://github.com/cloudnative-pg/cloudnative-pg/pull/9148)) <!-- 1.27 -->

- Fixed the `CheckEmptyWalArchive` safeguard to run correctly when restoring
  from a volume snapshot using CNPG-I backup/WAL plugins (e.g.,
  `plugin-barman-cloud`). Previously, this check was skipped for plugin-based
  implementations.
  ([#9306](https://github.com/cloudnative-pg/cloudnative-pg/pull/9306)) <!-- 1.27 1.26 1.25 -->

- Improved error reporting when ImageCatalog retrieval fails. The operator now
  emits a Warning event and logs errors for all failure types, not just
  `NotFound` errors, improving visibility into configuration issues.
  ([#9266](https://github.com/cloudnative-pg/cloudnative-pg/pull/9266)) <!-- 1.27 -->

- Fixed TLS certificate verification issues when connecting to CNPG-I plugins
  by adding the `cnpg.io/pluginServerName` annotation. This allows customizing
  the DNS name used for certificate verification in environments where the
  plugin's certificate uses a different DNS name than the Service name.
  ([#9222](https://github.com/cloudnative-pg/cloudnative-pg/pull/9222)) <!-- 1.27 1.26 1.25 -->

- Fixed an issue where the instance manager controller could fail to restart
  after an error, reporting a "controller already exists" message. The
  controller now uses `SkipNameValidation` for subsequent initialization
  attempts. Contributed by @mateusoliveira43.
  ([#9123](https://github.com/cloudnative-pg/cloudnative-pg/pull/9123)) <!-- 1.27 1.26 1.25 -->

- Fixed incorrect WAL restore path handling in plugins when the destination
  path is absolute, preventing path duplication issues. Contributed by
  @Endevir.
  ([#9093](https://github.com/cloudnative-pg/cloudnative-pg/pull/9093)) <!-- 1.27 1.26 1.25 -->

- Fixed the `CREATE PUBLICATION` SQL generation for multi-table publications to
  be backward-compatible with PostgreSQL 13+. The previously generated syntax
  was only valid for PostgreSQL 15+ and caused syntax errors on older versions.
  ([#8888](https://github.com/cloudnative-pg/cloudnative-pg/pull/8888)) <!-- 1.27 1.26 1.25 -->

- Fixed backup failures in complex pod definitions by reliably selecting the
  `postgres` container by name instead of by index. Contributed by @Joda89.
  ([#8964](https://github.com/cloudnative-pg/cloudnative-pg/pull/8964)) <!-- 1.27 1.26 1.25 -->

- `cnpg` plugin:

    - Fixed bugs in `cnpg report` log collection, especially when fetching previous
      logs. The collector now correctly fetches previous and current logs in
      separate requests and gracefully handles missing previous logs (e.g., on
      containers with no restart history), ensuring current logs are always
      collected.
      ([#8992](https://github.com/cloudnative-pg/cloudnative-pg/pull/8992)) <!-- 1.27 1.26 1.25 -->

## Version 1.27.1

**Release date:** Oct 23, 2025

### Changes

<!-- NO: 1.25 -->
- Delayed the decommissioning of native in-core support for Barman Cloud to at
  least version 1.29.
  ([#8670](https://github.com/cloudnative-pg/cloudnative-pg/pull/8670))

- Adopted the new format of `postgres-containers` and `postgis-containers`
  images and image catalog artifacts, and **updated** the default PostgreSQL
  version to `18.0-system-trixie` (PostgreSQL 18 is now supported).
  ([#8578](https://github.com/cloudnative-pg/cloudnative-pg/pull/8578),
  [#8760](https://github.com/cloudnative-pg/cloudnative-pg/pull/8760),
  [#8558](https://github.com/cloudnative-pg/cloudnative-pg/pull/8558))

- Deprecated the `monitoring.enablePodMonitor` field in the `Cluster` and
  `Pooler` resources. This field will be removed in a future release. Users who
  rely on `PodMonitor` resources should create them manually instead.
  ([#8753](https://github.com/cloudnative-pg/cloudnative-pg/pull/8753))

### Enhancements

- Added support for overriding the PgBouncer `auth_type`, `server_tls_sslmode`,
  and `client_tls_sslmode` settings, which were previously hardcoded. Default
  values remain consistent with the former behavior but can now be customized
  when required.
  ([#8674](https://github.com/cloudnative-pg/cloudnative-pg/pull/8674))

- Added a `CHECKPOINT` step before PostgreSQL smart and fast shutdowns to
  reduce shutdown duration and replica promotion time, especially on systems
  with a high `checkpoint_timeout`.
  ([#8867](https://github.com/cloudnative-pg/cloudnative-pg/pull/8867))

- Added a warning in the instance manager for deprecated or unsupported OS
  versions, based on the official `postgres-containers` project.
  ([#8601](https://github.com/cloudnative-pg/cloudnative-pg/pull/8601))

- Improved certificate parsing error reporting. Failures now log specific
  errors instead of a generic message, aiding troubleshooting. This is
  particularly relevant after the CVE-2025-58187 fix in Go 1.25.2 and 1.24.8,
  which may trigger parsing failures for invalid DNS SANs.
  ([#8801](https://github.com/cloudnative-pg/cloudnative-pg/pull/8801))

- Added a check to ensure the destination WAL archive path is empty when
  bootstrapping a cluster using the `pg_basebackup` method, consistent with
  other bootstrap methods.
  ([#8895](https://github.com/cloudnative-pg/cloudnative-pg/pull/8895))

- Added validation to prevent backups from running on hibernated clusters.
  Backups attempted on such clusters now fail with reason
  `ClusterIsHibernated`, following the standard prerequisite check pattern.
  ([#8870](https://github.com/cloudnative-pg/cloudnative-pg/pull/8870))

- Added support for `pprof` profiling. Instances can now enable the `pprof`
  tool by adding the `alpha.cnpg.io/enableInstancePprof` annotation to the
  `Cluster` resource for advanced debugging.
  ([#7876](https://github.com/cloudnative-pg/cloudnative-pg/pull/7876))

- `cnpg` plugin:

   - Updated the Flexible I/O Tester (FIO) image to
     `wallnerryan/fiotools-aio:v2`, as provided by Ryan Wallner.
     ([#8847](https://github.com/cloudnative-pg/cloudnative-pg/pull/8847))

   - Enhanced the `cnpg status backup` command to provide more detailed status
     information when using a `barman-cloud`-based backup plugin.
     ([#8780](https://github.com/cloudnative-pg/cloudnative-pg/pull/8780),
     [#8690](https://github.com/cloudnative-pg/cloudnative-pg/pull/8690))

### Fixes

- Fixed backup restoration failures when using custom WAL segment sizes with
  parallel WAL recovery. The operator no longer manages the end-of-WAL file
  marker during restoration, preventing errors when backups span multiple WAL
  segments.
  ([#8873](https://github.com/cloudnative-pg/cloudnative-pg/pull/8873))

- Fixed a bug in major upgrades where a volume snapshot from a previous minor
  version could be incorrectly used to optimize replica creation.
  ([#8475](https://github.com/cloudnative-pg/cloudnative-pg/pull/8475))

- Fixed `initdb` to wait for the application user secret before bootstrapping
  a new cluster, preventing potential race conditions.
  ([#8663](https://github.com/cloudnative-pg/cloudnative-pg/pull/8663))

<!-- NO: 1.25 --><!-- NO: 1.26 -->
- Fixed quorum-based failover to work correctly in clusters with only two
  instances using synchronous replication.
  ([#8680](https://github.com/cloudnative-pg/cloudnative-pg/pull/8680))

<!-- NO: 1.25 --><!-- NO: 1.26 -->
- Fixed configuration hash calculation to ignore internal configuration fields,
  preventing unnecessary reconciliations.
  ([#8868](https://github.com/cloudnative-pg/cloudnative-pg/pull/8868))

- Fixed the connection retry logic in the `cnpgi` plugin. The reconciliation
  loop now detects connection pool changes correctly and uses exponential
  backoff to reduce "closed pool" errors.
  ([#8554](https://github.com/cloudnative-pg/cloudnative-pg/pull/8554))

- Fixed volume snapshot usage during replica scaling to work with backup plugins.
  Previously, this optimization was only available with the in-tree backup
  implementation, but now clusters using backup plugins can also leverage volume
  snapshots when creating new replicas.
  ([#8506](https://github.com/cloudnative-pg/cloudnative-pg/pull/8506))

- Fixed the `Pooler` templating to correctly inherit settings for the
  bootstrap controller init container.
  ([#8394](https://github.com/cloudnative-pg/cloudnative-pg/pull/8394))

- Fixed webhook errors to use the correct API group (`postgresql.cnpg.io`) in
  `Pooler` and backup webhooks, ensuring consistent API error reporting.
  ([#8485](https://github.com/cloudnative-pg/cloudnative-pg/pull/8485))

- Fixed a potential nil pointer dereference in the hibernation reconciler when
  handling errors. Contributed by @PascalBourdier.
  ([#8756](https://github.com/cloudnative-pg/cloudnative-pg/pull/8756))

- Fixed an issue in the environment cache where callers could inadvertently
  modify shared data. The `LoadEnv` function now returns a copy of cached
  environment slices to prevent mutations from affecting the cache.
  ([#8880](https://github.com/cloudnative-pg/cloudnative-pg/pull/8880))

## Version 1.27.0

**Release date:** Aug 12, 2025

### Important changes

- The default behavior of the [liveness probe](../instance_manager.md#liveness-probe) has been updated.
  An [isolated primary is now forcibly shut down](../instance_manager.md#primary-isolation)
  within the configured `livenessProbeTimeout` (default: 30 seconds).

### Features

- **Dynamic loading of PostgreSQL extensions**: Introduced the
  `.spec.postgresql.extensions` stanza for mounting PostgreSQL extensions,
  packaged as OCI-compliant container images, as read-only and immutable volumes
  inside instance pods. This allows dynamic extension management without
  rebuilding base images.
  ([#7991](https://github.com/cloudnative-pg/cloudnative-pg/pull/7991)).

- **Logical decoding slot synchronization in HA clusters**: Added the
  `synchronizeLogicalDecoding` field under
  `spec.replicationSlots.highAvailability` to enable automatic synchronization of
  logical decoding slots across high-availability clusters, ensuring logical
  replication subscribers continue seamlessly after a publisher failover
  ([#7931](https://github.com/cloudnative-pg/cloudnative-pg/pull/7931)).

- **Primary Isolation Check**: Promoted to stable the liveness pinger
  experimental feature introduced in 1.26, adding the
  `.spec.probes.liveness.isolationCheck` section to enable primary isolation
  checks in the liveness probe by default. This improves the detection and
  handling of primary connectivity issues in Kubernetes environments
  ([#7845](https://github.com/cloudnative-pg/cloudnative-pg/pull/7845)).

### Enhancements

- Introduced an opt-in experimental feature that enables quorum-based failover
  to improve safety and data durability during failover events. This feature,
  also called failover quorum, can be activated via the
  `alpha.cnpg.io/failoverQuorum` annotation.
  ([#7572](https://github.com/cloudnative-pg/cloudnative-pg/pull/7572)).

- Added support for user maps for predefined users such as `streaming_replica`,
  allowing the use of self-managed client certificates with different Common
  Names in environments with strict policies or shared CAs, while still enabling
  replicas to join clusters using the `streaming_replica` role
  ([#7725](https://github.com/cloudnative-pg/cloudnative-pg/pull/7725)).

- Added a new `PhaseFailurePlugin` phase in the `Cluster` status to improve
  observability of plugin-related failures
  ([#7988](https://github.com/cloudnative-pg/cloudnative-pg/pull/7988)).

- Made the `Backup.spec` field immutable after creation, ensuring consistency
  and predictability in backup operations
  ([#7904](https://github.com/cloudnative-pg/cloudnative-pg/pull/7904)).

- Added `fqdn-uri` and `fqdn-jdbc-uri` fields in the user secret to simplify
  the retrieval of fully qualified domain name-based connection strings
  ([#7852](https://github.com/cloudnative-pg/cloudnative-pg/pull/7852)).

- CNPG-I:

    - Added `Postgres` interface support to the CNPG-I operator, continuing the
      transition toward a plugin-based architecture
      ([#7179](https://github.com/cloudnative-pg/cloudnative-pg/pull/7179)).

    - Added `metrics` capabilities to the CNPG-I instance webserver, enabling
      metrics exposure directly from the instance for better observability
      ([#8033](https://github.com/cloudnative-pg/cloudnative-pg/pull/8033)).

### Fixes

- Unblocked rollouts when migrating to the `barman-cloud` plugin using the
  `switchover` strategy. Former primary Pods now restart correctly after WAL
  archiving fails due to missing plugin support.
  ([#8236](https://github.com/cloudnative-pg/cloudnative-pg/pull/8236))

### Supported versions

- Kubernetes 1.33, 1.32, and 1.31
- PostgreSQL 17, 16, 15, 14, and 13
    - PostgreSQL 17.5 is the default image
    - PostgreSQL 13 support ends on November 12, 2025
