Skip to content

Commit 88c989a

Browse files
committed
docs: release 1.28.1 and 1.27.3
Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
1 parent 688641a commit 88c989a

35 files changed

Lines changed: 780 additions & 118 deletions
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"label": "Appendixes",
3+
"position": 600,
4+
"link": {
5+
"type": "generated-index"
6+
}
7+
}

website/versioned_docs/version-1.27/appendixes/object_stores.md

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ You can also use any compatible implementation of the supported services.
2727
The required setup depends on the chosen storage provider and is
2828
discussed in the following sections.
2929

30+
:::note Authentication Methods
31+
CloudNativePG does not independently test all authentication methods
32+
supported by `barman-cloud`. CloudNativePG's responsibility is limited to passing
33+
the provided credentials to `barman-cloud`, which then handles authentication
34+
according to its own implementation. Users should refer to the
35+
[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to
36+
verify that their chosen authentication method is supported and properly
37+
configured.
38+
:::
39+
3040
## AWS S3
3141

3242
[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is
@@ -195,17 +205,15 @@ spec:
195205
[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) is the
196206
object storage service provided by Microsoft.
197207

198-
In order to access your storage account for backup and recovery of
199-
CloudNativePG managed databases, you will need one of the following
200-
combinations of credentials:
208+
CloudNativePG supports the following authentication methods for Azure Blob Storage:
201209

202210
- [Connection String](https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#configure-a-connection-string-for-an-azure-storage-account)
203-
- Storage account name and [Storage account access key](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage)
204-
- Storage account name and [Storage account SAS Token](https://docs.microsoft.com/en-us/azure/storage/blobs/sas-service-create)
205-
- Storage account name and [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html)
206-
properly configured.
211+
- Storage Account Name + [Storage Account Access Key](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage)
212+
- Storage Account Name + [Storage Account SAS Token](https://docs.microsoft.com/en-us/azure/storage/blobs/sas-service-create)
213+
- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview)
214+
- [Default Azure Credentials](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python)
207215

208-
Using **Azure AD Workload Identity**, you can avoid saving the credentials into a Kubernetes Secret,
216+
Using **Azure AD Managed Identity**, you can avoid saving the credentials into a Kubernetes Secret,
209217
and have a Cluster configuration adding the `inheritFromAzureAD` as follows:
210218

211219
```yaml
@@ -220,6 +228,23 @@ spec:
220228
inheritFromAzureAD: true
221229
```
222230

231+
Alternatively, you can use the **Default Azure Credentials** authentication mechanism, which provides
232+
a seamless authentication experience by supporting multiple authentication methods including environment
233+
variables, managed identities, and Azure CLI credentials. Add the `useDefaultAzureCredentials` flag
234+
as follows:
235+
236+
```yaml
237+
apiVersion: postgresql.cnpg.io/v1
238+
kind: Cluster
239+
[...]
240+
spec:
241+
backup:
242+
barmanObjectStore:
243+
destinationPath: "<destination path here>"
244+
azureCredentials:
245+
useDefaultAzureCredentials: true
246+
```
247+
223248
On the other side, using both **Storage account access key** or **Storage account SAS Token**,
224249
the credentials need to be stored inside a Kubernetes Secret, adding data entries only when
225250
needed. The following command performs that:

website/versioned_docs/version-1.27/cloudnative-pg.v1.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -971,7 +971,7 @@ _Appears in:_
971971

972972
| Field | Description | Required | Default | Validation |
973973
| --- | --- | --- | --- | --- |
974-
| `name` _string_ | The name of the extension, required | True | | MinLength: 1 <br />Pattern: `^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` <br /> |
974+
| `name` _string_ | The name of the extension, required | True | | MinLength: 1 <br />Pattern: `^[a-z0-9]([-a-z0-9_]*[a-z0-9])?$` <br /> |
975975
| `image` _[ImageVolumeSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#imagevolumesource-v1-core)_ | The image containing the extension, required | True | | |
976976
| `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". | | | |
977977
| `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". | | | |
@@ -1200,6 +1200,7 @@ _Appears in:_
12001200
| --- | --- | --- | --- | --- |
12011201
| `podName` _string_ | The pod name | | | |
12021202
| `ContainerID` _string_ | The container ID | | | |
1203+
| `sessionID` _string_ | The instance manager session ID. This is a unique identifier generated at instance manager<br />startup and changes on every restart (including container reboots). Used to detect if<br />the instance manager was restarted during long-running operations like backups, which<br />would terminate any running backup process. | | | |
12031204

12041205

12051206
#### InstanceReportedState
@@ -2167,7 +2168,7 @@ _Appears in:_
21672168
| `targetXID` _string_ | The target transaction ID | | | |
21682169
| `targetName` _string_ | The target name (to be previously created<br />with `pg_create_restore_point`) | | | |
21692170
| `targetLSN` _string_ | The target LSN (Log Sequence Number) | | | |
2170-
| `targetTime` _string_ | The target time as a timestamp in the RFC3339 standard | | | |
2171+
| `targetTime` _string_ | The target time as a timestamp in RFC3339 format or PostgreSQL timestamp format.<br />Timestamps without an explicit timezone are interpreted as UTC. | | | |
21712172
| `targetImmediate` _boolean_ | End recovery as soon as a consistent state is reached | | | |
21722173
| `exclusive` _boolean_ | Set the target to be exclusive. If omitted, defaults to false, so that<br />in Postgres, `recovery_target_inclusive` will be true | | | |
21732174

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"label": "CNCF Projects Integrations",
3+
"position": 590,
4+
"link": {
5+
"type": "generated-index"
6+
}
7+
}

website/versioned_docs/version-1.27/cnpg_i.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ must include this DNS name in its Subject Alternative Names (SAN).
200200

201201
To enable a plugin, configure the `.spec.plugins` section in your `Cluster`
202202
resource. Refer to the CloudNativePG API Reference for the full
203-
[PluginConfiguration](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-PluginConfiguration)
203+
[PluginConfiguration](https://cloudnative-pg.io/docs/devel/cloudnative-pg.v1/#pluginconfiguration)
204204
specification.
205205

206206
Example:

website/versioned_docs/version-1.27/connection_pooling.md

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,38 @@ GRANT EXECUTE ON FUNCTION public.user_search(text)
197197

198198
## Pod templates
199199

200-
You can take advantage of pod templates specification in the `template`
201-
section of a `Pooler` resource. For details, see
202-
[`PoolerSpec`](cloudnative-pg.v1.md#poolerspec) in the API reference.
203200

204-
Using templates, you can configure pods as you like, including fine control
205-
over affinity and anti-affinity rules for pods and nodes. By default,
206-
containers use images from `ghcr.io/cloudnative-pg/pgbouncer`.
201+
The `Pooler` resource allows you to customize the underlying pods via the
202+
`template` section. This provides full access to the Kubernetes `PodSpec` for
203+
advanced configurations like scheduling constraints, custom security contexts,
204+
or resource overrides.
207205

208-
This example shows `Pooler` specifying `PodAntiAffinity``:
206+
For a complete list of supported fields, see the
207+
[`PoolerSpec`](cloudnative-pg.v1.md#poolerspec) API reference.
208+
209+
### Key requirements
210+
211+
- **The `pgbouncer` container name:** When overriding container settings (like
212+
images or resources), the name of the container **must** be set to
213+
`pgbouncer`. The operator looks for this specific name to manage the
214+
PgBouncer process.
215+
216+
- **Mandatory `containers` field:** Since `template` follows the standard
217+
Kubernetes `PodSpec` schema, the `containers` field is mandatory.
218+
219+
- If you aren't modifying container-level settings, you must set it to an empty
220+
array: `containers: []`.
221+
222+
- If the `containers` field is missing, the API server will throw a
223+
`ValidationError`.
224+
225+
### Examples
226+
227+
#### High availability with pod anti-affinity
228+
229+
This configuration uses `podAntiAffinity` to ensure that PgBouncer pods are
230+
distributed across different nodes, preventing a single node failure from
231+
taking down the entire pool.
209232

210233
```yaml
211234
apiVersion: postgresql.cnpg.io/v1
@@ -236,16 +259,10 @@ spec:
236259
topologyKey: "kubernetes.io/hostname"
237260
```
238261

239-
:::note
240-
Explicitly set `.spec.template.spec.containers` to `[]` when not modified,
241-
as it's a required field for a `PodSpec`. If `.spec.template.spec.containers`
242-
isn't set, the Kubernetes api-server returns the following error when trying to
243-
apply the manifest:`error validating "pooler.yaml": error validating data:
244-
ValidationError(Pooler.spec.template.spec): missing required field
245-
"containers"`
246-
:::
262+
#### Custom image and resource limits
247263

248-
This example sets resources and changes the used image:
264+
You can specify a custom image and define resource requests/limits. Note that
265+
the container name is explicitly set to `pgbouncer`.
249266

250267
```yaml
251268
apiVersion: postgresql.cnpg.io/v1
@@ -264,6 +281,7 @@ spec:
264281
app: pooler
265282
spec:
266283
containers:
284+
# This name MUST be "pgbouncer"
267285
- name: pgbouncer
268286
image: my-pgbouncer:latest
269287
resources:
@@ -624,9 +642,10 @@ spec:
624642

625643
### Deprecation of Automatic `PodMonitor` Creation
626644

627-
!!!warning "Feature Deprecation Notice"
645+
:::warning[Feature Deprecation Notice]
628646
The `.spec.monitoring.enablePodMonitor` field in the `Pooler` resource is
629647
now deprecated and will be removed in a future version of the operator.
648+
:::
630649

631650
If you are currently using this feature, we strongly recommend you either
632651
remove or set `.spec.monitoring.enablePodMonitor` to `false` and manually

website/versioned_docs/version-1.27/imagevolume_extensions.md

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

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

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

website/versioned_docs/version-1.27/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.27/releases/cnpg-1.27.2.yaml)
17+
You can install the [latest operator manifest](https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.27/releases/cnpg-1.27.3.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.27/releases/cnpg-1.27.2.yaml
22+
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.27/releases/cnpg-1.27.3.yaml
2323
```
2424

2525
You can verify that with:

website/versioned_docs/version-1.27/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.27.2 release of the plugin, for an Intel based
41+
For example, let's install the 1.27.3 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.27.2/kubectl-cnpg_1.27.2_linux_x86_64.deb \
45+
wget https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.27.3/kubectl-cnpg_1.27.3_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.27.2) ...
57-
Setting up cnpg (1.27.2) ...
56+
Unpacking cnpg (1.27.3) ...
57+
Setting up cnpg (1.27.3) ...
5858
```
5959

6060
#### RPM packages
6161

62-
As in the example for `.rpm` packages, let's install the 1.27.2 release for an
62+
As in the example for `.rpm` packages, let's install the 1.27.3 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.27.2/kubectl-cnpg_1.27.2_linux_x86_64.rpm \
66+
curl -L https://github.com/cloudnative-pg/cloudnative-pg/releases/download/v1.27.3/kubectl-cnpg_1.27.3_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.27.2 @commandline 20 M
80+
cnpg x86_64 1.27.3 @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.27.2 k8s-eu-worker
310-
sandbox-2 0/604DE38 Standby (async) OK BestEffort 1.27.2 k8s-eu-worker2
311-
sandbox-3 0/604DE38 Standby (async) OK BestEffort 1.27.2 k8s-eu-worker
309+
sandbox-1 0/604DE38 Primary OK BestEffort 1.27.3 k8s-eu-worker
310+
sandbox-2 0/604DE38 Standby (async) OK BestEffort 1.27.3 k8s-eu-worker2
311+
sandbox-3 0/604DE38 Standby (async) OK BestEffort 1.27.3 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.27.2 k8s-eu-worker
366-
sandbox-2 0/6053720 Standby (async) OK BestEffort 1.27.2 k8s-eu-worker2
367-
sandbox-3 0/6053720 Standby (async) OK BestEffort 1.27.2 k8s-eu-worker
365+
sandbox-1 0/6053720 Primary OK BestEffort 1.27.3 k8s-eu-worker
366+
sandbox-2 0/6053720 Standby (async) OK BestEffort 1.27.3 k8s-eu-worker2
367+
sandbox-3 0/6053720 Standby (async) OK BestEffort 1.27.3 k8s-eu-worker
368368
```
369369

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

601601
```output
602602
====== Beginning of Previous Log =====
603-
2023-03-28T12:56:41.251711811Z {"level":"info","ts":"2023-03-28T12:56:41Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.27.2","build":{"Version":"1.27.2+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
603+
2023-03-28T12:56:41.251711811Z {"level":"info","ts":"2023-03-28T12:56:41Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.27.3","build":{"Version":"1.27.3+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
604604
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"}
605605
<snipped …>
606606
607607
====== End of Previous Log =====
608-
2023-03-28T12:57:09.854306024Z {"level":"info","ts":"2023-03-28T12:57:09Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.27.2","build":{"Version":"1.27.2+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
608+
2023-03-28T12:57:09.854306024Z {"level":"info","ts":"2023-03-28T12:57:09Z","logger":"setup","msg":"Starting CloudNativePG Operator","version":"1.27.3","build":{"Version":"1.27.3+dev107","Commit":"cc9bab17","Date":"2023-03-28"}}
609609
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"}
610610
```
611611

website/versioned_docs/version-1.27/monitoring.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ spec:
104104

105105
#### Deprecation of Automatic `PodMonitor` Creation
106106

107-
!!!warning "Feature Deprecation Notice"
107+
:::warning[Feature Deprecation Notice]
108108
The `.spec.monitoring.enablePodMonitor` field in the `Cluster` resource is
109109
now deprecated and will be removed in a future version of the operator.
110+
:::
110111

111112
If you are currently using this feature, we strongly recommend you either
112113
remove or set `.spec.monitoring.enablePodMonitor` to `false` and manually

0 commit comments

Comments
 (0)