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:
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 https://console.cloud.google.com/compute/
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:
https://accounts.google.com/o/oauth2/...
Enter authorization code: 4/0Absad3s...
You are now logged in as [your_account@gmail.com].
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
List
To list GKE clusters and juju clouds, use:
> gcloud container clusters list
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
mykola-18187 europe-west1-c 1.25.9-gke.2300 31.210.22.127 n1-standard-4 1.25.9-gke.2300 3 RUNNING
taurus-7485 europe-west1-c 1.25.9-gke.2300 142.142.21.25 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
Cleanup
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 your_account@gmail.com
Revoked credentials:
- your_account@gmail.com
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.