Skip to content

Commit a43b963

Browse files
authored
docs: release 1.28.1 and 1.27.3 (#48)
Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
1 parent 688641a commit a43b963

41 files changed

Lines changed: 1062 additions & 137 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

website/docs/cloudnative-pg.v1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ _Appears in:_
984984

985985
| Field | Description | Required | Default | Validation |
986986
| --- | --- | --- | --- | --- |
987-
| `name` _string_ | The name of the extension, required | True | | MinLength: 1 <br />Pattern: `^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` <br /> |
987+
| `name` _string_ | The name of the extension, required | True | | MinLength: 1 <br />Pattern: `^[a-z0-9]([-a-z0-9_]*[a-z0-9])?$` <br /> |
988988
| `image` _[ImageVolumeSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#imagevolumesource-v1-core)_ | The image containing the extension, required | True | | |
989989
| `extension_control_path` _string array_ | The list of directories inside the image which should be added to extension_control_path.<br />If not defined, defaults to "/share". | | | |
990990
| `dynamic_library_path` _string array_ | The list of directories inside the image which should be added to dynamic_library_path.<br />If not defined, defaults to "/lib". | | | |

website/docs/imagevolume_extensions.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,17 @@ spec:
137137

138138
The `name` field is **mandatory** and **must be unique within the cluster**, as
139139
it determines the mount path (`/extensions/foo` in this example). It must
140-
consist of *lowercase alphanumeric characters or hyphens (`-`)* and must start
140+
consist of *lowercase alphanumeric characters, underscores (`_`) or hyphens (`-`)* and must start
141141
and end with an alphanumeric character.
142142

143+
:::note
144+
Extension names containing underscores (e.g., `pg_ivm`) are converted to use
145+
hyphens (e.g., `pg-ivm`) for Kubernetes volume names to comply with RFC 1123
146+
DNS label requirements. Do not use extension names that become identical after
147+
sanitization (e.g., `pg_ivm` and `pg-ivm` both sanitize to `pg-ivm`). The
148+
webhook validation will prevent such conflicts.
149+
:::
150+
143151
The `image` stanza follows the [Kubernetes `ImageVolume` API](https://kubernetes.io/docs/tasks/configure-pod-container/image-volumes/).
144152
The `reference` must point to a valid container registry path for the extension
145153
image.

website/docs/installation_upgrade.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ title: Installation and upgrades
1414
The operator can be installed like any other resource in Kubernetes,
1515
through a YAML manifest applied via `kubectl`.
1616

17-
You can install the [latest operator manifest](https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.28/releases/cnpg-1.28.0.yaml)
17+
You can install the [latest operator manifest](https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.28/releases/cnpg-1.28.1.yaml)
1818
for this minor release as follows:
1919

2020
```sh
2121
kubectl apply --server-side -f \
22-
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.28/releases/cnpg-1.28.0.yaml
22+
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.28/releases/cnpg-1.28.1.yaml
2323
```
2424

2525
You can verify that with:

website/docs/kubectl-plugin.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ them in your systems.
3838

3939
#### Debian packages
4040

41-
For example, let's install the 1.28.0 release of the plugin, for an Intel based
41+
For example, let's install the 1.28.1 release of the plugin, for an Intel based
4242
64 bit server. First, we download the right `.deb` file.
4343

4444
```sh
45-
wget https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.28.0/kubectl-cnpg_1.28.0_linux_x86_64.deb \
45+
wget https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.28.1/kubectl-cnpg_1.28.1_linux_x86_64.deb \
4646
--output-document kube-plugin.deb
4747
```
4848

@@ -53,17 +53,17 @@ $ sudo dpkg -i kube-plugin.deb
5353
Selecting previously unselected package cnpg.
5454
(Reading database ... 6688 files and directories currently installed.)
5555
Preparing to unpack kube-plugin.deb ...
56-
Unpacking cnpg (1.28.0) ...
57-
Setting up cnpg (1.28.0) ...
56+
Unpacking cnpg (1.28.1) ...
57+
Setting up cnpg (1.28.1) ...
5858
```
5959

6060
#### RPM packages
6161

62-
As in the example for `.rpm` packages, let's install the 1.28.0 release for an
62+
As in the example for `.rpm` packages, let's install the 1.28.1 release for an
6363
Intel 64 bit machine. Note the `--output` flag to provide a file name.
6464

6565
```sh
66-
curl -L https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.28.0/kubectl-cnpg_1.28.0_linux_x86_64.rpm \
66+
curl -L https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.28.1/kubectl-cnpg_1.28.1_linux_x86_64.rpm \
6767
--output kube-plugin.rpm
6868
```
6969

@@ -77,7 +77,7 @@ Dependencies resolved.
7777
Package Architecture Version Repository Size
7878
====================================================================================================
7979
Installing:
80-
cnpg x86_64 1.28.0 @commandline 20 M
80+
cnpg x86_64 1.28.1 @commandline 20 M
8181

8282
Transaction Summary
8383
====================================================================================================
@@ -306,9 +306,9 @@ sandbox-3 0/604DE38 0/604DE38 0/604DE38 0/604DE38 00:00:00 00:00:00 00
306306
Instances status
307307
Name Current LSN Replication role Status QoS Manager Version Node
308308
---- ----------- ---------------- ------ --- --------------- ----
309-
sandbox-1 0/604DE38 Primary OK BestEffort 1.28.0 k8s-eu-worker
310-
sandbox-2 0/604DE38 Standby (async) OK BestEffort 1.28.0 k8s-eu-worker2
311-
sandbox-3 0/604DE38 Standby (async) OK BestEffort 1.28.0 k8s-eu-worker
309+
sandbox-1 0/604DE38 Primary OK BestEffort 1.28.1 k8s-eu-worker
310+
sandbox-2 0/604DE38 Standby (async) OK BestEffort 1.28.1 k8s-eu-worker2
311+
sandbox-3 0/604DE38 Standby (async) OK BestEffort 1.28.1 k8s-eu-worker
312312
```
313313

314314
If you require more detailed status information, use the `--verbose` option (or
@@ -362,9 +362,9 @@ sandbox-primary primary 1 1 1
362362
Instances status
363363
Name Current LSN Replication role Status QoS Manager Version Node
364364
---- ----------- ---------------- ------ --- --------------- ----
365-
sandbox-1 0/6053720 Primary OK BestEffort 1.28.0 k8s-eu-worker
366-
sandbox-2 0/6053720 Standby (async) OK BestEffort 1.28.0 k8s-eu-worker2
367-
sandbox-3 0/6053720 Standby (async) OK BestEffort 1.28.0 k8s-eu-worker
365+
sandbox-1 0/6053720 Primary OK BestEffort 1.28.1 k8s-eu-worker
366+
sandbox-2 0/6053720 Standby (async) OK BestEffort 1.28.1 k8s-eu-worker2
367+
sandbox-3 0/6053720 Standby (async) OK BestEffort 1.28.1 k8s-eu-worker
368368
```
369369

370370
With an additional `-v` (e.g. `kubectl cnpg status sandbox -v -v`), you can
@@ -640,12 +640,12 @@ Archive: report_operator_<TIMESTAMP>.zip
640640

641641
```output
642642
====== Beginning of Previous Log =====
643-
2023-03-28T12:56:41.251711811Z {"level":"info","ts":"2023-03-28T12:56:41Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.28.0","build":{"Version":"1.28.0+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
643+
2023-03-28T12:56:41.251711811Z {"level":"info","ts":"2023-03-28T12:56:41Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.28.1","build":{"Version":"1.28.1+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
644644
2023-03-28T12:56:41.251851909Z {"level":"info","ts":"2023-03-28T12:56:41Z","logger":"setup","msg":"Starting pprof HTTP server","addr":"0.0.0.0:6060"}
645645
<snipped …>
646646
647647
====== End of Previous Log =====
648-
2023-03-28T12:57:09.854306024Z {"level":"info","ts":"2023-03-28T12:57:09Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.28.0","build":{"Version":"1.28.0+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
648+
2023-03-28T12:57:09.854306024Z {"level":"info","ts":"2023-03-28T12:57:09Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.28.1","build":{"Version":"1.28.1+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
649649
2023-03-28T12:57:09.854363943Z {"level":"info","ts":"2023-03-28T12:57:09Z","logger":"setup","msg":"Starting pprof HTTP server","addr":"0.0.0.0:6060"}
650650
```
651651

website/docs/release_notes/v1.27.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,119 @@ For a complete list of changes, please refer to the
1111
[commits](https://github.com/cloudnative-pg/cloudnative-pg/commits/release-1.27)
1212
on the release branch in GitHub.
1313

14+
## Version 1.27.3
15+
16+
**Release date:** Feb 5, 2026
17+
18+
### Enhancements
19+
20+
- Added support for Azure's `DefaultAzureCredential` authentication mechanism
21+
for backup and recovery operations. This can be enabled by setting
22+
`azureCredentials.useDefaultAzureCredentials: true` in the backup
23+
configuration, simplifying authentication in Azure environments without
24+
requiring explicit storage account keys or SAS tokens.
25+
([#9468](https://github.com/cloudnative-pg/cloudnative-pg/pull/9468)) <!-- 1.27 1.25 -->
26+
27+
- Added support for PostgreSQL extension names containing underscores (e.g.,
28+
`pg_ivm`, `pg_stat_statements`). Extension names with underscores are
29+
automatically sanitized to use hyphens for Kubernetes volume names while
30+
preserving the original name in mount paths. Webhook validation prevents
31+
naming conflicts after sanitization. Contributed by @shusaan.
32+
([#9386](https://github.com/cloudnative-pg/cloudnative-pg/pull/9386)) <!-- 1.27 -->
33+
34+
### Fixes
35+
36+
- Fixed a critical issue where the `TimelineID` in the cluster status was not
37+
reset to 1 after a major version upgrade. Because `pg_upgrade` initializes a
38+
new timeline, keeping the old ID (e.g., timeline 2) caused replicas to attempt
39+
to restore incompatible history files from object storage, leading to fatal
40+
"requested timeline is not a child of this server's history" errors.
41+
([#9830](https://github.com/cloudnative-pg/cloudnative-pg/pull/9830)) <!-- 1.27 -->
42+
43+
- Fixed a bug where replicas could enter a crash-loop by attempting to download
44+
timeline history files from future timelines. This occurred when stale files
45+
remained in the WAL archive from a previous cluster life, and replicas would
46+
incorrectly try to fetch them during recovery.
47+
([#9650](https://github.com/cloudnative-pg/cloudnative-pg/pull/9650)) <!-- 1.27 1.25 -->
48+
49+
- Fixed a race condition in `replica_cluster` setups during designated primary
50+
transitions, preventing transient "no primary" states in the replica cluster.
51+
([#9601](https://github.com/cloudnative-pg/cloudnative-pg/pull/9601)) <!-- 1.27 1.25 -->
52+
53+
- The backup controller now uses the unique instance session ID to detect
54+
instance manager restarts. This prevents the operator from incorrectly
55+
assuming a backup is still progressing if the underlying container has crashed
56+
and restarted, which previously led to orphaned backup objects.
57+
([#9370](https://github.com/cloudnative-pg/cloudnative-pg/pull/9370)) <!-- 1.27 -->
58+
59+
- Fixed a validation gap in Azure object store configurations where the
60+
`storageAccount` was not required when using explicit credentials (such as a
61+
storage key or SAS token). The operator now enforces that a storage account
62+
name is provided in these cases and that `connectionString` is mutually
63+
exclusive with other authentication parameters.
64+
([#9604](https://github.com/cloudnative-pg/cloudnative-pg/pull/9604)) <!-- 1.27 1.25 -->
65+
66+
- Optimized the deletion path so the operator begins cleaning up resources
67+
immediately when a cluster is marked for deletion. This significantly reduces
68+
the time a cluster remains in `Terminating` status while waiting for internal
69+
reconciliation loops.
70+
([#9555](https://github.com/cloudnative-pg/cloudnative-pg/pull/9555)) <!-- 1.27 1.25 -->
71+
72+
- Fixed an issue where replication slots were not properly dropped from
73+
replicas when the feature was disabled or the cluster was reconfigured.
74+
This ensures that unused slots do not cause WAL build-up on the primary.
75+
([#9381](https://github.com/cloudnative-pg/cloudnative-pg/pull/9381)) <!-- 1.27 1.25 -->
76+
77+
- Fixed an issue where `imagePullSecrets` were not added to the `ServiceAccount`
78+
created for the `Pooler`. Previously, these secrets were applied to the
79+
Deployment but not the SA, which caused image pull failures in restricted
80+
environments using certain security policies.
81+
([#9427](https://github.com/cloudnative-pg/cloudnative-pg/pull/9427)) <!-- 1.27 1.25 -->
82+
83+
- Added a check to verify ownership before the operator deletes a `PodMonitor`.
84+
This prevents the operator from accidentally deleting manually managed
85+
monitoring resources that happen to share a name with expected CNPG
86+
resources. Contributed by @juliamertz.
87+
([#9340](https://github.com/cloudnative-pg/cloudnative-pg/pull/9340)) <!-- 1.27 1.25 -->
88+
89+
- Fixed a bug where `pg_stat_archiver` metrics would continue to report stale
90+
data on standby instances after a switchover. The exporter now skips these
91+
metrics on standbys, as PostgreSQL only provides valid archiver stats on the
92+
primary.
93+
([#9411](https://github.com/cloudnative-pg/cloudnative-pg/pull/9411)) <!-- 1.27 1.25 -->
94+
95+
- Clarified the interpretation of timestamp formats for recovery `targetTime`.
96+
Timestamps provided without an explicit timezone are now consistently
97+
interpreted as UTC. Contributed by @pchovelon.
98+
([#8937](https://github.com/cloudnative-pg/cloudnative-pg/pull/8937)) <!-- 1.27 1.25 -->
99+
100+
- Fixed backup status updates to prevent "resource has been modified" errors
101+
during concurrent updates.
102+
([#9551](https://github.com/cloudnative-pg/cloudnative-pg/pull/9551)) <!-- 1.27 1.25 -->
103+
104+
- Fixed event reporting to use the correct pod name when a backup pod is not
105+
found.
106+
([#9552](https://github.com/cloudnative-pg/cloudnative-pg/pull/9552)) <!-- 1.27 1.25 -->
107+
108+
- Improved performance of scheduled backup operations for clusters with a very
109+
high number of historical backups.
110+
([#9489](https://github.com/cloudnative-pg/cloudnative-pg/pull/9489)) <!-- 1.27 1.25 -->
111+
112+
- Fixed error handling when removing finalizers on `Database` objects.
113+
([#9431](https://github.com/cloudnative-pg/cloudnative-pg/pull/9431)) <!-- 1.27 1.25 -->
114+
115+
- `cnpg` plugin:
116+
117+
- Updated the `status` command to display "Disabled" when the
118+
`skipWalArchiving` annotation is present on a cluster. This replaces
119+
confusing "starting up" or "unknown" states when WAL archiving is
120+
intentionally bypassed.
121+
([#9709](https://github.com/cloudnative-pg/cloudnative-pg/pull/9709)) <!-- 1.27 1.25 -->
122+
123+
- Fixed the `logs --follow` command to continue polling for new pods instead
124+
of exiting prematurely when all current log streams complete.
125+
([#9599](https://github.com/cloudnative-pg/cloudnative-pg/pull/9599)) <!-- 1.27 1.25 -->
126+
14127
## Version 1.27.2
15128

16129
**Release date:** Dec 9, 2025

0 commit comments

Comments
 (0)