Skip to content

Commit 71cf540

Browse files
authored
Merge pull request #7088 from EnterpriseDB/automatic_docs_update/repo_EnterpriseDB/cloud-native-postgres/ref_refs/tags/v1.28.1
2 parents 20f4f5d + 453da2d commit 71cf540

30 files changed

+3569
-112
lines changed

product_docs/docs/postgres_for_kubernetes/1/backup.mdx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ for guidance.
1717
!!!info Important
1818
Starting with version 1.26, native backup and recovery capabilities are
1919
being **progressively phased out** of the core operator and moved to official
20-
CNP-I plugins. This transition aligns with {{name.ln}}' shift towards a
20+
CNPG-I plugins. This transition aligns with {{name.ln}}' shift towards a
2121
**backup-agnostic architecture**, enabled by its extensible
22-
interface—**CNP-I**—which standardizes the management of **WAL archiving**,
22+
interface—**CNPG-I**—which standardizes the management of **WAL archiving**,
2323
**physical base backups**, and corresponding **recovery processes**.
2424
!!!
2525

@@ -58,7 +58,7 @@ up of the following resources:
5858
- **Physical base backups**: a copy of all the files that PostgreSQL uses to
5959
store the data in the database (primarily the `PGDATA` and any tablespace)
6060

61-
CNP-I provides a generic and extensible interface for managing WAL archiving
61+
CNPG-I provides a generic and extensible interface for managing WAL archiving
6262
(both archive and restore operations), as well as the base backup and
6363
corresponding restore processes.
6464

@@ -130,7 +130,7 @@ for your disaster recovery plans.
130130
Kubernetes CSI interface and supported storage classes
131131

132132
!!!info Important
133-
CNP-I is designed to enable third parties to build and integrate their own
133+
CNPG-I is designed to enable third parties to build and integrate their own
134134
backup plugins. Over time, we expect the ecosystem of supported backup
135135
solutions to grow.
136136
!!!
@@ -267,7 +267,7 @@ spec:
267267
immediate: true
268268
```
269269
270-
\### Pause Scheduled Backups
270+
### Pause Scheduled Backups
271271
272272
To temporarily stop scheduled backups from running:
273273
@@ -276,7 +276,7 @@ spec:
276276
suspend: true
277277
```
278278
279-
\### Backup Owner Reference (`.spec.backupOwnerReference`)
279+
### Backup Owner Reference (`.spec.backupOwnerReference`)
280280

281281
Controls which Kubernetes object is set as the owner of the backup resource:
282282

@@ -374,7 +374,7 @@ your broader Kubernetes cluster backup strategy.
374374
{{name.ln}} currently supports the following backup methods for scheduled
375375
and on-demand backups:
376376

