diff --git a/advocacy_docs/kubernetes/cloud_native_postgresql/interactive_demo.mdx b/advocacy_docs/kubernetes/cloud_native_postgresql/interactive_demo.mdx
index 233edcfdba0..49dc2ee7979 100644
--- a/advocacy_docs/kubernetes/cloud_native_postgresql/interactive_demo.mdx
+++ b/advocacy_docs/kubernetes/cloud_native_postgresql/interactive_demo.mdx
@@ -1,6 +1,6 @@
---
title: "Installation, Configuration and Deployment Demo"
-description: "Walk through the process of installing, configuring and deploying the Cloud Native PostgreSQL Operator via a browser-hosted Minikube console"
+description: "Walk through the process of installing, configuring and deploying the Cloud Native PostgreSQL Operator via a browser-hosted Kubernetes environment"
navTitle: Install, Configure, Deploy
product: 'Cloud Native Operator'
platform: ubuntu
@@ -8,10 +8,11 @@ tags:
- postgresql
- cloud-native-postgresql-operator
- kubernetes
- - minikube
+ - k3d
- live-demo
katacodaPanel:
- scenario: minikube
+ scenario: ubuntu:2004
+ initializeCommand: clear; echo -e \\\\033[1mPreparing k3d and kubectl...\\\\n\\\\033[0m; snap install kubectl --classic; wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash; clear; echo -e \\\\033[2mk3d is ready\\ - enjoy Kubernetes\\!\\\\033[0m;
codelanguages: shell, yaml
showInteractiveBadge: true
---
@@ -30,22 +31,34 @@ It will take roughly 5-10 minutes to work through.
-[Minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/) is already installed in this environment; we just need to start the cluster:
+Once [k3d](https://k3d.io/) is ready, we need to start a cluster:
```shell
-minikube start
+k3d cluster create
__OUTPUT__
-* minikube v1.8.1 on Ubuntu 18.04
-* Using the none driver based on user configuration
-* Running on localhost (CPUs=2, Memory=2460MB, Disk=145651MB) ...
-* OS release is Ubuntu 18.04.4 LTS
-* Preparing Kubernetes v1.17.3 on Docker 19.03.6 ...
- - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
-* Launching Kubernetes ...
-* Enabling addons: default-storageclass, storage-provisioner
-* Configuring local host environment ...
-* Waiting for cluster to come online ...
-* Done! kubectl is now configured to use "minikube"
+INFO[0000] Prep: Network
+INFO[0000] Created network 'k3d-k3s-default'
+INFO[0000] Created volume 'k3d-k3s-default-images'
+INFO[0000] Starting new tools node...
+INFO[0000] Pulling image 'docker.io/rancher/k3d-tools:5.1.0'
+INFO[0001] Creating node 'k3d-k3s-default-server-0'
+INFO[0001] Pulling image 'docker.io/rancher/k3s:v1.21.5-k3s2'
+INFO[0002] Starting Node 'k3d-k3s-default-tools'
+INFO[0006] Creating LoadBalancer 'k3d-k3s-default-serverlb'
+INFO[0007] Pulling image 'docker.io/rancher/k3d-proxy:5.1.0'
+INFO[0011] Using the k3d-tools node to gather environment information
+INFO[0011] HostIP: using network gateway...
+INFO[0011] Starting cluster 'k3s-default'
+INFO[0011] Starting servers...
+INFO[0011] Starting Node 'k3d-k3s-default-server-0'
+INFO[0018] Starting agents...
+INFO[0018] Starting helpers...
+INFO[0018] Starting Node 'k3d-k3s-default-serverlb'
+INFO[0024] Injecting '172.19.0.1 host.k3d.internal' into /etc/hosts of all nodes...
+INFO[0024] Injecting records for host.k3d.internal and for 2 network members into CoreDNS configmap...
+INFO[0025] Cluster 'k3s-default' created successfully!
+INFO[0025] You can now use it like this:
+kubectl cluster-info
```
This will create the Kubernetes cluster, and you will be ready to use it.
@@ -54,29 +67,30 @@ Verify that it works with the following command:
```shell
kubectl get nodes
__OUTPUT__
-NAME STATUS ROLES AGE VERSION
-minikube Ready master 66s v1.17.3
+NAME STATUS ROLES AGE VERSION
+k3d-k3s-default-server-0 Ready control-plane,master 16s v1.21.5+k3s2
```
-You will see one node called `minikube`. If the status isn't yet "Ready", wait for a few seconds and run the command above again.
+You will see one node called `k3d-k3s-default-server-0`. If the status isn't yet "Ready", wait for a few seconds and run the command above again.
## Install Cloud Native PostgreSQL
-Now that the Minikube cluster is running, you can proceed with Cloud Native PostgreSQL installation as described in the ["Installation"](installation_upgrade.md) section:
+Now that the Kubernetes cluster is running, you can proceed with Cloud Native PostgreSQL installation as described in the ["Installation and upgrades"](installation_upgrade.md) section:
```shell
-kubectl apply -f https://get.enterprisedb.io/cnp/postgresql-operator-1.9.1.yaml
+kubectl apply -f https://get.enterprisedb.io/cnp/postgresql-operator-1.10.0.yaml
__OUTPUT__
namespace/postgresql-operator-system created
customresourcedefinition.apiextensions.k8s.io/backups.postgresql.k8s.enterprisedb.io created
customresourcedefinition.apiextensions.k8s.io/clusters.postgresql.k8s.enterprisedb.io created
+customresourcedefinition.apiextensions.k8s.io/poolers.postgresql.k8s.enterprisedb.io created
customresourcedefinition.apiextensions.k8s.io/scheduledbackups.postgresql.k8s.enterprisedb.io created
-mutatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-mutating-webhook-configuration created
serviceaccount/postgresql-operator-manager created
clusterrole.rbac.authorization.k8s.io/postgresql-operator-manager created
clusterrolebinding.rbac.authorization.k8s.io/postgresql-operator-manager-rolebinding created
service/postgresql-operator-webhook-service created
deployment.apps/postgresql-operator-controller-manager created
+mutatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-mutating-webhook-configuration created
validatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-validating-webhook-configuration created
```
@@ -166,13 +180,12 @@ metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"postgresql.k8s.enterprisedb.io/v1","kind":"Cluster","metadata":{"annotations":{},"name":"cluster-example","namespace":"default"},"spec":{"instances":3,"primaryUpdateStrategy":"unsupervised","storage":{"size":"1Gi"}}}
- creationTimestamp: "2021-09-30T19:52:07Z"
+ creationTimestamp: "2021-11-12T05:56:37Z"
generation: 1
name: cluster-example
namespace: default
- resourceVersion: "2292"
- selfLink: /apis/postgresql.k8s.enterprisedb.io/v1/namespaces/default/clusters/cluster-example
- uid: af696791-b82a-45a9-a1c2-6e4577128d0e
+ resourceVersion: "2005"
+ uid: 621d46bc-8a3b-4039-a9f3-6f21ab4ef68d
spec:
affinity:
podAntiAffinityType: preferred
@@ -180,10 +193,19 @@ spec:
bootstrap:
initdb:
database: app
+ encoding: UTF8
+ localeCType: C
+ localeCollate: C
owner: app
- imageName: quay.io/enterprisedb/postgresql:14.0
+ enableSuperuserAccess: true
+ imageName: quay.io/enterprisedb/postgresql:14.1
+ imagePullPolicy: IfNotPresent
instances: 3
logLevel: info
+ maxSyncReplicas: 0
+ minSyncReplicas: 0
+ postgresGID: 26
+ postgresUID: 26
postgresql:
parameters:
log_destination: csvlog
@@ -200,15 +222,18 @@ spec:
wal_keep_size: 512MB
primaryUpdateStrategy: unsupervised
resources: {}
+ startDelay: 30
+ stopDelay: 30
storage:
+ resizeInUseVolumes: true
size: 1Gi
status:
certificates:
clientCASecret: cluster-example-ca
expirations:
- cluster-example-ca: 2021-12-29 19:47:07 +0000 UTC
- cluster-example-replication: 2021-12-29 19:47:07 +0000 UTC
- cluster-example-server: 2021-12-29 19:47:07 +0000 UTC
+ cluster-example-ca: 2022-02-10 05:51:37 +0000 UTC
+ cluster-example-replication: 2022-02-10 05:51:37 +0000 UTC
+ cluster-example-server: 2022-02-10 05:51:37 +0000 UTC
replicationTLSSecret: cluster-example-replication
serverAltDNSNames:
- cluster-example-rw
@@ -222,9 +247,11 @@ status:
- cluster-example-ro.default.svc
serverCASecret: cluster-example-ca
serverTLSSecret: cluster-example-server
- cloudNativePostgresqlCommitHash: c88bd8a
+ cloudNativePostgresqlCommitHash: f616a0d
+ cloudNativePostgresqlOperatorHash: 02abbad9215f5118906c0c91d61bfbdb33278939861d2e8ea21978ce48f37421
configMapResourceVersion: {}
currentPrimary: cluster-example-1
+ currentPrimaryTimestamp: "2021-11-12T05:57:15Z"
healthyPVC:
- cluster-example-1
- cluster-example-2
@@ -239,22 +266,25 @@ status:
licenseStatus:
isImplicit: true
isTrial: true
- licenseExpiration: "2021-10-30T19:52:07Z"
+ licenseExpiration: "2021-12-12T05:56:37Z"
licenseStatus: Implicit trial license
repositoryAccess: false
valid: true
phase: Cluster in healthy state
+ poolerIntegrations:
+ pgBouncerIntegration: {}
pvcCount: 3
readService: cluster-example-r
readyInstances: 3
secretsResourceVersion:
- applicationSecretVersion: "884"
- clientCaSecretVersion: "880"
- replicationSecretVersion: "882"
- serverCaSecretVersion: "880"
- serverSecretVersion: "881"
- superuserSecretVersion: "883"
+ applicationSecretVersion: "934"
+ clientCaSecretVersion: "930"
+ replicationSecretVersion: "932"
+ serverCaSecretVersion: "930"
+ serverSecretVersion: "931"
+ superuserSecretVersion: "933"
targetPrimary: cluster-example-1
+ targetPrimaryTimestamp: "2021-11-12T05:56:38Z"
writeService: cluster-example-rw
```
@@ -273,7 +303,7 @@ status:
## Install the kubectl-cnp plugin
-Cloud Native PostgreSQL provides a plugin for kubectl to manage a cluster in Kubernetes, along with a script to install it:
+Cloud Native PostgreSQL provides [a plugin for kubectl](cnp-plugin) to manage a cluster in Kubernetes, along with a script to install it:
```shell
curl -sSfL \
@@ -281,7 +311,7 @@ curl -sSfL \
sudo sh -s -- -b /usr/local/bin
__OUTPUT__
EnterpriseDB/kubectl-cnp info checking GitHub for latest tag
-EnterpriseDB/kubectl-cnp info found version: 1.9.1 for v1.9.1/linux/x86_64
+EnterpriseDB/kubectl-cnp info found version: 1.10.0 for v1.10.0/linux/x86_64
EnterpriseDB/kubectl-cnp info installed /usr/local/bin/kubectl-cnp
```
@@ -293,17 +323,22 @@ __OUTPUT__
Cluster in healthy state
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
Primary instance: cluster-example-1
Instances: 3
Ready instances: 3
+Current Timeline: 1
+Current WAL file: 000000010000000000000005
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 0/5000060 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-2 0/5000060 0/5000060 7013817246676054032 ✗ ✓ ✗ ✗ OK
-cluster-example-3 0/5000060 0/5000060 7013817246676054032 ✗ ✓ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-1 0/5000060 7029558504442904594 ✓ ✗ ✗ ✗ OK
+1.10.0 cluster-example-2 0/5000060 0/5000060 7029558504442904594 ✗ ✓ ✗ ✗ OK
+1.10.0 cluster-example-3 0/5000060 0/5000060 7029558504442904594 ✗ ✓ ✗ ✗ OK
```
!!! Note "There's more"
@@ -326,20 +361,24 @@ Now if we check the status...
kubectl cnp status cluster-example
__OUTPUT__
Failing over Failing over to cluster-example-2
-Switchover in progress
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
-Primary instance: cluster-example-1 (switching to cluster-example-2)
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
+Primary instance: cluster-example-2
Instances: 3
Ready instances: 2
+Current Timeline: 2
+Current WAL file: 000000020000000000000006
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 - - - - - - - - pod not available
-cluster-example-2 0/60010F0 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-3 0/60000A0 0/60000A0 7013817246676054032 ✗ ✗ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-3 0/60000A0 0/60000A0 7029558504442904594 ✗ ✗ ✗ ✗ OK
+45 cluster-example-1 - - - - - - - - pod not available
+1.10.0 cluster-example-2 0/6000F58 7029558504442904594 ✓ ✗ ✗ ✗ OK
```
...the failover process has begun, with the second pod promoted to primary. Once the failed pod has restarted, it will become a replica of the new primary:
@@ -350,17 +389,22 @@ __OUTPUT__
Cluster in healthy state
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
Primary instance: cluster-example-2
Instances: 3
Ready instances: 3
+Current Timeline: 2
+Current WAL file: 000000020000000000000006
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 0/6004E70 0/6004E70 7013817246676054032 ✗ ✓ ✗ ✗ OK
-cluster-example-2 0/6004E70 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-3 0/6004E70 0/6004E70 7013817246676054032 ✗ ✓ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-3 0/60000A0 0/60000A0 7029558504442904594 ✗ ✗ ✗ ✗ OK
+1.10.0 cluster-example-2 0/6004CA0 7029558504442904594 ✓ ✗ ✗ ✗ OK
+1.10.0 cluster-example-1 0/6004CA0 0/6004CA0 7029558504442904594 ✗ ✓ ✗ ✗ OK
```
@@ -368,8 +412,6 @@ cluster-example-3 0/6004E70 0/6004E70 7013817246676054032
This is all it takes to get a PostgreSQL cluster up and running, but of course there's a lot more possible - and certainly much more that is prudent before you should ever deploy in a production environment!
-- Deploying on public cloud platforms: see the [Cloud Setup](cloud_setup/) section.
-
- Design goals and possibilities offered by the Cloud Native PostgreSQL Operator: check out the [Architecture](architecture/) and [Use cases](use_cases/) sections.
- Configuring a secure and reliable system: read through the [Security](security/), [Failure Modes](failure_modes/) and [Backup and Recovery](backup_recovery/) sections.
diff --git a/merge_sources/kubernetes/cloud_native_postgresql/interactive_demo.mdx b/merge_sources/kubernetes/cloud_native_postgresql/interactive_demo.mdx
index 233edcfdba0..49dc2ee7979 100644
--- a/merge_sources/kubernetes/cloud_native_postgresql/interactive_demo.mdx
+++ b/merge_sources/kubernetes/cloud_native_postgresql/interactive_demo.mdx
@@ -1,6 +1,6 @@
---
title: "Installation, Configuration and Deployment Demo"
-description: "Walk through the process of installing, configuring and deploying the Cloud Native PostgreSQL Operator via a browser-hosted Minikube console"
+description: "Walk through the process of installing, configuring and deploying the Cloud Native PostgreSQL Operator via a browser-hosted Kubernetes environment"
navTitle: Install, Configure, Deploy
product: 'Cloud Native Operator'
platform: ubuntu
@@ -8,10 +8,11 @@ tags:
- postgresql
- cloud-native-postgresql-operator
- kubernetes
- - minikube
+ - k3d
- live-demo
katacodaPanel:
- scenario: minikube
+ scenario: ubuntu:2004
+ initializeCommand: clear; echo -e \\\\033[1mPreparing k3d and kubectl...\\\\n\\\\033[0m; snap install kubectl --classic; wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash; clear; echo -e \\\\033[2mk3d is ready\\ - enjoy Kubernetes\\!\\\\033[0m;
codelanguages: shell, yaml
showInteractiveBadge: true
---
@@ -30,22 +31,34 @@ It will take roughly 5-10 minutes to work through.
-[Minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/) is already installed in this environment; we just need to start the cluster:
+Once [k3d](https://k3d.io/) is ready, we need to start a cluster:
```shell
-minikube start
+k3d cluster create
__OUTPUT__
-* minikube v1.8.1 on Ubuntu 18.04
-* Using the none driver based on user configuration
-* Running on localhost (CPUs=2, Memory=2460MB, Disk=145651MB) ...
-* OS release is Ubuntu 18.04.4 LTS
-* Preparing Kubernetes v1.17.3 on Docker 19.03.6 ...
- - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
-* Launching Kubernetes ...
-* Enabling addons: default-storageclass, storage-provisioner
-* Configuring local host environment ...
-* Waiting for cluster to come online ...
-* Done! kubectl is now configured to use "minikube"
+INFO[0000] Prep: Network
+INFO[0000] Created network 'k3d-k3s-default'
+INFO[0000] Created volume 'k3d-k3s-default-images'
+INFO[0000] Starting new tools node...
+INFO[0000] Pulling image 'docker.io/rancher/k3d-tools:5.1.0'
+INFO[0001] Creating node 'k3d-k3s-default-server-0'
+INFO[0001] Pulling image 'docker.io/rancher/k3s:v1.21.5-k3s2'
+INFO[0002] Starting Node 'k3d-k3s-default-tools'
+INFO[0006] Creating LoadBalancer 'k3d-k3s-default-serverlb'
+INFO[0007] Pulling image 'docker.io/rancher/k3d-proxy:5.1.0'
+INFO[0011] Using the k3d-tools node to gather environment information
+INFO[0011] HostIP: using network gateway...
+INFO[0011] Starting cluster 'k3s-default'
+INFO[0011] Starting servers...
+INFO[0011] Starting Node 'k3d-k3s-default-server-0'
+INFO[0018] Starting agents...
+INFO[0018] Starting helpers...
+INFO[0018] Starting Node 'k3d-k3s-default-serverlb'
+INFO[0024] Injecting '172.19.0.1 host.k3d.internal' into /etc/hosts of all nodes...
+INFO[0024] Injecting records for host.k3d.internal and for 2 network members into CoreDNS configmap...
+INFO[0025] Cluster 'k3s-default' created successfully!
+INFO[0025] You can now use it like this:
+kubectl cluster-info
```
This will create the Kubernetes cluster, and you will be ready to use it.
@@ -54,29 +67,30 @@ Verify that it works with the following command:
```shell
kubectl get nodes
__OUTPUT__
-NAME STATUS ROLES AGE VERSION
-minikube Ready master 66s v1.17.3
+NAME STATUS ROLES AGE VERSION
+k3d-k3s-default-server-0 Ready control-plane,master 16s v1.21.5+k3s2
```
-You will see one node called `minikube`. If the status isn't yet "Ready", wait for a few seconds and run the command above again.
+You will see one node called `k3d-k3s-default-server-0`. If the status isn't yet "Ready", wait for a few seconds and run the command above again.
## Install Cloud Native PostgreSQL
-Now that the Minikube cluster is running, you can proceed with Cloud Native PostgreSQL installation as described in the ["Installation"](installation_upgrade.md) section:
+Now that the Kubernetes cluster is running, you can proceed with Cloud Native PostgreSQL installation as described in the ["Installation and upgrades"](installation_upgrade.md) section:
```shell
-kubectl apply -f https://get.enterprisedb.io/cnp/postgresql-operator-1.9.1.yaml
+kubectl apply -f https://get.enterprisedb.io/cnp/postgresql-operator-1.10.0.yaml
__OUTPUT__
namespace/postgresql-operator-system created
customresourcedefinition.apiextensions.k8s.io/backups.postgresql.k8s.enterprisedb.io created
customresourcedefinition.apiextensions.k8s.io/clusters.postgresql.k8s.enterprisedb.io created
+customresourcedefinition.apiextensions.k8s.io/poolers.postgresql.k8s.enterprisedb.io created
customresourcedefinition.apiextensions.k8s.io/scheduledbackups.postgresql.k8s.enterprisedb.io created
-mutatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-mutating-webhook-configuration created
serviceaccount/postgresql-operator-manager created
clusterrole.rbac.authorization.k8s.io/postgresql-operator-manager created
clusterrolebinding.rbac.authorization.k8s.io/postgresql-operator-manager-rolebinding created
service/postgresql-operator-webhook-service created
deployment.apps/postgresql-operator-controller-manager created
+mutatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-mutating-webhook-configuration created
validatingwebhookconfiguration.admissionregistration.k8s.io/postgresql-operator-validating-webhook-configuration created
```
@@ -166,13 +180,12 @@ metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"postgresql.k8s.enterprisedb.io/v1","kind":"Cluster","metadata":{"annotations":{},"name":"cluster-example","namespace":"default"},"spec":{"instances":3,"primaryUpdateStrategy":"unsupervised","storage":{"size":"1Gi"}}}
- creationTimestamp: "2021-09-30T19:52:07Z"
+ creationTimestamp: "2021-11-12T05:56:37Z"
generation: 1
name: cluster-example
namespace: default
- resourceVersion: "2292"
- selfLink: /apis/postgresql.k8s.enterprisedb.io/v1/namespaces/default/clusters/cluster-example
- uid: af696791-b82a-45a9-a1c2-6e4577128d0e
+ resourceVersion: "2005"
+ uid: 621d46bc-8a3b-4039-a9f3-6f21ab4ef68d
spec:
affinity:
podAntiAffinityType: preferred
@@ -180,10 +193,19 @@ spec:
bootstrap:
initdb:
database: app
+ encoding: UTF8
+ localeCType: C
+ localeCollate: C
owner: app
- imageName: quay.io/enterprisedb/postgresql:14.0
+ enableSuperuserAccess: true
+ imageName: quay.io/enterprisedb/postgresql:14.1
+ imagePullPolicy: IfNotPresent
instances: 3
logLevel: info
+ maxSyncReplicas: 0
+ minSyncReplicas: 0
+ postgresGID: 26
+ postgresUID: 26
postgresql:
parameters:
log_destination: csvlog
@@ -200,15 +222,18 @@ spec:
wal_keep_size: 512MB
primaryUpdateStrategy: unsupervised
resources: {}
+ startDelay: 30
+ stopDelay: 30
storage:
+ resizeInUseVolumes: true
size: 1Gi
status:
certificates:
clientCASecret: cluster-example-ca
expirations:
- cluster-example-ca: 2021-12-29 19:47:07 +0000 UTC
- cluster-example-replication: 2021-12-29 19:47:07 +0000 UTC
- cluster-example-server: 2021-12-29 19:47:07 +0000 UTC
+ cluster-example-ca: 2022-02-10 05:51:37 +0000 UTC
+ cluster-example-replication: 2022-02-10 05:51:37 +0000 UTC
+ cluster-example-server: 2022-02-10 05:51:37 +0000 UTC
replicationTLSSecret: cluster-example-replication
serverAltDNSNames:
- cluster-example-rw
@@ -222,9 +247,11 @@ status:
- cluster-example-ro.default.svc
serverCASecret: cluster-example-ca
serverTLSSecret: cluster-example-server
- cloudNativePostgresqlCommitHash: c88bd8a
+ cloudNativePostgresqlCommitHash: f616a0d
+ cloudNativePostgresqlOperatorHash: 02abbad9215f5118906c0c91d61bfbdb33278939861d2e8ea21978ce48f37421
configMapResourceVersion: {}
currentPrimary: cluster-example-1
+ currentPrimaryTimestamp: "2021-11-12T05:57:15Z"
healthyPVC:
- cluster-example-1
- cluster-example-2
@@ -239,22 +266,25 @@ status:
licenseStatus:
isImplicit: true
isTrial: true
- licenseExpiration: "2021-10-30T19:52:07Z"
+ licenseExpiration: "2021-12-12T05:56:37Z"
licenseStatus: Implicit trial license
repositoryAccess: false
valid: true
phase: Cluster in healthy state
+ poolerIntegrations:
+ pgBouncerIntegration: {}
pvcCount: 3
readService: cluster-example-r
readyInstances: 3
secretsResourceVersion:
- applicationSecretVersion: "884"
- clientCaSecretVersion: "880"
- replicationSecretVersion: "882"
- serverCaSecretVersion: "880"
- serverSecretVersion: "881"
- superuserSecretVersion: "883"
+ applicationSecretVersion: "934"
+ clientCaSecretVersion: "930"
+ replicationSecretVersion: "932"
+ serverCaSecretVersion: "930"
+ serverSecretVersion: "931"
+ superuserSecretVersion: "933"
targetPrimary: cluster-example-1
+ targetPrimaryTimestamp: "2021-11-12T05:56:38Z"
writeService: cluster-example-rw
```
@@ -273,7 +303,7 @@ status:
## Install the kubectl-cnp plugin
-Cloud Native PostgreSQL provides a plugin for kubectl to manage a cluster in Kubernetes, along with a script to install it:
+Cloud Native PostgreSQL provides [a plugin for kubectl](cnp-plugin) to manage a cluster in Kubernetes, along with a script to install it:
```shell
curl -sSfL \
@@ -281,7 +311,7 @@ curl -sSfL \
sudo sh -s -- -b /usr/local/bin
__OUTPUT__
EnterpriseDB/kubectl-cnp info checking GitHub for latest tag
-EnterpriseDB/kubectl-cnp info found version: 1.9.1 for v1.9.1/linux/x86_64
+EnterpriseDB/kubectl-cnp info found version: 1.10.0 for v1.10.0/linux/x86_64
EnterpriseDB/kubectl-cnp info installed /usr/local/bin/kubectl-cnp
```
@@ -293,17 +323,22 @@ __OUTPUT__
Cluster in healthy state
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
Primary instance: cluster-example-1
Instances: 3
Ready instances: 3
+Current Timeline: 1
+Current WAL file: 000000010000000000000005
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 0/5000060 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-2 0/5000060 0/5000060 7013817246676054032 ✗ ✓ ✗ ✗ OK
-cluster-example-3 0/5000060 0/5000060 7013817246676054032 ✗ ✓ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-1 0/5000060 7029558504442904594 ✓ ✗ ✗ ✗ OK
+1.10.0 cluster-example-2 0/5000060 0/5000060 7029558504442904594 ✗ ✓ ✗ ✗ OK
+1.10.0 cluster-example-3 0/5000060 0/5000060 7029558504442904594 ✗ ✓ ✗ ✗ OK
```
!!! Note "There's more"
@@ -326,20 +361,24 @@ Now if we check the status...
kubectl cnp status cluster-example
__OUTPUT__
Failing over Failing over to cluster-example-2
-Switchover in progress
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
-Primary instance: cluster-example-1 (switching to cluster-example-2)
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
+Primary instance: cluster-example-2
Instances: 3
Ready instances: 2
+Current Timeline: 2
+Current WAL file: 000000020000000000000006
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 - - - - - - - - pod not available
-cluster-example-2 0/60010F0 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-3 0/60000A0 0/60000A0 7013817246676054032 ✗ ✗ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-3 0/60000A0 0/60000A0 7029558504442904594 ✗ ✗ ✗ ✗ OK
+45 cluster-example-1 - - - - - - - - pod not available
+1.10.0 cluster-example-2 0/6000F58 7029558504442904594 ✓ ✗ ✗ ✗ OK
```
...the failover process has begun, with the second pod promoted to primary. Once the failed pod has restarted, it will become a replica of the new primary:
@@ -350,17 +389,22 @@ __OUTPUT__
Cluster in healthy state
Name: cluster-example
Namespace: default
-PostgreSQL Image: quay.io/enterprisedb/postgresql:14.0
+PostgreSQL Image: quay.io/enterprisedb/postgresql:14.1
Primary instance: cluster-example-2
Instances: 3
Ready instances: 3
+Current Timeline: 2
+Current WAL file: 000000020000000000000006
+
+Continuous Backup status
+Not configured
Instances status
-Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
--------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
-cluster-example-1 0/6004E70 0/6004E70 7013817246676054032 ✗ ✓ ✗ ✗ OK
-cluster-example-2 0/6004E70 7013817246676054032 ✓ ✗ ✗ ✗ OK
-cluster-example-3 0/6004E70 0/6004E70 7013817246676054032 ✗ ✓ ✗ ✗ OK
+Manager Version Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart Status
+--------------- -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- ------
+1.10.0 cluster-example-3 0/60000A0 0/60000A0 7029558504442904594 ✗ ✗ ✗ ✗ OK
+1.10.0 cluster-example-2 0/6004CA0 7029558504442904594 ✓ ✗ ✗ ✗ OK
+1.10.0 cluster-example-1 0/6004CA0 0/6004CA0 7029558504442904594 ✗ ✓ ✗ ✗ OK
```
@@ -368,8 +412,6 @@ cluster-example-3 0/6004E70 0/6004E70 7013817246676054032
This is all it takes to get a PostgreSQL cluster up and running, but of course there's a lot more possible - and certainly much more that is prudent before you should ever deploy in a production environment!
-- Deploying on public cloud platforms: see the [Cloud Setup](cloud_setup/) section.
-
- Design goals and possibilities offered by the Cloud Native PostgreSQL Operator: check out the [Architecture](architecture/) and [Use cases](use_cases/) sections.
- Configuring a secure and reliable system: read through the [Security](security/), [Failure Modes](failure_modes/) and [Backup and Recovery](backup_recovery/) sections.
diff --git a/product_docs/docs/biganimal/release/getting_started/creating_a_cluster/01_cluster_networking.mdx b/product_docs/docs/biganimal/release/getting_started/creating_a_cluster/01_cluster_networking.mdx
index a893a407e74..491d94c8778 100644
--- a/product_docs/docs/biganimal/release/getting_started/creating_a_cluster/01_cluster_networking.mdx
+++ b/product_docs/docs/biganimal/release/getting_started/creating_a_cluster/01_cluster_networking.mdx
@@ -32,7 +32,7 @@ additional IP addresses to the existing load balancer.
## Private cluster load balancing
-When a cluster is created with public network access, an Azure
+When a cluster is created with private network access, an Azure
Standard SKU Load Balancer is created and configured with an IP
address that always routes to the leader of your cluster. Once
assigned, this IP address does not change unless you change the
diff --git a/product_docs/docs/biganimal/release/reference/cli.mdx b/product_docs/docs/biganimal/release/reference/cli.mdx
index fe224155e28..e1f16169559 100644
--- a/product_docs/docs/biganimal/release/reference/cli.mdx
+++ b/product_docs/docs/biganimal/release/reference/cli.mdx
@@ -14,7 +14,7 @@ The CLI is available for Linux, MacOS, and Windows operating systems.
- For Linux operating systems, use the following command to get the latest version of the binary executable:
```
- curl -LO "https://cli.biganimal.com/download/latest/$(uname -s)/$(uname -m)/biganimal"
+ curl -LO "https://cli.biganimal.com/download/$(uname -s)/$(uname -m)/latest/biganimal"
```
- For all operating systems, download the executable binary [here](http://cli.biganimal.com/).
@@ -25,7 +25,7 @@ The CLI is available for Linux, MacOS, and Windows operating systems.
- For Linux operating systems, including Linux running from MacOS platforms:
1. Download the `checksum` file with following command:
```
- curl -L0 "https://cli.biganimal.com/download/latest/$(uname -s)/$(uname -m)/biganimal.sha256"
+ curl -L0 "https://cli.biganimal.com/download/$(uname -s)/$(uname -m)/latest/biganimal.sha256"
```
1. From a shell, validate the binary executable file against the `checksum` file:
```
diff --git a/product_docs/docs/efm/4/efm_pgpool_ha_guide/05_efm_pgbouncer.mdx b/product_docs/docs/efm/4/efm_pgpool_ha_guide/05_efm_pgbouncer.mdx
index 670e91ba782..e4b71dcd2f1 100644
--- a/product_docs/docs/efm/4/efm_pgpool_ha_guide/05_efm_pgbouncer.mdx
+++ b/product_docs/docs/efm/4/efm_pgpool_ha_guide/05_efm_pgbouncer.mdx
@@ -74,20 +74,22 @@ executable by the `efm` user, and should have the following contents:
``` text
- #!/bin/bash
+ #!/bin/bash -x
set -e
- IFS=', ' read -r -a PGB_HOSTS <<< "$3"
+ IFS=', ' read -r -a PGB_HOSTS <<< "$4"
FAILED_PGB_HOST=''
for PGB_HOST in "${PGB_HOSTS[@]}"; do
- echo "redirecting to '$2' on enterprisedb@${PGB_HOST}"
- ssh "enterprisedb@${PGB_HOST}" /usr/edb/pgbouncer1.15/bin/redirect.sh "$2" || FAILED_PGB_HOST="$FAILED_PGB_HOST $PGB_HOST" < /dev/null
+ echo "redirecting to '$2' on enterprisedb@${PGB_HOST}"
+ if [ "$3" == "p" ]; then
+ ssh "enterprisedb@${PGB_HOST}" /usr/edb/pgbouncer1.15/bin/redirect.sh "$2" || FAILED_PGB_HOST="$FAILED_PGB_HOST $PGB_HOST" < /dev/null
+ fi
done
# return exit code to inform EFM agent about failure. The agent would send a failure
# notification accordingly for manual intervention
if [ ! -z "$FAILED_PGB_HOST" ]; then
- echo "Failed to redirect to '$2' on '$FAILED_PGB_HOST'"
- exit 1
+ echo "Failed to redirect to '$2' on '$FAILED_PGB_HOST'"
+ exit 1
fi
```