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 |
|
|
community | Enables the community addons repository |
|
|
dns | Deploys CoreDNS. It is recommended that this addon is always enabled. |
|
|
dashboard | The standard Kubernetes Dashboard. |
|
|
gpu | Enable support for GPU accelerated workloads using the NVIDIA runtime. |
|
|
ha-cluster | Allows for high availability on clusters with at least three nodes. |
|
|
helm | Installs the Helm 3 package manager for Kubernetes |
|
|
helm3 | Transition addon introducing the Helm 3 package manager |
|
|
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 |
|
|
host-access | Provides a fixed IP for access to the host’s services. |
|
|
ingress | A simple ingress controller for external access. |
|
|
kube-ovn | The feature rich Kube-OVN network fabric. |
|
|
mayastor | Multi-node zero-ops storage option powered by Mayastor |
|
|
minio | Cloud-agnostic S3-compatible object storage. |
|
|
metallb | Deploys the MetalLB Loadbalancer. Note that currently this does not work on macOS, due to network filtering. |
|
|
metrics-server | Adds the Kubernetes Metrics Server for API access to service metrics. |
|
|
prometheus | Deploys the Prometheus Operator. |
|
|
rbac | Enable Role Based Access Control for authorisation. Note that this is incompatible with some other add-ons. |
|
|
registry | Deploy a private image registry and expose it on localhost:32000. |
|
|
storage | DEPRECATED - Replaced by the hostpath-storage addon. |
|
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 |
|
|
argocd | Deploys Argo CD, the declarative, GitOps continuous delivery tool for Kubernetes. |
|
|
cilium | Deploys Cilium to support Kubernetes network policies using eBPF. |
|
|
fluentd | Deploy the Elasticsearch-Fluentd-Kibana logging and monitoring solution. |
|
|
gopaddle-lite | Simple “no-code” platform for Kubernetes developers. |
|
|
inaccel | Simplify FPGA management and application lifecycle with InAccel. |
|
|
istio | Adds the core Istio services (not available on arm64 arch). |
|
|
jaeger | Deploy the Jaeger Operator in the “simplest” configuration. |
|
|
kata | Adds Kata containers support - A secure container runtime with lightweight virtual machines. |
|
|
keda | Deploys KEDA - Kubernetes Event-driven Autoscaling operator. |
|
|
knative | Adds the Knative middleware to your cluster |
|
|
kwasm | Add WebAssembly support to your Kubernetes nodes |
|
|
linkerd | Deploys the linkerd service mesh |
|
|
multus | Add multus for multiple network capability. |
|
|
nfs | Adds NFS-based storage. |
|
|
ondat | A Kubernetes-native persistent storage platform. |
|
|
openebs | Add OpenEBS storage capability. |
|
|
openfaas | OpenFaaS, the popular serverless framework. |
|
|
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. |
|
|
portainer | Container management dashboard (see portainer.io). |
|
|
sosivio | Predictive troubleshooting for Kubernetes |
|
|
traefik | Adds the Traefik Kubernetes Ingress controller. |
|