Release notes for CloudNativePG 1.18

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

For a complete list of changes, please refer to the commits

on the release branch in GitHub.

Version 1.18.5

Release date: June 12, 2023

Warning

This is expected to be the last release in the 1.18.X series. Users are encouraged to update to a newer minor version soon. Enhancements:

  • Add the snapshot command to the cnpg plugin to create a consistent cold backup of the cluster from a standby using the Kubernetes VolumeSnapshot standard resource (#1960)

  • First implementation of recovery from a set of CSI VolumeSnapshot resources via the .spec.bootstrap.recovery.volumeSnapshot stanza (#1960)

  • Add pg_failover_slots to managed extensions (#2057)

  • Improved Grafana dashboard with updated instructions in the documentation and the quickstart guide (#1916)

  • Introduce the schemaOnly option in the import stanza, 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 PodMonitor support to the Pooler for PgBouncer (#2034)

  • Add option to override the default Kubernetes scheduler (#2013)

  • Allow configuration of deployment strategy of a Pooler resource (#1983)

  • Update default PostgreSQL version to 15.3 (#2022)

  • Use PgBouncer 1.19 by default (#2018)

Technical enhancements:

  • Updated k8s kind tested versions (#2054)

  • 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.18.4

Release date: April 27, 2023

for more information on PostgreSQL major offline upgrades. Enhancements:

  • Improve the --logs option of the report command of the cnpg plugin for kubectl to also include the previous logs where available (#1811)

  • The -any service is now disabled by default (#1755)

Security:

  • Enable customization of SeccompProfile through override via a local file (#1827)

Fixes:

  • Apply the PostgreSQL configuration provided by the user during the initdb bootstrap phase, before the server is started the first time (#1858)

Version 1.18.3

Release date: March 20, 2023

Enhancements:

  • Extend the debug cluster’s log level to the initdb job (#1503)

  • Support IPv6 and custom pg_hba for the PgBouncer pooler (#1395)

  • Enhance observability of backups with two new metrics and additional information in the status (#1428)

  • Document API calls from the instance manager (#1641)

  • Clarify deployment name via Helm (#1505)

  • Add the psql command to the cnpg plugin for kubectl (#1668) allowing the user to start a psql session with a pod (the primary by default)

Technical enhancements:

  • Adopt Renovate for dependency tracking/updating (#1367, #1473)

  • Inject binaries for all supported architectures in the operator image (#1513)

  • Use the backup name to match resources in the backup object store (#1650) Leverages the --name option introduced with Barman 3.3 to make the association between backups and the object store more robust.

Fixes:

  • Prevent panic with error handling in the probes (#1716)

  • Ensure that the HTTP package and controller runtime logs are in JSON format (#1442)

  • Adds WAL storage to a cluster in a single instance Cluster (#1570)

  • Various improvements to make backup code more robust (#1536, #1564, #1588, #1466, #1647)

  • Properly show WAL archiving information with status command of the cnpg plugin (#1666)

  • Ensure nodeAffinity is applied even if AdditionalPodAffinity and AdditionalPodAntiAffinity are not set (#1663)

Version 1.18.2

Release date: Feb 14, 2023

Enhancements:

  • Introduce support for Kubernetes’ projected volumes (#1269)

  • Introduce support custom environment variables for finer control of the PostgreSQL server process (#1275)

  • Introduce the backup command in the cnpg plugin for kubectl to issue a new base backup of the cluster (#1348)

  • Improve support for the separate WAL volume feature by enabling users to move WAL files to a dedicated volume on an existing Postgres cluster (#1066)

  • Enhance WAL observability with additional metrics for the Prometheus exporter, including values equivalent to the min_wal_size , max_wal_size , keep_wal_size , wal_keep_segments , as well as the maximum number of WALs that can be stored in the dedicated volume (#1382)

  • Add a database comment on the streaming_replica user (#1349)

  • Document the firewall issues with webhooks on GKE (#1364)

  • Add note about postgresql.conf in recovery (#1211)

  • Add instructions on installing plugin using packages (#1357)

  • Specify Postgres versions supported by each minor release (#1355)

  • Clarify the meaning of PVC group in CloudNativePG (#1344)

  • Add an example of the DigitalOcean S3-compatible Spaces (#1289)

Technical enhancements:

  • Added daily end-to-end smoke test for release branches (#1235)

Fixes:

  • Skip executing a CHECKPOINT as the streaming_replica user (#1408)

  • Make waitForWalArchiveWorking resilient to connection errors (#1399)

  • Ensure that the PVC roles are always consistent (#1380)

  • Permit walStorage resize when using pvcTemplate (#1315)

  • Ensure ExecCommand obeys timeout (#1242)

  • Avoid PodMonitor reconcile if Prometheus is not installed (#1238)

  • Avoid looking for PodMonitor when not needed (#1213)

Version 1.18.1

Release date: Dec 21, 2022

Important announcements:

  • Alert on the impending deprecation of postgresql as a label to identify the CNPG cluster. In the remote case you have used this label, please start using the cnpg.io/cluster label instead (#1130)

  • Recognizing Armando Ruocco (@armru) as a new CloudNativePG maintainer for his consistent and impactful contributions (#1167)

  • Remove ARMv7 support (#1092)

  • FINAL patch release for 1.16: 1.16.5. Release 1.16 reaches end of life.

Enhancements:

  • Customize labels and annotations for the service account: add a service account template that can be used, for example, to make authentication easier via identity management on GKE or EKS via IRSA (#1105)

  • Add nodeAffinity support (#1182) - allows for richer scheduling options

  • Improve compatibility with Istio: add support for Istio’s quit endpoint so that jobs with Istio sidecars do not run indefinitely (#967)

  • Allow fields remapping in JSON logs: helpful for use cases where the level and ts fields might interfere with the existing logging (#843)

  • Add fio command to the kubectl-cnpg plugin (#1097)

  • Add rpm/deb package for kubectl-cnpg plugin (#1008)

  • Update default PostgreSQL version for new cluster definitions to 15.1 (#908)

  • Documentation

  • Remove references to CNPG sandbox (#1120) - the CNPG sandbox has been deprecated, in favor of instructions on monitoring in the Quickstart documentation

  • Link to the “Release updates” discussion (#1148) - the release updates discussion will become the default channel for release announcements and discussions

  • Document emeritus status for maintainers in GOVERNANCE.md (#1033) - explains how maintainers should proceed if they are not ready to continue contributing

  • Improve instructions on creating pull requests (#1132)

  • Troubleshooting emergency backup instructions (#1184)

  • Cover the Kubernetes layer in greater detail in the Architecture documentation (#1432)

Fixes:

  • Ensure PGDATA permissions on bootstrap are properly set to 750 (#1164)

  • Ensure the PVC containing WALs is deleted when scaling down the cluster (#1135)

  • Fix missing ApiVersion and Kind in the pgbench manifest when using --dry-run (#1088)

  • Ensure that we create secrets and services only when not found (#1145)

  • Respect configured pg-wal when restoring (#1216)

  • Filter out replicas from nodeToClusters map (#1194)

Technical enhancements:

  • Use ciclops for test summary (#1064): rely on the ciclops GitHub action to provide summaries of the E2E suite, inheriting improvements from that project

  • Add backport pull request workflow (#965) - automatically backport patches to release branches if they are so annotated

  • Make the operator log level configurable in e2e test suite (#1094)

  • Enable test execution based on labels (#951)

  • Update Go version from 1.18 to 1.19 (#1166)

Version 1.18.0

Release date: Nov 10, 2022

Features:

  • Cluster-managed physical replication slots for High Availability: automatically manages physical replication slots for each hot standby replica in the High Availability cluster, both in the primary and the standby (#740)

  • Postgres cluster hibernation: introduces cluster hibernation via the plugin, with a new subcommand kubectl cnpg hibernate on/off/status <cluster-name> . Hibernation destroys all the resources generated by the cluster, except the PVCs that belong to the PostgreSQL primary instance (#782)

Security:

  • Add SeccomProfile to Pods and Containers (#888)

Enhancements:

  • Allow omitting the storage size in the cluster spec if there is a size request in the pvcTemplate (#914)

  • status command for the cnpg plugin:

  • Add replication slots information (#873)

  • Clarify display for fenced clusters (#886)

  • Improve display for replica clusters (#871)

  • Documentation:

  • Improve monitoring page, providing instructions on how to evaluate the observability capabilities of CloudNativePG on a local system using Prometheus and Grafana (#968)

  • Add page on design reasons for custom controller (#918)

  • Updates to the End-to-End Test Suite page (#945)

  • New subcommands in the cnpg plugin:

    • pgbench generates a job definition executing pgbench against a cluster (#958)

    • install generates an installation manifest for the operator (#944)

  • Set PostgreSQL 15.0 as the new default version (#821)

Fixes:

  • Import a database with plpgsql functions (#974)

  • Properly find the closest backup when doing Point-in-time recovery (#949)

  • Clarify that the ScheduledBackup format does not follow Kubernetes CronJob format (#883)

  • Bases the failover logic on the Postgres information from the instance manager, rather than Kubernetes pod readiness, which could be stale (#890)

  • Ensure we have a WAL to archive for every newly created cluster. The lack could prevent backups from working (#897)

  • Correct YAML key names for barmanObjectStore in documentation (#877)

  • Fix krew release (#866)