CloudNativePG
v1.28.4Storage & DataA maintenance release with security fixes, stricter API validation, support and default-version updates, and correctness fixes across cluster operations and the cnpg plugin. It also updates Kubernetes support, autoscaler integration, and cluster status visibility.
Check if affected (4)
securitycritical
search_pathpinning on pooled connectionsApplies if you use pooled connections.
The operator now pins
search_path = pg_catalog, public, pg_tempon every pooled connection, so the value is included in the startup message and takes precedence over tenant-controlled defaults. The change is associated with CVE-2026-55769 and GHSA-x8c2-3p4r-v9r6.securityhighSCRAM-SHA-256 encoding for cleartext role passwords
Applies if you use cleartext role passwords.
The operator now encodes cleartext role passwords with
SCRAM-SHA-256before issuingCREATEorALTER ROLE .. The change concerns. . PASSWORD cnpg.and is associated with CVE-2026-55765 and GHSA-w3gf-xc94-wvmj.io/passwordPassthrough breaking
clusterreference immutabilityApplies if you use the
clusterreference onDatabase,Pooler,Publication,Subscription, orScheduledBackupresources.The
clusterreference is now immutable onDatabase,Pooler,Publication,Subscription, andScheduledBackupresources.breakingValidating webhook and write-site rejection
Applies if you use values checked by the validating webhook.
The validating webhook now rejects these values, and the write site checks them again.
Plan ahead (2)
deprecated
1.support ending28 Applies if you run
1..28 This is the final release in the
1.series, and28. x 1.is no longer supported. The notice encourages users to move to a newer minor version.28 deprecatedNative (in-tree) Barman Cloud support deprecationremoval planned in 1.31.0
Applies if you use
native (in-tree) Barman Cloud support.The deprecation notice now says that
native (in-tree) Barman Cloud supportwill be removed in1.instead of31. 0 1.. It encourages migration to the Barman Cloud Plugin.30. 0
All 35 other recorded changesfixes 30 · additions 2 · value changes 2 · constraints 1
fixes (30)
- Fixed
spec.accepting keys that are not valid PostgreSQL parameter names, which could inject arbitrary directives intopostgresql. parameters postgresql.; key names are now validated by the webhook.conf - Fixed declarative
Database,Publication, andSubscriptionobjects reporting a stale primary-side status forever after their cluster was demoted to a replica - Fixed non-sequential pod names (for example
-1,-3) caused by the instance serial counter being advanced before the correspondingJoband PVCs were created - Fixed a switchover deadlock when a WAL-archiver plugin was enabled on an existing cluster
- Fixed a cluster staying in
Setting up primaryindefinitely when the instance-creation Job exhausted its backoff limit - Fixed deletion of a
Database,Publication, orSubscriptiongetting stuck inTerminatingon a replica cluster - Fixed a conflicting duplicate
DatabaseorSubscriptionwith adeletereclaim policy dropping the PostgreSQL object owned by the surviving CR - Fixed the
postgressuperuser being left locked out after superuser access was disabled and then re-enabled - Fixed backups getting stuck in the
startedphase when the instance manager running them was restarted - Fixed resource leaks when concurrent
Backupobjects raced - Fixed role reconciliation clearing the password on a PostgreSQL role when the referenced Secret could not be fetched
- Fixed a bootstrap failure where a metrics-exporter setup error (commonly a duplicate-key race with the controller) rolled back
streaming_replicacreation and wedged replica joins. - Fixed a
ScheduledBackupcontroller loop that occurred when aBackupwas created but its status patch never landed - Fixed a nil-pointer panic when reconciling a
PoolerwhoseClusterhas been deleted. - Fixed bootstrap log handling so that all named log pipes (
postgres,postgres., andcsv postgres.) get consumers duringjson WithActiveInstance - 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 where the restore job could read a stale
Cluster - Fixed a cache race during cluster creation when the server and client CA resolve to the same Secret (the default)
- Fixed the
pg_basebackupbootstrap path overwriting or failing on a pre-existingPGDATA - Fixed the
Clusterphase flapping betweenHealthyand a plugin-failure phase when a post-reconcile plugin hook returned an error - Fixed stale certificate data and partial reads after an external server's Secret was rotated
- Fixed plugin connectivity to use the plugin
ServiceFQDN instead of its short name - Fixed excessive operator log noise from the per-request
Clustercreate/update validation webhook messages, now logged atdebuginstead ofinfo. - Fixed a first-primary bootstrap deadlock where a status-patch conflict after the data PVC was created but before the initialization Job was started left the orphan Pending PVC counted as an instance
- Fixed a declarative
VolumeSnapshotbackup being permanently marked as failed when a stale cache made the operator re-create a snapshot it had already provisioned - Fixed a volume snapshot backup being discarded on a transient instance-manager connection error
- Fixed a replica switchover losing its
status.demotionToken - Fixed
kubectl cnpg psqlon Windows, where execution relied on a Unix-only system call and failed with "not supported by windows" - Fixed an unbounded memory leak in
kubectl cnpg logs -fon busy clusters
additions (2)
- Added a label selector to the
Clusterscale subresource (status.), making aselector Clustera validtargetReffor the Vertical Pod Autoscaler (VPA) and Horizontal Pod Autoscaler (HPA), which can now map aClusterto its instance pods. - The operator now emits a
WarningPrimaryStatusCheckFailedevent on theClusterwhen the primary pod isReadyfrom the kubelet perspective but the operator's/pg/statuscheck fails and failover is deferred, giving users visibility into the deferral viakubectl describe cluster.
value changes (2)
- The operator now reloads a CNPG-i plugin automatically when its pods are rolled
- Updated the default PostgreSQL version to 18.4.
constraints (1)
- Added support for Kubernetes 1.35 and enabled unit tests on Kubernetes 1.36.
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.