Introduction to Cluster API Providers

Introduction to Cluster API Providers

Cluster API Operator has exposed 6 Providers inv1alpha2 apis. Let’s explore the nature of these providers

  • Non Plugable Providers which are not pluggable currently, such as Cluster API Provider.

  • Plugable Providers that have a default implantation in Cluster API, such as Cluster API Bootstrap Provider Kubeadm and Kubeadm Control Plane Provider. But the ecosystem has pluggable options available for BootstrapProviders and ControlPlaneProviders

  • Optional Providers are pluggable and the Cluster API community has started working on new implementations for IPAMProvider and AddOnProvider, but these Providers are not mandatory to initialize a Bootstrap Cluster or to create a Workload Cluster.

🎯 • CoreProvider • Required

CoreProvider is currently a Cluster API project which is responsible for installing CRDs'

  • Cluster

  • MachineDeployment

  • MachineSet

  • MachinePool

  • Machine

  • MachineHealthCheck

  • MachineDrainRule

respective controllers and has an External interface for

  • InfrastructureReference for working with InfraClusters or ManagedControlplanes.

  • ControlPlanceReference for working with Control plane abstractions of Kubernetes Clusters.

which allows it work to with ControlPlaneProvider and InfrastructureProvider to reconcile/manage the overall cluster lifecycle.

🥾 • BootstrapProvider • Required

BootstrapProvider is responsible for managing cluster PKI Certificates if required.

Create and manage Bootstrap Secrets which contain node init script default is kubeadm + cloud-init, useful for microk8s like providers which don’t use kubeadm to run Kubernetes stack on a node.

BoostrapProvider Is also responsible for holding the lock on KCP machines during the initialization process.

☸️ • ControlPlaneProvider • Required

ControlPlaneProvider manages controlplane machines and scale

ControlplaneProvider’s role is to manage the lifecycle for ControlPlane machines and handle scale requirements.

This seems a very simple task in writing here, but believe me, it’s neither simple nor easy.

🖥️ • InfrastructureProvider • Required

InfrastructureProvider translates InfrastructureCluster to cloud infra and the same with InfrastructureMachine to Cloud Machines

InfrastructureProvider interacts and manage

  • InfrastructureCluster to provision Cloud infrastructure e.g., AWS Provider will set up vpc, zones, subnet, routables & ControlPlane Loadbalancer (if required) from spec.

  • InfrastructureMachines to provision Cloud VMs and manage their lifecycle.

A list of CAPI InfrastructureProviders is present here.

🌐 • IPAMProvider • Optional

IPAMProvider is responsible for managing IPPools and allocating IP Addresses to the IPClaims

IPAMProvider is primarily required for non-cloud deployments where IP Address Management for Machines is determined and managed by the user. One such reference implementation is present at Cluster API IPAM Provider In Cluster.

🧩 • AddonProvider • Optional

Cluster API Addon Provider Helm simple workflow showing helm chart download on Workload Cluster

AddonProvider allows to manage add-ons on the management cluster. One such reference implementation using helm charts-based addons is present at Cluster API Addon Provider Helm.

With a brief introduction to all the manageable provider components via Cluster API Operator. We are now all set to see how we can specify these specifications in detail. All of the providers converge to one ProviderSpec to specify provider location version and controller manager arguments, manifest patches, additional deployments and much more.


This concludes the second article, thanks a lot for your time. If you have any questions about the above or Cluster API please feel free to reach out.
Stay tuned for the next article, where we will explore Cluster API Operator API ProviderSpec.