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.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 thepg_wal_statdefault metric for Prometheus (#2569) - Improve thepg_replicationdefault metric for Prometheus (#2744 and #2750) - UsealertInstanceLabelFilterinstead ofalertNamein the provided Grafana dashboard - Enforcestandard_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:
Apply the PostgreSQL configuration provided by the user during the
initdbbootstrap phase, before the server is started the first time (#1858)