1. Introduction
  2. Quick Start
  3. Quick Start Operator
  4. Concepts
  5. Manifesto
  6. 1. Tasks
    1. 1.1. Certificate Management
      1. 1.1.1. Using Custom Certificates
      2. 1.1.2. Generating a Kubeconfig
      3. 1.1.3. Auto Rotate Certificates in KCP
    2. 1.2. Bootstrap
      1. 1.2.1. Kubeadm based bootstrap
        1. 1.2.1.1. Kubelet configuration
      2. 1.2.2. MicroK8s based bootstrap
    3. 1.3. Upgrading management and workload clusters
    4. 1.4. External etcd
    5. 1.5. Using kustomize
    6. 1.6. Upgrading Cluster API components
    7. 1.7. Control plane management
      1. 1.7.1. Kubeadm based control plane management
      2. 1.7.2. MicroK8s based control plane management
    8. 1.8. Updating Machine Infrastructure and Bootstrap Templates
    9. 1.9. Workload bootstrap using GitOps
    10. 1.10. Automated Machine management
      1. 1.10.1. Scaling
      2. 1.10.2. Autoscaling
      3. 1.10.3. Healthchecking
      4. 1.10.4. Machine deletion process
    11. 1.11. Experimental Features
      1. 1.11.1. MachinePools
      2. 1.11.2. MachineSetPreflightChecks
      3. 1.11.3. ClusterResourceSet
      4. 1.11.4. ClusterClass
        1. 1.11.4.1. Writing a ClusterClass
        2. 1.11.4.2. Changing a ClusterClass
        3. 1.11.4.3. Operating a managed Cluster
      5. 1.11.5. Runtime SDK
        1. 1.11.5.1. Implementing Runtime Extensions
        2. 1.11.5.2. Implementing Lifecycle Hook Extensions
        3. 1.11.5.3. Implementing Topology Mutation Hook Extensions
        4. 1.11.5.4. Deploying Runtime Extensions
      6. 1.11.6. Ignition Bootstrap configuration
    12. 1.12. Running multiple providers
    13. 1.13. Verification of Container Images
    14. 1.14. Diagnostics
  7. 2. Security Guidelines
    1. 2.1. Pod Security Standards
  8. 3. clusterctl CLI
    1. 3.1. clusterctl Commands
      1. 3.1.1. init
      2. 3.1.2. generate cluster
      3. 3.1.3. generate provider
      4. 3.1.4. generate yaml
      5. 3.1.5. get kubeconfig
      6. 3.1.6. describe cluster
      7. 3.1.7. move
      8. 3.1.8. upgrade
      9. 3.1.9. delete
      10. 3.1.10. completion
      11. 3.1.11. alpha rollout
      12. 3.1.12. alpha topology plan
      13. 3.1.13. additional commands
    2. 3.2. clusterctl Configuration
    3. 3.3. clusterctl for Developers
    4. 3.4. clusterctl Extensions with Plugins
  9. 4. Developer Guide
    1. 4.1. Developing "core" Cluster API
      1. 4.1.1. Rapid iterative development with Tilt
      2. 4.1.2. Repository Layout
      3. 4.1.3. Controllers
        1. 4.1.3.1. Cluster
        2. 4.1.3.2. ClusterTopology
        3. 4.1.3.3. ClusterResourceSet
        4. 4.1.3.4. MachineDeployment
        5. 4.1.3.5. MachineSet
        6. 4.1.3.6. Machine
        7. 4.1.3.7. MachinePool
        8. 4.1.3.8. MachineHealthCheck
      4. 4.1.4. Logging
      5. 4.1.5. Testing
      6. 4.1.6. Developing E2E tests
      7. 4.1.7. Tuning controllers
      8. 4.1.8. Support multiple instances
    2. 4.2. Developing providers
      1. 4.2.1. Getting started
        1. 4.2.1.1. Naming
        2. 4.2.1.2. Initialize Repo and API types
        3. 4.2.1.3. Implement API types
        4. 4.2.1.4. Webhooks
        5. 4.2.1.5. Controllers and Reconciliation
        6. 4.2.1.6. Configure the provider manifest
        7. 4.2.1.7. Building, Running, Testing
      2. 4.2.2. Provider contracts
        1. 4.2.2.1. InfraCluster
        2. 4.2.2.2. InfraMachine
        3. 4.2.2.3. BootstrapConfig
        4. 4.2.2.4. ControlPlane
        5. 4.2.2.5. clusterctl
        6. 4.2.2.6. IPAM
      3. 4.2.3. Best practices
      4. 4.2.4. Security guidelines
      5. 4.2.5. Version migration
        1. 4.2.5.1. v1.6 to v1.7
        2. 4.2.5.2. v1.7 to v1.8
        3. 4.2.5.3. v1.8 to v1.9
  10. 5. Troubleshooting
  11. 6. Reference
    1. 6.1. API Reference
      1. 6.1.1. Labels and Annotations
      2. 6.1.2. CRD relationships
      3. 6.1.3. Metadata propagation
      4. 6.1.4. Owner References
    2. 6.2. Glossary
    3. 6.3. Provider List
    4. 6.4. Ports
    5. 6.5. Code of Conduct
    6. 6.6. Contributing
    7. 6.7. Code Review in Cluster API
    8. 6.8. Version Support

The Cluster API Book

Provider Implementations

The code in this repository is independent of any specific deployment environment. Provider specific code is being developed in separate repositories, some of which are also sponsored by SIG Cluster Lifecycle. Check provider’s documentation for updated info about which API version they are supporting.

Bootstrap

  • Amazon Elastic Kubernetes Service (EKS)
  • Canonical Kubernetes
  • k0smotron/k0s
  • K3s
  • Kubeadm
  • MicroK8s
  • RKE2
  • Talos

Control Plane

  • Canonical Kubernetes
  • k0smotron/k0s
  • K3s
  • Kamaji
  • Kubeadm
  • MicroK8s
  • Nested
  • RKE2
  • Talos

Infrastructure

  • Akamai (Linode)
  • AWS
  • Azure
  • Azure Stack HCI
  • Bring Your Own Host (BYOH)
  • CloudStack
  • CoxEdge
  • DigitalOcean
  • Equinix Metal (formerly Packet)
  • Google Cloud Platform (GCP)
  • Hetzner
  • Hivelocity
  • Huawei Cloud
  • IBM Cloud
  • IONOS Cloud
  • KubeKey
  • k0smotron RemoteMachine (SSH)
  • KubeVirt
  • MAAS
  • Metal3
  • Microvm
  • Nested
  • Nutanix
  • Oracle Cloud Infrastructure (OCI)
  • OpenNebula
  • OpenStack
  • Outscale
  • Proxmox
  • Sidero
  • Tinkerbell
  • vcluster
  • Virtink
  • VMware Cloud Director
  • vSphere
  • Vultr

IP Address Management (IPAM)

  • In Cluster
  • Nutanix

Addon

  • Fleet
  • Helm

Runtime Extensions

  • Nutanix

API Adopters

Following are the implementations managed by third-parties adopting the standard cluster-api and/or machine-api being developed here.

  • Gardener Machine controller manager
  • Kubermatic machine controller
  • OpenShift Machine API Operator