MicroK8s Addons

To be as lightweight as possible, MicroK8s only installs the basics of a usable
Kubernetes install:

  • api-server
  • controller-manager
  • scheduler
  • kubelet
  • cni
  • kube-proxy

While this does deliver a pure Kubernetes experience with the smallest resource footprint possible, there are situations where you may require additional services. MicroK8s caters for this with the concept of “Addons” - extra services which can easily be added to MicroK8s. These addons can be enabled and disabled at any time, and most are pre-configured to ‘just work’ without any further set up.

For example, to enable the CoreDNS addon:

microk8s enable dns

These add-ons can be disabled at anytime using the disable command:

microk8s disable dns

… and you can check the list of available and installed addons at any time by running:

microk8s status

Note: Before installing add-ons which install extra client tools (e.g. Helm), be sure that the current user is part of the microk8s group, to avoid potential permission problems.

Addon Repositories

Starting from the v1.24 release, addons are organized in repositories. Repositories are essentially git projects in which users can place the addons they are interested in. To assist in creating a such repositories, the MicroK8s team maintains a template repository on github that can be forked to start a new addons collection. Although the template repository includes a HACKING.md guide with instructions on building a Python based demo addon, addons can be implemented in any programming language, even bash.

Addon repositories are found under /var/snap/microk8s/common/addons and can be edited in place. To ease the process of adding, removing and updating such repositories the microk8s addons repo command can be used. A repository under https://github.com/my-org/awesome-repo can be added on a MicroK8s cluster with:

microk8s addons repo add myrepo https://github.com/my-org/awesome-repo

An optional --reference flag can be used to point to a specific branch or tag inside the git repository.

The myrepo in the above example is the repository identifier. This identifier is used to differentiate addons with the same name found on separate addon repositories.

Removing and updating a repository is achieved with the microk8s addons repo remove and microk8s addons repo update commands respectively.

By default the MicroK8s ships with two repositories:

  • core, with essential addons maintained by the MicroK8s team, and

  • community, with community maintained addons.

Note: On fresh installs only the core repository is enabled by default. The community repository can be easily added at any time with: microk8s enable community.

Current MicroK8s Addons

Addons in the Core Repository

The addons maintained and officially supported by the MicroK8s team at Canonical are:

name description version compatibility
cert-manager Certificate management for Kubernetes clusters 1.25 amd64 arm64 power classic strict
community Enables the community addons repository 1.24 amd64 arm64 power s390 classic strict
dns Deploys CoreDNS. It is recommended that this addon is always enabled. 1.12 amd64 arm64 power s390 classic strict
dashboard The standard Kubernetes Dashboard. 1.12 amd64 arm64 power s390 classic strict
gpu Enable support for GPU accelerated workloads using the NVIDIA runtime. 1.12 amd64 classic
ha-cluster Allows for high availability on clusters with at least three nodes. 1.19 amd64 arm64 power s390 classic strict
helm Installs the Helm 3 package manager for Kubernetes 1.15 amd64 arm64 power s390 classic strict
helm3 Transition addon introducing the Helm 3 package manager 1.18 amd64 arm64 power s390 classic strict
hostpath-storage Create a default storage class which allocates storage from a host directory. Note!: The add-on uses simple filesystem storage local to the node where it was added. Not suitable for a production environment or clusters 1.12 amd64 arm64 power s390 classic strict
host-access Provides a fixed IP for access to the host’s services. 1.19 amd64 arm64 power s390 classic strict
ingress A simple ingress controller for external access. 1.12 amd64 arm64 power s390 classic strict
kube-ovn The feature rich Kube-OVN network fabric. 1.25 amd64 arm64 classic
mayastor Multi-node zero-ops storage option powered by Mayastor 1.24 amd64 arm64 classic
minio Cloud-agnostic S3-compatible object storage. 1.26 amd64 arm64 power s390 classic strict
metallb Deploys the MetalLB Loadbalancer. Note that currently this does not work on macOS, due to network filtering. 1.17 amd64 arm64 power s390 classic strict
metrics-server Adds the Kubernetes Metrics Server for API access to service metrics. 1.12 amd64 arm64 power s390 classic strict
prometheus Deploys the Prometheus Operator. 1.14 amd64 arm64 classic strict
rbac Enable Role Based Access Control for authorisation. Note that this is incompatible with some other add-ons. 1.14 amd64 arm64 power s390 classic strict
registry Deploy a private image registry and expose it on localhost:32000. 1.12 amd64 arm64 power s390 classic strict
storage DEPRECATED - Replaced by the hostpath-storage addon. 1.12 amd64 arm64 power s390 classic strict

Addons in the Community Repository

This collection of third party and community maintained addons can be easily enabled with:


microk8s enable community

Here is what is currently included:

name description version compatibility
ambassador Ambassador is an API and Ingress controller 1.19 <1.24 amd64 classic strict
argocd Deploys Argo CD, the declarative, GitOps continuous delivery tool for Kubernetes. 1.24 amd64 classic
cilium Deploys Cilium to support Kubernetes network policies using eBPF. 1.15 amd64 classic strict
fluentd Deploy the Elasticsearch-Fluentd-Kibana logging and monitoring solution. 1.13 amd64 classic
gopaddle-lite Simple “no-code” platform for Kubernetes developers. 1.26 amd64 classic
inaccel Simplify FPGA management and application lifecycle with InAccel. 1.24 amd64 classic strict
istio Adds the core Istio services (not available on arm64 arch). 1.12 amd64 classic strict
jaeger Deploy the Jaeger Operator in the “simplest” configuration. 1.13 amd64 arm64 classic strict
kata Adds Kata containers support - A secure container runtime with lightweight virtual machines. 1.22 amd64 classic
keda Deploys KEDA - Kubernetes Event-driven Autoscaling operator. 1.20 amd64 classic strict
knative Adds the Knative middleware to your cluster 1.15 amd64 arm64 power s390 classic strict
kwasm Add WebAssembly support to your Kubernetes nodes 1.26 amd64 arm64 classic strict
linkerd Deploys the linkerd service mesh 1.19 amd64 arm64 classic
multus Add multus for multiple network capability. 1.19 amd64 arm64 classic
nfs Adds NFS-based storage. 1.25 amd64 classic
ondat A Kubernetes-native persistent storage platform. 1.26 amd64 classic
openebs Add OpenEBS storage capability. 1.21 amd64 arm64 classic strict
openfaas OpenFaaS, the popular serverless framework. 1.21 amd64 classic strict
osm-edge Open Service Mesh Edge (OSM-Edge) fork from Open Service Mesh is a lightweight, extensible, Cloud Native service mesh built for Edge computing. 1.25 amd64 arm64 classic strict
portainer Container management dashboard (see portainer.io). 1.20 amd64 arm64 classic strict
sosivio Predictive troubleshooting for Kubernetes 1.26 amd64 classic strict
traefik Adds the Traefik Kubernetes Ingress controller. 1.20 amd64 arm64 classic strict

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