Kubernetes Cluster API Provider Incus

End to End Tests End to End Tests [Conformance] Unit Tests Deploy GitHub Pages

Kubernetes-native declarative infrastructure for Incus, Canonical LXD and Canonical MicroCloud.

What is the Cluster API Provider Incus

Cluster API is a Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters.

cluster-api-provider-incus (CAPN) is an Infrastructure Provider for Cluster API, which enables deploying clusters on infrastructure operated by Incus, Canonical LXD and Canonical MicroCloud.

The provider can be used in single-node development environments for evaluation and testing, but also work with multi-node clusters to deploy and manage production Kubernetes clusters.

Documentation

Please refer to our book for in-depth documentation.

Quick Start

See Quick Start to launch a cluster on a single-node development environment.

Features

Project Roadmap

v0.5.0

Rough steps for version v0.5.0:

  • Private initial alpha testing.
  • Cloud provider node patch to link Machines with workload cluster Nodes.
  • Test with both Incus and Canonical LXD.
  • Start cluster-api-provider-incus book with quick start guide, cluster templates, API reference.
  • Publish v0.1.0 release to get initial user feedback.
  • Add e2e tests using the cluster-api testing framework.
  • Add PR blocking CI pipelines.
  • Publish v0.2.0 release with v1alpha2 APIs.
  • Add e2e tests for cluster upgrades.
  • Explore clusters with ClusterTopology=true (clusterclass), also allows us to run all existing ClusterAPI e2e tests like Autoscaler, etc.
  • Write developer guide.
  • Support unprivileged containers.
  • Extend e2e suite with tests for all cluster-template types (kvm, unprivileged containers, kube-vip, ovn)
  • Gather initial user feedback.
  • Add cluster-templates for 3rd party providers, e.g. Canonical Kubernetes.
  • Write documentation with common troubleshooting steps.
  • Write documentation with common cluster deployment scenarios.

$Future

  • Improve API validations and possibly API conformance tests.
  • Add CI to build and push kubeadm and haproxy images to the default simplestreams server.
  • Decide on project OWNERSHIP and testing infrastructure (part of LXC org).
  • Split cloud provider node patch to external cloud-provider-incus project.
  • Refactor internal/incus package and improve consistency and log levels across the code.
  • Add to default list of providers supported by ClusterAPI.

Getting involved and contributing

The cluster-api-provider-incus project would love your suggestions, contributions and help! The maintainers can be contacted at any time to learn mode about how to get involved.

Remember that there are numerous effective ways to contribute to the project: raise a pull request to fix a bug, improve test coverage, improve existing documentation or even participate in GitHub issues. We want your help!

Please refer to the developer guide in order to get started with setting up a local environment for development and testing.