How to deploy on Canonical Kubernetes

Canonical Kubernetes is a Kubernetes service built on Ubuntu and optimized for most major public clouds.

The following instructions are a summarized version of the steps for installing Canonical K8s. For more thorough instructions and details, see the official Canonical Kubernetes documentation: Install Canonical Kubernetes from a snap.

Prerequisites

This guide assumes you have:

  • A physical or virtual machine running Ubuntu 22.04+

  • Juju 3 (3.6+ is recommended)

Install Canonical Kubernetes

Install, bootstrap, and check the status of Canonical K8s:

sudo snap install k8s --edge --classic
sudo k8s bootstrap
sudo k8s status --wait-ready

Once Canonical K8s is up and running, enable local storage (or any another persistent volume provider, to be used by Juju Storage later):

sudo k8s enable local-storage
sudo k8s status --wait-ready

(Optional) Install the kubectl tool and dump the K8s config:

sudo snap install kubectl --classic
mkdir ~/.kube
sudo k8s config > ~/.kube/config
kubectl get namespaces # to test the credentials

Bootstrap a controller

Bootstrap the first Juju controller in K8s:

juju add-k8s ck8s --client --context-name="k8s"
juju bootstrap ck8s

Deploy Charmed PostgreSQL K8s

juju add-model postgresql
juju deploy postgresql-k8s --channel 14/stable --trust

follow the deployment progress using:

juju status --watch 1s

Example output:

Model       Controller  Cloud/Region  Version  SLA          Timestamp
postgresql  ck8s        ck8s          3.6-rc1  unsupported  17:25:11+01:00

App             Version   Status  Scale  Charm           Channel     Rev  Address         Exposed  Message
postgresql-k8s  14.12     active      1  postgresql-k8s  14/stable   381  10.152.183.30   no       

Unit               Workload  Agent  Address    Ports  Message
postgresql-k8s/0*  active    idle   10.1.0.16         Primary