RATATOSKRATATOSK
Sign in

CloudNativePG

v1.30.0Storage & Data
Jun 29, 2026

ACTION 3CHECK 1PLAN 2OTHER 48

A substantial feature and security release adds Kubernetes and PostgreSQL capabilities while tightening validation, compatibility, and defaults. It also includes correctness fixes and security changes affecting pooled connections, instance-manager endpoints, and role password handling.

Action needed (3)

Check if affected (1)

  • breakingImmutable cluster references

    Applies if you configure cluster.

    The cluster reference is now immutable on the Database, Pooler, Publication, Subscription, and ScheduledBackup resources.

Plan ahead (2)

  • deprecatedNative (in-tree) Barman Cloud support removal deferredremoval planned in 1.31.0

    Applies if you use native (in-tree) Barman Cloud support.

    Native (in-tree) Barman Cloud support will be removed in CloudNativePG 1.31.0 rather than 1.30.0. The change concerns the Barman Cloud Plugin.

  • deprecatedstatus.latestGeneratedNode deprecation

    Applies if you use status.latestGeneratedNode.

    status.latestGeneratedNode is deprecated.

All 48 other recorded changesfixes 33 · additions 9 · value changes 4 · constraints 2

fixes (33)

  • validation failures are surfaced in the resource status instead of failing silently later
  • Fixed declarative Database, Publication, and Subscription objects reporting a stale primary-side status forever
  • Fixed non-sequential pod names
  • Fixed deletion of a Database, Publication, or Subscription getting stuck in Terminating
  • Fixed a conflicting duplicate Database or Subscription with a delete reclaim policy dropping the PostgreSQL object owned by the surviving CR
  • Fixed the postgres superuser being left locked out
  • Fixed backups getting stuck in the started phase
  • Fixed exec/attach streaming to negotiate WebSocket with a SPDY fallback
  • Fixed resource leaks when concurrent Backup objects raced
  • Fixed role reconciliation clearing the password on a PostgreSQL role when the referenced Secret could not be fetched
  • Fixed a ScheduledBackup controller loop
  • Fixed a nil-pointer panic when reconciling a Pooler whose Cluster has been deleted.
  • Fixed bootstrap log handling so that all named log pipes (postgres, postgres.csv, and postgres.json) get consumers
  • Fixed generation of invalid IPv6 URLs by wrapping the address in square brackets.
  • Fixed an external cluster plugin still being treated as active when its configuration set enabled: false.
  • Fixed a race during bootstrap recovery from an object store
  • Fixed a race where deleting an instance's PVCs could leave the instance permanently stuck
  • Fixed a cache race during cluster creation
  • Fixed the pg_basebackup bootstrap path overwriting or failing on a pre-existing PGDATA
  • Fixed the Cluster phase flapping between Healthy and a plugin-failure phase
  • Fixed stale certificate data and partial reads after an external server's Secret was rotated
  • Fixed plugin connectivity to use the plugin Service FQDN instead of its short name
  • Fixed excessive operator log noise
  • Fixed spec.postgresql.parameters accepting keys that are not valid PostgreSQL parameter names
  • Fixed a switchover deadlock when a WAL-archiver plugin was enabled on an existing cluster
  • Fixed a cluster staying in Setting up primary indefinitely
  • Fixed a first-primary bootstrap deadlock
  • these values are now rejected at the validating webhook and re-checked at the write site
  • Fixed a backup getting stuck in pending forever
  • Fixed a declarative VolumeSnapshot backup being permanently marked as failed
  • Fixed a volume snapshot backup being discarded on a transient instance-manager connection error
  • Fixed a replica switchover losing its status.demotionToken
  • The metrics-exporter step now runs in a separate transaction.

additions (9)

  • introduced a Kubernetes Lease object (named after the cluster) that acts as a mutex serializing primary promotion
  • introduced a DatabaseRole custom resource that manages a PostgreSQL role as a standalone Kubernetes object
  • a DatabaseRole can now include a clientCertificate block
  • through the new spec.pgbouncer.imageCatalogRef field
  • Added TLS support for the Pooler metrics endpoint via .spec.monitoring.tls.enabled.
  • Added a label selector to the Cluster scale subresource (status.selector)
  • now emits a Warning PrimaryStatusCheckFailed event on the Cluster
  • Added the ENABLE_WEBHOOK_NAMESPACE_SUFFIX flag
  • A new Initialized cluster condition reports whether the cluster has completed its first bootstrap

value changes (4)

  • The operator now reloads a CNPG-i plugin automatically when its pods are rolled
  • Pod and PVC names stay stable across instance recreation
  • Updated the default PostgreSQL version to 18.4.
  • PostgreSQL 18.4 is the default image - PostgreSQL 14 support ends on November 12, 2026

constraints (2)

  • Enabled pg_upgrade in-place major upgrades to PostgreSQL 19 or later
  • Added support for Kubernetes 1.36.
Add CloudNativePG to your stack

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

Add to stack →