Charmed PostgreSQL K8s
- By Canonical Data Platform
- Databases
Channel | Revision | Published | Runs on |
---|---|---|---|
latest/stable | 20 | 20 Sep 2022 | |
14/stable | 73 | 18 Apr 2023 | |
14/candidate | 139 | 19 Sep 2023 | |
14/beta | 145 | 26 Sep 2023 | |
14/edge | 148 | Yesterday |
juju deploy postgresql-k8s --channel 14/stable
You will need Juju 2.9 to be able to run this command. Learn how to upgrade to Juju 2.9.
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
Scale your Charmed PostgreSQL
This is part of the Charmed PostgreSQL Tutorial. Please refer to this page for more information and the overview of the content.
Adding and Removing units
Charmed PostgreSQL K8s operator uses PostgreSQL Patroni-based cluster for scaling. It provides features such as automatic membership management, fault tolerance, automatic failover, and so on. The charm uses Postgres’s Synchronous replication with Patroni.
! Disclaimer: this tutorial hosts replicas all on the same machine, this should not be done in a production environment. To enable high availability in a production environment, replicas should be hosted on different servers to maintain isolation.
Add cluster members (replicas)
You can add two replicas to your deployed PostgreSQL application by scaling it to three units using:
juju scale-application postgresql-k8s 3
You can now watch the scaling process in live using: juju status --watch 1s
. It usually takes several minutes for new cluster members to be added. You’ll know that all three nodes are in sync when juju status
reports Workload=active
and Agent=idle
:
Model Controller Cloud/Region Version SLA Timestamp
tutorial charm-dev microk8s/localhost 2.9.42 unsupported 12:09:49+01:00
App Version Status Scale Charm Channel Rev Address Exposed Message
postgresql-k8s active 3 postgresql-k8s 14/stable 56 10.152.183.167 no
Unit Workload Agent Address Ports Message
postgresql-k8s/0* active idle 10.1.188.206 Primary
postgresql-k8s/1 active idle 10.1.188.209
postgresql-k8s/2 active idle 10.1.188.210
Remove cluster members (replicas)
Removing a unit from the application, scales the replicas down. Before we scale down the replicas, list all the units with juju status
, here you will see three units postgresql-k8s/0
, postgresql-k8s/1
, and postgresql-k8s/2
. Each of these units hosts a PostgreSQL replica. To scale the application down to two units, enter:
juju scale-application postgresql-k8s 2
You’ll know that the replica was successfully removed when juju status --watch 1s
reports:
Model Controller Cloud/Region Version SLA Timestamp
tutorial charm-dev microk8s/localhost 2.9.42 unsupported 12:10:08+01:00
App Version Status Scale Charm Channel Rev Address Exposed Message
postgresql-k8s active 2 postgresql-k8s 14/stable 56 10.152.183.167 no
Unit Workload Agent Address Ports Message
postgresql-k8s/0* active idle 10.1.188.206 Primary
postgresql-k8s/1 active idle 10.1.188.209
Help us improve this documentation
Most of this documentation can be collaboratively discussed and changed on the respective topic in the doc category of the Charmhub forum. See the documentation guidelines if you’d like to contribute.