Building a Cluster API Infrastructure Provider

Cluster API’s modular architecture allows platform teams to bring Kubernetes lifecycle management to any environment: specialized bare-metal hardware, custom internal hypervisors (Proxmox, bhyve, Firecracker), regional cloud providers, or isolated on-premises data centers. To support new infrastructure, you do not modify Cluster API Core. Instead, you build an Infrastructure Provider: a specialized Kubernetes operator that translates generic CAPI resources into concrete compute, network, and storage primitives. Writing a functional provider is not just about generating Custom Resource Definitions (CRDs)....

October 14, 2026

Provider Architecture and Provider Contracts

Cluster API manages Kubernetes clusters across radically different environments: AWS, Microsoft Azure, Google Cloud, VMware vSphere, OpenStack, Nutanix, Equinix Metal, and local Docker containers. Yet, the core Cluster API controller (capi-controller-manager) contains zero lines of cloud-specific code. It imports no cloud provider SDKs, constructs no EC2 instances, mounts no EBS volumes, and makes no calls to Azure Resource Manager. How does a generic controller coordinate concrete infrastructure across heterogeneous clouds without compiling provider code into its binary?...

October 13, 2026

Running Cluster API in Production

Running Cluster API (CAPI) in production introduces a fundamental architectural shift: the management cluster becomes a mission-critical infrastructure control plane. In single-cluster environments, an operational failure in the control plane affects only the workloads running within that boundary. With Cluster API, a failure in the management cluster decouples your ability to mutate, heal, scale, or secure the entire fleet of downstream workload clusters. While running workload clusters continue executing application pods when the management plane is offline, all lifecycle operations freeze:...

October 12, 2026

Bootstrap Clusters, Management Clusters, and clusterctl move

Cluster API introduces a fundamental chicken-and-egg paradox: If Kubernetes manages Kubernetes clusters declaratively through Custom Resource Definitions and controllers, what cluster runs the controllers that create the very first management cluster? You cannot provision a high-availability, production-grade management cluster in AWS, Azure, or GCP without an active Kubernetes control plane running CAPI controllers (capi-controller-manager, capa-controller-manager, etc.). Yet spinning up that permanent cloud cluster requires an operational API server. Cluster API resolves this paradox through the Bootstrap and Pivot pattern....

October 11, 2026

Cluster Autoscaler and Cluster API

Static infrastructure sizing is inherently inefficient. Over-provisioning compute capacity to survive peak traffic spikes wastes substantial cloud expenditure during idle hours. Conversely, under-provisioning risks capacity starvation: incoming workloads sit stalled in Pending with scheduling errors when user demand surges. In cloud environments, engineers often reach for cloud-native autoscaling mechanisms like AWS Auto Scaling Groups (ASGs) or Azure Virtual Machine Scale Sets (VMSS). However, cloud autoscalers operate strictly on hypervisor-level metrics (e....

October 10, 2026

ClusterClass and Managed Topologies

In raw, unmanaged Cluster API, creating a single workload cluster requires writing and maintaining at least six to eight interdependent Custom Resource manifests: Cluster, InfrastructureCluster (e.g., AWSCluster), KubeadmControlPlane, control-plane AWSMachineTemplate, multiple worker MachineDeployments, worker AWSMachineTemplates, and KubeadmConfigTemplates. Managing this sprawling CRD graph for one cluster is educational. Managing it across fifty or five hundred clusters in production creates a combinatorial explosion of boilerplate YAML. Traditionally, platform engineering teams attempted to tame this complexity by layering external, client-side templating tools (such as Helm, Kustomize, or Jinja scripts) on top of Cluster API....

October 9, 2026

Kubernetes Upgrades with Cluster API

Upgrading a production Kubernetes cluster has historically been one of the most nerve-wracking operations in systems engineering. In procedural environments, upgrades rely on imperative automation scripts (e.g., Ansible or SSH loops) executing sequential package manager invocations: upgrading kubeadm, mutating local package versions for kubelet and kubectl, writing new manifests for static control plane pods, and hoping that intermediate failure states do not corrupt the local operating system or orphan cloud resources....

October 8, 2026

Self-Healing with MachineHealthCheck

When a software process inside a container crashes, the local kubelet restarts the container in seconds. When a node’s physical hardware fails, the kernel deadlocks, or the network interface drops, the problem transcends container orchestration: the underlying compute instance itself must be diagnosed, isolated, and remediated. In unmanaged cloud environments, operators often rely on cloud autoscaling groups (ASGs, MIGs) for instance health. However, cloud health checks only monitor basic hypervisor liveness....

October 7, 2026

Scaling Kubernetes Clusters with Cluster API

Scaling worker nodes in Cluster API (CAPI) appears deceptively simple on the surface: modify a single integer (spec.replicas) on a MachineDeployment. Under the hood, however, scaling physical or virtual infrastructure hosts is fundamentally different from scaling software containers. A container scales in milliseconds by reserving kernel cgroups and namespaces on an existing host. A cluster host scales across multiple asynchronous control loops, orchestrating cloud API calls, virtual machine hypervisors, network interfaces, storage attachments, cloud-init bootstrapping scripts, and kubelet API registrations....

October 6, 2026

Machine, MachineSet, and MachineDeployment: Worker Node Hierarchy Internals

When managing worker nodes in Cluster API (CAPI), you do not interact with virtual machines directly. Cluster API organizes worker infrastructure into a declarative three-tier hierarchy mirroring standard Kubernetes workload controllers: Deployment β†’ MachineDeployment ReplicaSet β†’ MachineSet Pod β†’ Machine Anchor on this central mental model: MachineDeployment = rollout and revision MachineSet = replica count Machine = one host lifecycle While this structural symmetry provides an immediate mental anchor, there is a fundamental difference in operational weight:...

October 5, 2026