Cluster API Provider Terraform

Your modules are the provider.

Turn the Terraform and OpenTofu you already trust into Kubernetes clusters, on any platform. No Go controller to write. No second copy of your infrastructure logic to keep in sync.

Try the quick start Read the docs

Stop writing a new provider for every platform.

Cluster API needs an infrastructure provider for every platform you run on, and you already have the Terraform that builds it. CAPTF makes that module the provider.

How it works: write a Terraform or OpenTofu module, package it as an OCI image, CAPTF runs it as Kubernetes Jobs, and Cluster API gets a real cluster.

Why you should reach for CAPTF

From module to cluster in two moves

  1. Package the module you already have on one of our base images, using its example Dockerfile:

    podman build --build-arg ROLE=machine -t registry.example.com/acme/machine:v1.0.0 .
  2. Then point Cluster API at it:

    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
    kind: TerraformMachineTemplate
    metadata:
      name: acme
    spec:
      template:
        spec:
          source:
            image: registry.example.com/acme/machine:v1.0.0

That's the core of it: every machine stamped from that template is now built by your module. Your First Module walks through it end to end.