Skip to content

Commit fc6f18a

Browse files
committed
fix: update links to documentation
Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
1 parent af3f37a commit fc6f18a

22 files changed

Lines changed: 82 additions & 83 deletions

File tree

content/posts/20240228-maximizing-microservice-databases-with-k8s-postgres-cloudnativepg/index.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ development.
191191
As both a co-founder and maintainer of the CloudNativePG project, and a
192192
longtime enthusiast of both PostgreSQL and Kubernetes, I wholeheartedly
193193
advocate for this operator. Technically classified as a
194-
[level 5 Kubernetes Operator](https://cloudnative-pg.io/documentation/current/operator_capability_levels/),
194+
[level 5 Kubernetes Operator](https://cloudnative-pg.io/docs/1.28/operator_capability_levels/),
195195
CloudNativePG excels in managing PostgreSQL clusters, seamlessly handling day 0
196196
through day 2 operations, and is production-ready.
197197

@@ -206,12 +206,12 @@ On the technical front, CloudNativePG distinguishes itself by being exclusively
206206
designed for Kubernetes. It seamlessly extends the Kubernetes controller,
207207
introducing a custom resource called `Cluster` responsible for managing the
208208
Postgres cluster's status. This resource relies on a component called the
209-
[*instance manager*](https://cloudnative-pg.io/documentation/current/instance_manager/)
209+
[*instance manager*](https://cloudnative-pg.io/docs/1.28/instance_manager/)
210210
to exert precise control over the underlying PostgreSQL instances.
211211

212212
A notable aspect is the inclusion of failover management within CloudNativePG,
213213
eliminating the need for external tools like Patroni when providing High Availability.
214-
The decision to bypass statefulsets and [directly manage PVCs](https://cloudnative-pg.io/documentation/current/controller/)
214+
The decision to bypass statefulsets and [directly manage PVCs](https://cloudnative-pg.io/docs/1.28/controller/)
215215
allows for finer control over the Postgres cluster.
216216

217217
CloudNativePG adopts a fully declarative approach, leveraging the Kubernetes
@@ -221,21 +221,21 @@ services, mutual TLS via secrets, affinity control, persistent volumes,
221221
and more.
222222

223223
Out of the box, CloudNativePG offers observability through endpoints for native
224-
[Prometheus exporters](https://cloudnative-pg.io/documentation/current/monitoring/),
225-
as well as [direct log stream in JSON format to stdout](https://cloudnative-pg.io/documentation/current/logging/).
224+
[Prometheus exporters](https://cloudnative-pg.io/docs/1.28/monitoring/),
225+
as well as [direct log stream in JSON format to stdout](https://cloudnative-pg.io/docs/1.28/logging/).
226226

227-
Key features encompass [continuous backup](https://cloudnative-pg.io/documentation/current/backup/)
228-
and [point-in-time recovery](https://cloudnative-pg.io/documentation/current/recovery/),
229-
[rolling updates](https://cloudnative-pg.io/documentation/current/rolling_update/),
230-
[fencing](https://cloudnative-pg.io/documentation/current/fencing/),
231-
[hibernation](https://cloudnative-pg.io/documentation/current/declarative_hibernation/),
232-
along with the ability to replicate across Kubernetes clusters, also known as [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/).
227+
Key features encompass [continuous backup](https://cloudnative-pg.io/docs/1.28/backup/)
228+
and [point-in-time recovery](https://cloudnative-pg.io/docs/1.28/recovery/),
229+
[rolling updates](https://cloudnative-pg.io/docs/1.28/rolling_update/),
230+
[fencing](https://cloudnative-pg.io/docs/1.28/fencing/),
231+
[hibernation](https://cloudnative-pg.io/docs/1.28/declarative_hibernation/),
232+
along with the ability to replicate across Kubernetes clusters, also known as [replica clusters](https://cloudnative-pg.io/docs/1.28/replica_cluster/).
233233

234-
CloudNativePG features a powerful [`kubectl` plugin known as `cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/),
234+
CloudNativePG features a powerful [`kubectl` plugin known as `cnpg`](https://cloudnative-pg.io/docs/1.28/kubectl-plugin/),
235235
serving as the official command-line interface (CLI) for the product. It is
236236
compatible with any supported Kubernetes distribution and can be effortlessly
237237
tested on your laptop using `kind` (Kubernetes in Docker), as outlined in the
238-
[quickstart](https://cloudnative-pg.io/documentation/current/quickstart/).
238+
[quickstart](https://cloudnative-pg.io/docs/1.28/quickstart/).
239239

240240
## The microservice database opportunity
241241

content/posts/20240303-recipe-local-setup/index.md

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ your future CloudNativePG explorations with a fully open source stack._
1919

2020
<!--more-->
2121

22-
_NOTE: this article has been updated on June 5th, 2025 with the most recent
22+
_NOTE: this article has been updated on January 4th, 2026 with the most recent
2323
versions of `kind` and `cloudnative-pg`. You might also be interested in
2424
the [CNPG Playground project]({{< relref "../20240920-cnpg-playground/index.md">}})
2525
that was launched in the meantime._
@@ -53,7 +53,7 @@ kind version
5353
```
5454

5555
On my laptop, as of the time of the last update, the output is
56-
`kind v0.29.0 go1.24.3 darwin/amd64`.
56+
`kind v0.31.0 go1.25.5 darwin/arm64`.
5757

5858
Now, proceed to establish your initial local Kubernetes cluster for
5959
CloudNativePG with:
@@ -66,7 +66,7 @@ Upon execution, you'll observe the following output:
6666

6767
```console
6868
Creating cluster "cnpg" ...
69-
✓ Ensuring node image (kindest/node:v1.33.1) 🖼
69+
✓ Ensuring node image (kindest/node:v1.35.0) 🖼
7070
✓ Preparing nodes 📦
7171
✓ Writing configuration 📜
7272
✓ Starting control-plane 🕹️
@@ -103,14 +103,14 @@ Now that our local Kubernetes playground is set up, let's explore the
103103
installation of CloudNativePG.
104104

105105
To deploy the latest stable version, refer to the
106-
[CloudNativePG documentation for instructions on installing the operator via Kubernetes manifests](https://cloudnative-pg.io/documentation/current/installation_upgrade/#directly-using-the-operator-manifest).
106+
[CloudNativePG documentation for instructions on installing the operator via Kubernetes manifests](https://cloudnative-pg.io/docs/1.28/installation_upgrade/#directly-using-the-operator-manifest).
107107

108-
For instance, to install version 1.26.1, the latest available at the time of
108+
For instance, to install version 1.28.0, the latest available at the time of
109109
writing, use the following command:
110110

111111
```sh
112112
kubectl apply --server-side -f \
113-
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.26/releases/cnpg-1.26.1.yaml
113+
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.28/releases/cnpg-1.28.0.yaml
114114
```
115115

116116
This command creates a `Deployment` resource named `cnpg-controller-manager`
@@ -141,13 +141,13 @@ Feel free to explore different versions or dive into the latest developments!
141141
With CloudNativePG successfully installed in your local cluster, creating your
142142
initial 3-instance PostgreSQL cluster is a breeze.
143143

144-
Let's utilize the basic
145-
[cluster-example](https://cloudnative-pg.io/documentation/current/samples/cluster-example.yaml)
144+
Let's use the basic
145+
[cluster-example](https://cloudnative-pg.io/docs/assets/files/cluster-example-0a961e59ba2e2313c983c3386be1d7e7.yaml)
146146
file provided by CloudNativePG for evaluation purposes. The YAML content is
147147
concise, under 10 lines, and adheres to the *convention over configuration*
148148
paradigm embraced by CloudNativePG. This default configuration should
149149
seamlessly work for most use cases, and all available options are detailed in
150-
the [API reference](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/),
150+
the [API reference](https://cloudnative-pg.io/docs/1.28/cloudnative-pg.v1/),
151151
giving you the flexibility to override any of them.
152152

153153
Here's a snippet of the YAML file:
@@ -169,7 +169,7 @@ using the `kubectl apply` command:
169169

170170
```sh
171171
kubectl apply -f \
172-
https://cloudnative-pg.io/documentation/current/samples/cluster-example.yaml
172+
https://cloudnative-pg.io/docs/assets/files/cluster-example-0a961e59ba2e2313c983c3386be1d7e7.yaml
173173
```
174174

175175
Monitor the progress with `kubectl get pods -w`.
@@ -204,7 +204,7 @@ deployments using the concise `kubectl cnpg` command.
204204

205205
Installation of the plugin offers flexibility through various methods,
206206
including package installations outlined in the
207-
[CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/kubectl-plugin/).
207+
[CloudNativePG documentation](https://cloudnative-pg.io/docs/1.28/kubectl-plugin/).
208208

209209
We strongly endorse the `cnpg` plugin, with one notable advantage being the
210210
inclusion of the `cnpg status` command.
@@ -220,33 +220,32 @@ This command typically yields output similar to:
220220

221221
```console
222222
Cluster Summary
223-
Name default/cluster-example
224-
System ID: 7512473913904742428
225-
PostgreSQL Image: ghcr.io/cloudnative-pg/postgresql:13
226-
Primary instance: cluster-example-1
227-
Primary start time: 2025-06-05 14:35:42 +0000 UTC (uptime 1m27s)
228-
Status: Cluster in healthy state
229-
Instances: 3
230-
Ready instances: 3
231-
Size: 112M
232-
Current Write LSN: 0/5000060 (Timeline: 1 - WAL File: 000000010000000000000005)
233-
234-
Continuous Backup status
235-
Not configured
223+
Name default/cluster-example
224+
System ID: 7591231340975534109
225+
PostgreSQL Image: ghcr.io/cloudnative-pg/postgresql:18.1-system-trixie
226+
Primary instance: cluster-example-1
227+
Primary promotion time: 2026-01-03 20:14:44 +0000 UTC (1m14s)
228+
Status: Cluster in healthy state
229+
Instances: 3
230+
Ready instances: 3
231+
Size: 128M
232+
Current Write LSN: 0/6000060 (Timeline: 1 - WAL File: 000000010000000000000006)
233+
234+
Continuous Backup not configured
236235
237236
Streaming Replication status
238237
Replication Slots Enabled
239238
Name Sent LSN Write LSN Flush LSN Replay LSN Write Lag Flush Lag Replay Lag State Sync State Sync Priority Replication Slot
240239
---- -------- --------- --------- ---------- --------- --------- ---------- ----- ---------- ------------- ----------------
241-
cluster-example-2 0/5000060 0/5000060 0/5000060 0/5000060 00:00:00 00:00:00 00:00:00 streaming async 0 active
242-
cluster-example-3 0/5000060 0/5000060 0/5000060 0/5000060 00:00:00 00:00:00 00:00:00 streaming async 0 active
240+
cluster-example-2 0/6000060 0/6000060 0/6000060 0/6000060 00:00:00 00:00:00 00:00:00 streaming async 0 active
241+
cluster-example-3 0/6000060 0/6000060 0/6000060 0/6000060 00:00:00 00:00:00 00:00:00 streaming async 0 active
243242
244243
Instances status
245244
Name Current LSN Replication role Status QoS Manager Version Node
246245
---- ----------- ---------------- ------ --- --------------- ----
247-
cluster-example-1 0/5000060 Primary OK BestEffort 1.26.1 cnpg-control-plane
248-
cluster-example-2 0/5000060 Standby (async) OK BestEffort 1.26.1 cnpg-control-plane
249-
cluster-example-3 0/5000060 Standby (async) OK BestEffort 1.26.1 cnpg-control-plane
246+
cluster-example-1 0/6000060 Primary OK BestEffort 1.28.0 cnpg-control-plane
247+
cluster-example-2 0/6000060 Standby (async) OK BestEffort 1.28.0 cnpg-control-plane
248+
cluster-example-3 0/6000060 Standby (async) OK BestEffort 1.28.0 cnpg-control-plane
250249
```
251250

252251
This tool becomes indispensable as it provides essential insights into your

content/posts/20240307-recipe-inspection/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ cnpg-default-monitoring 1 14h
5353

5454
Focus on the `cnpg-default-monitoring` ConfigMap, which CloudNativePG installs by
5555
default. This ConfigMap contains built-in metrics for the [embedded Prometheus
56-
exporter](https://cloudnative-pg.io/documentation/current/monitoring/#user-defined-metrics).
56+
exporter](https://cloudnative-pg.io/docs/1.28/monitoring/#user-defined-metrics).
5757
Inspect its content using:
5858

5959
```sh
@@ -85,7 +85,7 @@ Pay attention to the `monitoring` section in the returned JSON object:
8585

8686
For more details on the observability framework available in CloudNativePG,
8787
including creating custom metrics, refer to the
88-
["Monitoring"](https://cloudnative-pg.io/documentation/current/monitoring/)
88+
["Monitoring"](https://cloudnative-pg.io/docs/1.28/monitoring/)
8989
section in the documentation.
9090

9191
## Default Secrets
@@ -426,7 +426,7 @@ single database within a cluster. Rather than consolidating multiple databases
426426
within a single Postgres cluster, the recommendation is to create distinct
427427
clusters, each dedicated to a [microservice database]({{< relref "../20240228-maximizing-microservice-databases-with-k8s-postgres-cloudnativepg/index.md">}}).
428428
Detailed insights into this strategy are available in our
429-
[FAQ section](https://cloudnative-pg.io/documentation/current/faq/).
429+
[FAQ section](https://cloudnative-pg.io/docs/1.28/faq/).
430430

431431
In this framework, the specifics of the database, such as its name and the
432432
owning user (`app`), become less significant. The focal point shifts to the

content/posts/20240312-recipe-superuser/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Upon inspection, it's evident that the default setting for
6060
CloudNativePG in line with the PoLA philosophy. This default configuration
6161
essentially restricts network connections via the `postgres` user, a user
6262
crucial for the operator to coordinate and manage a PostgreSQL server through
63-
the [instance manager](https://cloudnative-pg.io/documentation/current/instance_manager/).
63+
the [instance manager](https://cloudnative-pg.io/docs/1.28/instance_manager/).
6464

6565
To gain insight into the configuration of PostgreSQL Host-Based Authentication,
6666
we can execute the following query:
@@ -95,7 +95,7 @@ The final default rule stipulates that, with a password in place, you can
9595
connect with any user from anywhere to any database, using both TLS and non-TLS
9696
connections. If this default configuration isn't suitable, you have the
9797
flexibility to enhance security by adding a more rigorous rule in the `pg_hba`
98-
file. For additional details, refer to ["The `pg_hba` section"](https://cloudnative-pg.io/documentation/current/postgresql_conf/#the-pg_hba-section).
98+
file. For additional details, refer to ["The `pg_hba` section"](https://cloudnative-pg.io/docs/1.28/postgresql_conf/#the-pg_hba-section).
9999

100100
An added security benefit is that the `postgres` user within the database has a
101101
password set to `NULL`, effectively thwarting any unauthorized authentication

content/posts/20240322-pgadmin4/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ Leveraging the `--mode desktop` option provided a frictionless experience,
129129
bypassing authentication for swift experimentation.
130130

131131
For further insights and detailed instructions, refer to the [CloudNativePG
132-
documentation](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#using-pgadmin4-for-evaluationdemonstration-purposes-only)
132+
documentation](https://cloudnative-pg.io/docs/1.28/kubectl-plugin/#using-pgadmin4-for-evaluationdemonstration-purposes-only)
133133
on the `cnpg` plugin.
134134

135135
As usual, if you found this article informative, feel free to share it within

content/posts/20240327-zero-cutover-migrations/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ The most notable ones are that PostgreSQL doesn’t replicate:
5252
Considering that you generally delimit the migration duration in time, with
5353
exact start and finish dates, the only blocker is the last one. The good news
5454
is that CloudNativePG now covers the first two limitations entirely with the
55-
help of the [`cnpg` plugin](https://cloudnative-pg.io/documentation/current/kubectl-plugin/),
55+
help of the [`cnpg` plugin](https://cloudnative-pg.io/docs/1.28/kubectl-plugin/),
5656
as I will show you in this article.
5757

5858
However, this approach will not work if you use large objects and you must
59-
perform an [offline migration](https://cloudnative-pg.io/documentation/current/database_import/).
59+
perform an [offline migration](https://cloudnative-pg.io/docs/1.28/database_import/).
6060
The rest of this article assumes that limitations don’t apply to your case.
6161

6262
## About near-zero downtime migrations
@@ -210,7 +210,7 @@ going to do now is create a new CloudNativePG cluster in which we:
210210
- Define an external cluster called `rds` pointing to our PostgreSQL database
211211
in RDS using the `postgres` user
212212
- Take advantage of the `schemaOnly` option of the
213-
[microservice database import capability](https://cloudnative-pg.io/documentation/current/database_import/#the-microservice-type)
213+
[microservice database import capability](https://cloudnative-pg.io/docs/1.28/database_import/#the-microservice-type)
214214

215215
First, create the `rds-superuser` secret for the credentials of the `postgres`
216216
user:

content/posts/20240408-volume-scaling-1/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ Start by defining your business goals: Recovery Point Objective (RPO), Recovery
5252
Time Objective (RTO), and the number of transactions per second (TPS) that you
5353
require. Then benchmark PostgreSQL, and only if the results are not good enough
5454
proceed with an active/active distributed solution. Benchmark the
55-
[storage with `fio`](https://cloudnative-pg.io/documentation/current/benchmarking/#fio) and
56-
the [database using `pgbench`](https://cloudnative-pg.io/documentation/current/benchmarking/#pgbench)
55+
[storage with `fio`](https://cloudnative-pg.io/docs/1.28/benchmarking/#fio) and
56+
the [database using `pgbench`](https://cloudnative-pg.io/docs/1.28/benchmarking/#pgbench)
5757
(either with the built-in OLTP-like workload or by writing your custom
5858
queries).
5959

@@ -67,7 +67,7 @@ directly instead of relying on a `Statefulset` resource like most operators
6767
that work with data (another one that followed our approach is
6868
[Strimzi for Kafka](https://github.com/strimzi/strimzi-kafka-operator/blob/main/CHANGELOG.md#0350)).
6969
If you are interested, we explain the reasons behind this choice on the
70-
[“Pod Controller” page from the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/controller/).
70+
[“Pod Controller” page from the CloudNativePG documentation](https://cloudnative-pg.io/docs/1.28/controller/).
7171

7272
Every CloudNativePG instance necessitates a mandatory volume for the PostgreSQL
7373
data, aka `PGDATA`, meticulously configured within the `storage` stanza.
@@ -123,7 +123,7 @@ Internally, CloudNativePG manage the symbolic link to ensure that the
123123
`pg_wal` directory seamlessly points to the appropriate directory within the
124124
WAL volume. In the event of adding a volume for WAL files later on,
125125
CloudNativePG orchestrates a smooth
126-
[rolling update](https://cloudnative-pg.io/documentation/current/rolling_update/#automated-updates-unsupervised)
126+
[rolling update](https://cloudnative-pg.io/docs/1.28/rolling_update/#automated-updates-unsupervised)
127127
process. This involves halting replicas one at a time, transferring WAL files
128128
to the new volume, and updating symbolic links. The process is further refined
129129
by the `primaryUpdateMethod` option, which dictates whether the primary

0 commit comments

Comments
 (0)