Release notes for CloudNativePG 1.20
History of user-visible changes in the 1.20 minor release of CloudNativePG.
For a complete list of changes, please refer to the commits
on the release branch in GitHub.
Version 1.20.5
Release date: Dec 21, 2023
Security
By default, TLSv1.3 is now enforced on all PostgreSQL 12 or higher installations. Additionally, users can configure the
ssl_ciphers,ssl_min_protocol_version, andssl_max_protocol_versionGUCs (#3408).Integration of Docker image scanning with Dockle and Snyk to enhance security measures (#3300).
Enhancements
Improved reconciliation of external clusters (#3533).
Introduction of the ability to enable/disable the
ALTER SYSTEMcommand (#3535).Support for Prometheus’ dynamic relabeling through the
podMonitorMetricRelabelingsandpodMonitorRelabelingsoptions in the.spec.monitoringstanza of theClusterandPoolerresources (#3075).Elimination of the use of the
PGPASSFILEenvironment variable when establishing a network connection to PostgreSQL (#3522).Improved
cnpg reportplugin command by collecting a cluster’s PVCs (#3357).Enhancement of the
cnpg statusplugin command, providing information about managed roles, including alerts (#3310).Connection pooler:
Scaling down instances of a
Poolerresource to 0 is now possible (#3517).Addition of the
cnpg.io/podRolelabel with a value of ‘pooler’ to every pooler deployment, differentiating them from instance pods (#3396).
Fixes
Reconciliation of metadata, annotations, and labels of
PodDisruptionBudgetresources (#3312 and #3434).Reconciliation of the metadata of the managed credential secrets (#3316).
Resolution of a bug in the backup snapshot code where an error reading the body would be handled as an overall error, leaving the backup process indefinitely stuck (#3321).
Implicit setting of online backup with the
cnpg backupplugin command when eitherimmediate-checkpointorwait-for-archiveoptions are requested (#3449).Disabling of wal_sender_timeout when joining through pg_basebackup (#3586)
Reloading of secrets used by external clusters (#3565)
Connection pooler:
Ensuring the controller watches all secrets owned by a
Poolerresource (#3428).Reconciliation of
RoleBindingforPoolerresources (#3391).Reconciliation of
imagePullSecretforPoolerresources (#3389).Reconciliation of the service of a
Poolerand addition of the required labels (#3349).Extension of
Poolerlabels to the deployment as well, not just the pods (#3350).
Changes
Default operand image set to PostgreSQL 16.1 (#3270).
Version 1.20.4
Release date: Nov 3, 2023
Enhancements:
Enhance the
statuscommand of thecnpgplugin forkubectlwith progress information on active streaming base backups (#3101)Allow the configuration of
max_prepared_statementswith the pgBouncerPoolerresource (#3174)
Fixes:
Suspend WAL archiving during a switchover and resume it when it is completed (#3227)
Ensure that the instance manager always uses
synchronous_commit = localwhen managing the PostgreSQL cluster (#3143)Custom certificates for streaming replication user through
.spec.certificates.replicationTLSSecretare now working (#3209)Set the
cnpg.io/clusterlabel to thePoolerpods (#3153)
Changes:
Stop using the
postgresql.auto.conffile inside PGDATA to control Postgres replication settings, and replace it with a file namedoverride.conf(#2812)
Technical enhancements:
Use extended query protocol for PostgreSQL in the instance manager (#3152)
Version 1.20.3
Release date: Oct 11, 2023
Important Changes:
Change the default value of
stopDelayto 1800 seconds instead of 30 seconds (#2848)Introduce a new parameter, called
smartShutdownTimeout, to control the window of time reserved for the smart shutdown of Postgres to complete; the general formula to compute the overall timeout to stop Postgres ismax(stopDelay - smartShutdownTimeout, 30)(#2848)Change the default value of
startDelayto 3600, instead of 30 seconds (#2847)Replace the livenessProbe initial delay with a more proper Kubernetes startup probe to deal with the start of a Postgres server (#2847)
Change the default value of
switchoverDelayto 3600 seconds instead of 40000000 seconds (#2846)Stop supporting the
postgresqllabel - replaced bycnpg.io/clusterin 1.18 (#2744)
Security:
Add a default
seccompProfileto the operator deployment (#2926)
Enhancements:
Introduce the
cnpg.io/coredumpFilterannotation to control the content of a core dump generated in the unlikely event of a PostgreSQL crash, by default set to exclude shared memory segments from the dump (#2733)Allow to configure ephemeral-storage limits for the shared memory and temporary data ephemeral volumes (#2830)
Validate resource limits and requests through the webhook (#2663)
Ensure that PostgreSQL’s
shared_buffersare coherent with the pods’ allocated memory resources (#2840)Add
uriandjdbc-urifields in the credential secrets to facilitate developers when connecting their applications to the database (#2186)Add a new phase
Waiting for the instances to become activefor finer control of a cluster’s state waiting for the replicas to be ready (#2612)Improve detection of Pod rollout conditions through the
podSpecannotation (#2243)Add primary timestamp and uptime to the kubectl plugin’s
statuscommand (#2953)
Fixes:
Ensure that the primary instance is always recreated first by prioritizing ready PVCs with a primary role (#2544)
Honor the
cnpg.io/skipEmptyWalArchiveCheckannotation during recovery to bypass the check for an empty WAL archive (#2731)Prevent a cluster from being stuck when the PostgreSQL server is down but the pod is up on the primary (#2966)
Avoid treating the designated primary in a replica cluster as a regular HA replica when replication slots are enabled (#2960)
Reconcile services every time the selectors change or when labels/annotations need to be changed (#2918)
Defaults to
appboth the owner and database during recovery bootstrap (#2957)Avoid write-read concurrency on cached cluster (#2884)
Remove empty items, make them unique and sort in the
ResourceNamesections of the generated roles (#2875)Ensure that the
ContinuousArchivingcondition is properly set to ‘failed’ in case of errors (#2625)Make the
Backupresource reconciliation cycle more resilient on interruptions by stopping only if the backup is completed or failed (#2591)Reconcile PodMonitor
labelsandannotations(#2583)Fix backup failure due to missing RBAC
resourceNameson theRoleobject (#2956)Observability:
Add TCP port label to default
pg_stat_replicationmetric (#2961)Fix the
pg_wal_statdefault metric for Prometheus (#2569)Improve the
pg_replicationdefault metric for Prometheus (#2744 and #2750)Use
alertInstanceLabelFilterinstead ofalertNamein the provided Grafana dashboardEnforce
standard_conforming_stringsin metric collection (#2888)
Changes:
Set the default operand image to PostgreSQL 16.0
Fencing now uses PostgreSQL’s fast shutdown instead of smart shutdown to halt an instance (#3051)
Rename webhooks from kb.io to cnpg.io group (#2851)
Replace the
cnpg snapshotcommand withcnpg backup -m volumeSnapshotfor thekubectlpluginLet the
cnpg hibernateplugin command use theClusterManifestAnnotationNameandPgControldataAnnotationNameannotations on PVCs (#2657)Add the
cnpg.io/instanceRolelabel while deprecating the existingrolelabel (#2915)
Technical enhancements:
Replace
k8s-api-docgenwithgen-crd-api-reference-docsto automatically build the API reference documentation (#2606)
Version 1.20.2
Release date: July 27, 2023
Enhancements:
New
logscommand in the kubectl plugin, to retrieve or follow the logs of all pods in a cluster (#2375)Add support for specifying priorityClassName in pods, helping Kubernetes make scheduling decisions (#2043)
Add a metric and status field to monitor node usage by a CloudNativePG cluster (#2257)
Various enhancements to the documentation:
Add troubleshooting instructions relating to hugepages (#1390)
Extend the FAQs page (#2344)
Technical enhancements:
Add a check at the start of the restore process to ensure it can proceed; give improved error diagnostics if it cannot (#2419)
Improve handling of non-expiring passwords in managed roles (#2334)
Fixes:
Ensure the logic of setting the recovery target matches that of Postgres (#2460)
Prevent taking over service accounts not owned by the cluster, by setting ownerMetadata only during service account creation (#2462)
Ensure correct permissions of the PGDATA directory for initdb and restore (#2384)
Prevent a possible crash of the instance manager during the configuration reload (#2393)
Prevent the LastFailedArchiveTime alert from triggering if a new backup has been successful after the failed ones (#1751)
Prevent services from targeting non-instance pods (#2336)
Security:
Updated all project dependencies to the latest versions
Version 1.20.1
Release date: June 12, 2023
Enhancements:
Add the
snapshotcommand to thecnpgplugin to create a consistent cold backup of the cluster from a standby using the KubernetesVolumeSnapshotstandard resource (#1960)First implementation of recovery from a set of CSI VolumeSnapshot resources via the
.spec.bootstrap.recovery.volumeSnapshotstanza (#1960)Add
pg_failover_slotsto managed extensions (#2057)Improved Grafana dashboard with updated instructions in the documentation and the quickstart guide (#1916)
Introduce the
schemaOnlyoption in theimportstanza, to avoid exporting and importing data when you bootstrap a new Postgres Cluster from one or more existing databases (#2234)Add support for TopologySpreadConstraints to manage scheduling of instance pods (#2202)
Add
PodMonitorsupport to thePoolerfor PgBouncer (#2034)Add option to override the default Kubernetes scheduler (#2013)
Allow configuration of deployment strategy of a
Poolerresource (#1983)Update default PostgreSQL version to 15.3 (#2022)
Use PgBouncer 1.19 by default (#2018)
Technical enhancements:
Updated k8s kind tested versions (#2054)
Declarative roles should ignore passwords if not set, easing management of previously existing roles (#2029)
Use separate transactions to reconcile role credentials. Before this patch, the operator would revert the synchronization of all roles if one failed (#2004)
Ensure fencing is removed during cluster restore (#1987)
Improve logging when deleting Pods (#2136)
Fixes:
Fix unbound variable with k3s engine which could prevent setup on K3’s (#2157)
Report the correct PG version in the metrics (#2126)
Use the correct walStorage key in the documentation (#2140)
Halt reconciliation when the operator cannot connect with the instances, and provide a clear diagnostic on such occasions. This will help clarify cases where network issues obstruct normal operation of CloudNativePG (#2145), (#2233), and (#2242)
Version 1.20.0
Release date: April 27, 2023
Features:
Declarative role management: introduce the
managed.rolesstanza in theClusterspec to provide full lifecycle management of database roles, by providing an abstraction to the related DDL commands in PostgreSQL, such asCREATE ROLEandALTER ROLE(#1524, #1793 and #1815)Declarative hibernation of a PostgreSQL cluster: introduce a new annotation called
cnpg.io/hibernationto declaratively hibernate a PostgreSQL cluster by deleting all pods and keeping the PVCs only; the feature also implements the inverse procedure (#1657)
Enhancements:
Improve the
--logsoption of thereportcommand of thecnpgplugin forkubectlto also include the previous logs where available (#1811)The
-anyservice is now disabled by default (#1755)
Security:
Enable customization of
SeccompProfilethrough override via a local file (#1827)
Fixes: