Charmed PostgreSQL K8s
- By Canonical Data Platform
- Databases
Channel | Revision | Published | Runs on |
---|---|---|---|
latest/stable | 20 | 20 Sep 2022 | |
14/stable | 193 | 13 Mar 2024 | |
14/candidate | 193 | 31 Jan 2024 | |
14/beta | 211 | 13 Mar 2024 | |
14/edge | 237 | 16 Apr 2024 |
juju deploy postgresql-k8s --channel 14/stable
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:
How to deploy on GKE
Google Kubernetes Engine (GKE) is a highly scalable and fully automated Kubernetes service. To access the GKE Web interface, go to 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
Log in to a Google Account
gcloud auth login
This should open a page in your browser starting with https://accounts.google.com/o/oauth2/...
where you can complete the login.
If successful, the command prompt will show:
You are now logged in as [your_account@gmail.com].
Next, you must associate this installation with GCloud project using “Project ID” from resource-management:
gcloud config set project <PROJECT_ID>
Sample output:
Updated property [core/project].
As a last step, install the Debian package google-cloud-sdk-gke-gcloud-auth-plugin
using this Google guide: Install the gcloud CLI.
Create a new GKE cluster
The following command will start three compute engines on Google Cloud - imagine them as three physical servers in clouds - and deploy a K8s cluster there.
To simplify the guide, the following command will use high-availability zone europe-west1
and compute engine type n1-standard-4
(which can be adapted to 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
Next, assign your account as an admin of the newly created K8s cluster:
kubectl create clusterrolebinding cluster-admin-binding-$USER --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)
Bootstrap Juju on GKE
Bootstrap a new juju controller on fresh cluster by running the following commands:
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’s 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, run:
gcloud container clusters list
Sample output:
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 multiple clouds simultaneously. Check list of clouds with registered credentials on Juju:
juju clouds
Sample output:
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
Warning: Always clean GKE resources that are no longer necessary - they 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
You should see a confirmation output:
Revoked credentials: - your_account@gmail.com