377-
- `plugin` – Uses a CNP-I plugin (requires `.spec.pluginConfiguration`)
377+
- `plugin` – Uses a CNPG-I plugin (requires `.spec.pluginConfiguration`)
378378
- `volumeSnapshot` – Uses native [Kubernetes volume snapshots](backup_volumesnapshot.md#how-to-configure-volume-snapshot-backups)
379379
- `barmanObjectStore` – Uses [Barman Cloud for object storage](backup_barmanobjectstore.md)
380380
*(deprecated starting with v1.26 in favor of the
@@ -484,7 +484,7 @@ backup will be taken from the primary instance.
484484
## Retention Policies
485485

486486
{{name.ln}} is evolving toward a **backup-agnostic architecture**, where
487-
backup responsibilities are delegated to external **CNP-I plugins**. These
487+
backup responsibilities are delegated to external **CNPG-I plugins**. These
488488
plugins are expected to offer advanced and customizable data protection
489489
features, including sophisticated retention management, that go beyond the
490490
built-in capabilities and scope of {{name.ln}}.

product_docs/docs/postgres_for_kubernetes/1/cnp_i.mdx renamed to product_docs/docs/postgres_for_kubernetes/1/cnpg_i.mdx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: 'CNP-I'
3-
originalFilePath: 'src/cnp_i.md'
2+
title: 'CNPG-I'
3+
originalFilePath: 'src/cnpg_i.md'
44
---
55

66

@@ -9,32 +9,32 @@ The **CloudNativePG Interface** ([CNPG-I](https://github.com/cloudnative-pg/cnpg
99
is a standard way to extend and customize {{name.ln}} without modifying its
1010
core codebase.
1111

12-
## Why CNP-I?
12+
## Why CNPG-I?
1313

1414
{{name.ln}} supports a wide range of use cases, but sometimes its built-in
1515
functionality isn’t enough, or adding certain features directly to the main
1616
project isn’t practical.
1717

18-
Before CNP-I, users had two main options:
18+
Before CNPG-I, users had two main options:
1919

2020
- Fork the project to add custom behavior, or
2121
- Extend the upstream codebase by writing custom components on top of it.
2222

2323
Both approaches created maintenance overhead, slowed upgrades, and delayed delivery of critical features.
2424

25-
CNP-I solves these problems by providing a stable, gRPC-based integration
25+
CNPG-I solves these problems by providing a stable, gRPC-based integration
2626
point for extending {{name.ln}} at key points in a cluster’s lifecycle —such
2727
as backups, recovery, and sub-resource reconciliation— without disrupting the
2828
core project.
2929

30-
CNP-I can extend:
30+
CNPG-I can extend:
3131

3232
- The operator, and/or
3333
- The instance manager running inside PostgreSQL pods.
3434

3535
## Registering a plugin
3636

37-
CNP-I is inspired by the Kubernetes
37+
CNPG-I is inspired by the Kubernetes
3838
[Container Storage Interface (CSI)](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/).
3939
The operator communicates with registered plugins using **gRPC**, following the
4040
[CNPG-I protocol](https://github.com/cloudnative-pg/cnpg-i/blob/main/docs/protocol.md).
@@ -198,7 +198,7 @@ must include this DNS name in its Subject Alternative Names (SAN).
198198

199199
To enable a plugin, configure the `.spec.plugins` section in your `Cluster`
200200
resource. Refer to the {{name.ln}} API Reference for the full
201-
[PluginConfiguration](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-k8s-enterprisedb-io-v1-PluginConfiguration)
201+
[PluginConfiguration](https://cloudnative-pg.io/docs/devel/cloudnative-pg.v1/#pluginconfiguration)
202202
specification.
203203

204204
Example:
@@ -229,10 +229,10 @@ deployed:
229229

230230
## Community plugins
231231

232-
The CNP-I protocol has quickly become a proven and reliable pattern for
232+
The CNPG-I protocol has quickly become a proven and reliable pattern for
233233
extending {{name.ln}} while keeping the core project maintainable.
234234
Over time, the community has built and shared plugins that address real-world
235235
needs and serve as examples for developers.
236236

237-
For a complete and up-to-date list of plugins built with CNP-I, please refer to the
237+
For a complete and up-to-date list of plugins built with CNPG-I, please refer to the
238238
[CNPG-I GitHub page](https://github.com/cloudnative-pg/cnpg-i?tab=readme-ov-file#projects-built-with-cnpg-i).

product_docs/docs/postgres_for_kubernetes/1/connection_pooling.mdx

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,37 @@ replicate similar behavior to the default setup.
219219

220220
## Pod templates
221221

222-
You can take advantage of pod templates specification in the `template`
223-
section of a `Pooler` resource. For details, see
224-
[`PoolerSpec`](pg4k.v1.md#poolerspec) in the API reference.
222+
The `Pooler` resource allows you to customize the underlying pods via the
223+
`template` section. This provides full access to the Kubernetes `PodSpec` for
224+
advanced configurations like scheduling constraints, custom security contexts,
225+
or resource overrides.
225226

226-
Using templates, you can configure pods as you like, including fine control
227-
over affinity and anti-affinity rules for pods and nodes. By default,
228-
containers use images from `docker.enterprisedb.com/k8s/pgbouncer`.
227+
For a complete list of supported fields, see the
228+
[`PoolerSpec`](pg4k.v1.md#poolerspec) API reference.
229229

230-
This example shows `Pooler` specifying \`PodAntiAffinity\`\`:
230+
### Key requirements
231+
232+
- **The `pgbouncer` container name:** When overriding container settings (like
233+
images or resources), the name of the container **must** be set to
234+
`pgbouncer`. The operator looks for this specific name to manage the
235+
PgBouncer process.
236+
237+
- **Mandatory `containers` field:** Since `template` follows the standard
238+
Kubernetes `PodSpec` schema, the `containers` field is mandatory.
239+
240+
- If you aren't modifying container-level settings, you must set it to an empty
241+
array: `containers: []`.
242+
243+
- If the `containers` field is missing, the API server will throw a
244+
`ValidationError`.
245+
246+
### Examples
247+
248+
#### High availability with pod anti-affinity
249+
250+
This configuration uses `podAntiAffinity` to ensure that PgBouncer pods are
251+
distributed across different nodes, preventing a single node failure from
252+
taking down the entire pool.
231253

232254
```yaml
233255
apiVersion: postgresql.k8s.enterprisedb.io/v1
@@ -258,16 +280,10 @@ spec:
258280
topologyKey: "kubernetes.io/hostname"
259281
```
260282

261-
!!!note
262-
Explicitly set `.spec.template.spec.containers` to `[]` when not modified,
263-
as it's a required field for a `PodSpec`. If `.spec.template.spec.containers`
264-
isn't set, the Kubernetes api-server returns the following error when trying to
265-
apply the manifest:`error validating "pooler.yaml": error validating data:
266-
ValidationError(Pooler.spec.template.spec): missing required field
267-
"containers"`
268-
!!!
283+
#### Custom image and resource limits
269284

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

272288
```yaml
273289
apiVersion: postgresql.k8s.enterprisedb.io/v1
@@ -286,6 +302,7 @@ spec:
286302
app: pooler
287303
spec:
288304
containers:
305+
# This name MUST be "pgbouncer"
289306
- name: pgbouncer
290307
image: my-pgbouncer:latest
291308
resources:
@@ -648,9 +665,10 @@ spec:
648665

649666
### Deprecation of Automatic `PodMonitor` Creation
650667

651-
!!!warning "Feature Deprecation Notice"
652-
The `.spec.monitoring.enablePodMonitor` field in the `Pooler` resource is
653-
now deprecated and will be removed in a future version of the operator.
668+
!!!warning Feature Deprecation Notice
669+
The `.spec.monitoring.enablePodMonitor` field in the `Pooler` resource is
670+
now deprecated and will be removed in a future version of the operator.
671+
!!!
654672

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

product_docs/docs/postgres_for_kubernetes/1/default-monitoring.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ data:
173173
, COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_failed_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_failed_wal_start_lsn
174174
, EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
175175
FROM pg_catalog.pg_stat_archiver
176+
predicate_query: |
177+
SELECT NOT pg_catalog.pg_is_in_recovery()
178+
OR pg_catalog.current_setting('archive_mode') = 'always'
176179
metrics:
177180
- archived_count:
178181
usage: "COUNTER"
Lines changed: 3 additions & 0 deletions
Loading

product_docs/docs/postgres_for_kubernetes/1/imagevolume_extensions.mdx

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

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

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

product_docs/docs/postgres_for_kubernetes/1/index.mdx

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: The {{name.ln}} operator is a fork based on CloudNativePG™ which
44
originalFilePath: src/index.md
55
indexCards: none
66
directoryDefaults:
7-
version: "1.28.0"
7+
version: "1.28.1"
88
redirects:
99
- /postgres_for_kubernetes/preview/:splat
1010
navigation:
@@ -144,19 +144,13 @@ users can expect a **"Level V - Auto Pilot"** set of capabilities from the
144144

145145
### Long Term Support
146146

147-
EDB is committed to declaring a Long Term Support (LTS) version of {{name.ln}} annually. 1.25 is the current LTS version. 1.18 was the
148-
first. Each LTS version will
149-
receive maintenance releases and be supported for an additional 12 months beyond
150-
the last community release of CloudNativePG for the same version.
147+
EDB is committed to declaring a Long Term Support (LTS) version of {{name.ln}} annually. 1.28 is the current LTS version. Each LTS version will
148+
receive maintenance releases and be supported for an additional 12 months beyond the standard 6 months for a total of 18 months from the initial release.
151149

152-
For example, the 1.22 release of CloudNativePG reached End-of-Life on July
153-
24, 2024, for the open source community.
154-
Because it was declared an LTS version of {{name.ln}}, it
155-
will be supported for an additional 12 months, until July 24, 2025.
150+
For example, v1.25 of {{name.ln}} was released in December, 2024.
151+
Because it was declared an LTS version, it will be supported for a total of 18 months, until June, 2026.
156152

157-
In addition, customers will always have at least 6 months to move between LTS versions.
158-
For example, the 1.25 LTS version was released on December 23 2024, giving ample
159-
time to users to migrate from the 1.22 LTS ahead of the End-of-life on July 2025.
153+
For a list of currently supported versions and their statuses, see: [Platform Compatibility](https://www.enterprisedb.com/resources/platform-compatibility#edb%20postgres%C2%AE%20ai%20for%20cloudnativepg%E2%84%A2%20cluster).
160154

161155
While we encourage customers to regularly upgrade to the latest version of the operator to take
162156
advantage of new features, having LTS versions allows customers desiring additional stability to stay on the same

product_docs/docs/postgres_for_kubernetes/1/installation_upgrade.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ for this minor release as follows:
7474

7575
```sh
7676
kubectl apply --server-side -f \
77-
https://get.enterprisedb.io/pg4k/pg4k-1.28.0.yaml
77+
https://get.enterprisedb.io/pg4k/pg4k-1.28.1.yaml
7878
```
7979

8080
You can verify that with:
@@ -323,7 +323,7 @@ Your applications will need to reconnect to PostgreSQL after the upgrade.
323323

324324
#### Deprecation of backup metrics and fields in the `Cluster` `.status`
325325

326-
With the transition to a backup and recovery agnostic approach based on CNP-I
326+
With the transition to a backup and recovery agnostic approach based on CNPG-I
327327
plugins in {{name.ln}}, which began with version 1.26.0 for Barman Cloud, we
328328
are starting the deprecation period for the following fields in the `.status`
329329
section of the `Cluster` resource:

product_docs/docs/postgres_for_kubernetes/1/iron-bank.mdx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,20 @@ the image. From there, you can get the instruction to pull the image:
3939

4040
![pulling-ironbank-images](./images/ironbank/pulling-the-image.png)
4141

42-
For example, to pull the EPAS16 operand from Ironbank, you can run:
42+
For example, to pull the EPAS 18 operand from Ironbank, you can run:
4343

4444
```bash
45-
docker pull registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-16:16
45+
docker pull registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-18:18
46+
```
4647

48+
Similarly, for EPAS 16 or 17:
49+
50+
```bash
51+
docker pull registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-17:17
52+
docker pull registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-16:16
4753
```
4854

49-
If you want to pick a more specific tag or use a specific SHA, you need to find it from the [Harbor page](https://registry1.dso.mil/harbor/projects/3/repositories/enterprisedb%2Fedb-postgres-advanced-16/artifacts-tab).
55+
If you want to pick a more specific tag or use a specific SHA, you need to find it from the Harbor page (e.g., [EPAS 18](https://registry1.dso.mil/harbor/projects/3/repositories/enterprisedb%2Fedb-postgres-advanced-18/artifacts-tab), [EPAS 17](https://registry1.dso.mil/harbor/projects/3/repositories/enterprisedb%2Fedb-postgres-advanced-17/artifacts-tab), [EPAS 16](https://registry1.dso.mil/harbor/projects/3/repositories/enterprisedb%2Fedb-postgres-advanced-16/artifacts-tab)).
5056

5157
## Installing the {{name.short}} operator using the Iron Bank image
5258

@@ -99,7 +105,7 @@ Once you have this in place, you can apply your manifest normally with
99105
## Deploying clusters with EPAS operands using IronBank images
100106

101107
To deploy a cluster using the EPAS [operand](/postgres_for_kubernetes/latest/private_edb_registries/#operand-images) you must reference the Ironbank operand image appropriately in the `Cluster` resource YAML.
102-
For example, to deploy a {{name.short}} Cluster using the EPAS 16 operand:
108+
For example, to deploy a {{name.short}} Cluster using the EPAS 18 operand:
103109

104110
1. Create or edit a `Cluster` resource YAML file with the following content:
105111

@@ -109,11 +115,16 @@ For example, to deploy a {{name.short}} Cluster using the EPAS 16 operand:
109115
metadata:
110116
name: cluster-example-full
111117
spec:
112-
imageName: registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-17:17
118+
imageName: registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-18:18
113119
imagePullSecrets:
114120
- name: my_ironbank_secret
115121
```
116122

123+
For EPAS 17 or 16, use the corresponding image:
124+
125+
- EPAS 17: `registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-17:17`
126+
- EPAS 16: `registry1.dso.mil/ironbank/enterprisedb/edb-postgres-advanced-16:16`
127+
117128
2. Apply the YAML:
118129

119130
```

0 commit comments

Comments
 (0)