Deploy MicroK8s clusters using Juju

Introduction to Juju

Juju is an application lifecycle management operator. It is used to seemlessly and efficiently deploy, manage and operate software at scale, across both public (AWS, Azure, GCP) and private (OpenStack, VMware) clouds.

Deploy MicroK8s with Juju

The MicroK8s charm extends the MicroK8s zero-ops paradigm to cluster management, by reducing the friction of getting started and operating a MicroK8s cluster in any cloud.

Simply bootstrap a Juju controller in your cloud, and then deploy a 3-node MicroK8s cluster with:

juju add-model microk8s

juju deploy microk8s -n 3

Wait for a couple of minutes, and your 3-node MicroK8s cluster will be ready to use!

Scaling up the cluster is as simple as adding more units:

juju add-unit microk8s -n 2

After the cluster is deployed, retrieve the kubeconfig and start playing with your cluster:

juju run-action microk8s/leader kubeconfig

juju scp microk8s/leader:config ~/.kube/config

kubectl get node


The MicroK8s charm accepts a number of configuration options to manage the cluster. This includes options for addons to enable, as well as important configurations for containerd and other services. The complete list of options is documented in CharmHub.

For example:

juju config microk8s addons='dns storage ingress gpu rbac'

Comparison with Charmed Kubernetes

Charmed Kubernetes is the primary production-grade solution for deploying Kubernetes clusters with Juju. It integrates natively with all supported clouds (AWS, Azure, GCP, VSphere, OpenStack), supports multiple CNIs (Calico, Flannel, Tigera Secure EE), integrates with logging and monitoring solutions, etc.

The MicroK8s charm does not aim to compete with Charmed Kubernetes. It is merely a solution for deploying a lightweight Kubernetes cluster on edge and constrained environments.


If you encounter any problems, feel free to reach out at the #microk8s channel in the Kubernetes Slack, or file an issue in the GitHub repository.