Charmed PostgreSQL K8s

Channel Revision Published Runs on
latest/stable 20 20 Sep 2022
Ubuntu 20.04
14/stable 73 18 Apr 2023
Ubuntu 22.04
14/candidate 139 19 Sep 2023
14/beta 145 26 Sep 2023
14/edge 148 Yesterday
juju deploy postgresql-k8s --channel 14/stable
Show information


Deploy Charmed PostgreSQL K8s on GKE

Google Kubernetes Engine (GKE) - the most scalable and fully automated Kubernetes service from Google. To access GKE WEB interface, open

Install GKE and Juju tooling

Install juju and gcloud tool using SNAP:

> sudo snap install juju --classic
> sudo snap install kubectl --classic
> sudo snap install google-cloud-cli --classic

Login to Google Account

> gcloud auth login

Go to the following link in your browser:

Enter authorization code: 4/0Absad3s...

You are now logged in as [].

Now you need to associate this installation with GCloud project, using “Project ID” from resource-management:

> gcloud config set project <PROJECT_ID>

Updated property [core/project].

As a last step, install the Debian package google-cloud-sdk-gke-gcloud-auth-plugin using Google manual.

Create new GKE cluster

The following command will start three compute engines on Google Cloud (imagine them as three physical servers in clouds) and deploy K8s cluster there. To simplify the manual, the following command will use high-availability zone europe-west1 and compute engine type n1-standard-4 (which can be adopted for your needs if necessary):

gcloud container clusters create --zone europe-west1-c $USER-$RANDOM --cluster-version 1.25 --machine-type n1-standard-4 --num-nodes=3 --no-enable-autoupgrade

Now, let’s assign our account as an admin of newly created K8s:

kubectl create clusterrolebinding cluster-admin-binding-$USER --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

Bootstrap Juju on GKE

Bootstrap new juju controller on fresh cluster, copying commands one-by-one:

> juju add-k8s gke-jun-9 --storage=standard --client
> juju bootstrap gke-jun-9
> juju add-model welcome-model

At this stage Juju is ready to use GKE, check the list of currently running K8s pods and juju status:

> kubectl get pods -n welcome-model
> juju status

Deploy Charms

> juju deploy postgresql-k8s-bundle --channel 14/edge --trust
> juju status --watch 1s


To list GKE clusters and juju clouds, use:

> gcloud container clusters list

mykola-18187  europe-west1-c  1.25.9-gke.2300  n1-standard-4  1.25.9-gke.2300  3          RUNNING
taurus-7485   europe-west1-c  1.25.9-gke.2300  n1-standard-4  1.25.9-gke.2300  3          RUNNING

Juju can handle multiply clouds simultaneously. The list of clouds with registered credentials on Juju:

> juju clouds
Clouds available on the controller:
Cloud      Regions  Default       Type
gke-jun-9  1        europe-west1  k8s  

Clouds available on the client:
Cloud           Regions  Default       Type  Credentials  Source    Description
gke-jun-9       1        europe-west1  k8s   1            local     A Kubernetes Cluster
localhost       1        localhost     lxd   1            built-in  LXD Container Hypervisor
microk8s        0                      k8s   1            built-in  A local Kubernetes context


Note: always clean no-longer necessary GKE resources as they all could be costly!!!

To clean GKE clusters and juju clouds, use:

> juju destroy-controller gke-jun-9-europe-west1 --yes --destroy-all-models --destroy-storage --force
> juju remove-cloud gke-jun-9

> gcloud container clusters list
> gcloud container clusters delete <cluster_name> --zone europe-west1-c

Revoke the GCloud user credentials:

> gcloud auth revoke

Revoked credentials:

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.

Last updated a month ago. Help improve this document in the forum.