Free — no signup required

Crossplane vs. Terraform: Choosing the Right Tool

2 min read

Not a Replacement — A Different Tool for a Different Job

Crossplane and Terraform are often positioned as competitors, but they solve different problems. Understanding the trade-offs is essential for making the right architectural decision.

Dimension Terraform Crossplane
Execution model CLI / pipeline (point-in-time) Control plane (continuous)
Drift detection Manual (terraform plan) or scheduled pipeline Automatic, every ~30 seconds
State storage External state file (S3, Terraform Cloud) Kubernetes etcd
Dependency None (standalone binary) Requires a Kubernetes cluster
Abstraction Modules Compositions + XRDs
Developer self-service Requires pipeline access Native Kubernetes RBAC
Ecosystem maturity Very mature (10+ years) Younger (2019), growing rapidly
Learning curve HCL is approachable Requires Kubernetes expertise

When to Choose Crossplane

Crossplane is the right choice when:

  • You already operate Kubernetes and want a single control plane for both application and infrastructure management.
  • You are building an Internal Developer Platform (IDP) where teams need self-service infrastructure without direct cloud access.
  • You need guaranteed drift correction as a platform-level property, not a pipeline-level discipline.
  • Your organization uses GitOps (ArgoCD, Flux) and wants infrastructure to follow the same reconciliation model as applications.

When to Stick with Terraform

Terraform remains the better choice when:

  • Your team has no Kubernetes expertise and no plans to adopt it.
  • You manage infrastructure that is genuinely bootstrapped once and rarely changes (e.g., the Kubernetes cluster itself — you can't use Crossplane to create the cluster it runs on).
  • You need to manage resources across dozens of cloud providers with a single tool — Terraform's provider ecosystem is significantly larger.
  • You need complex dependency graphs between resources that span multiple providers in a single operation.

The Hybrid Pattern

Many mature platform teams use both: Terraform to bootstrap the Kubernetes cluster and core networking, then Crossplane running inside that cluster to manage everything application teams need. This avoids the bootstrapping paradox (Crossplane can't create the cluster it runs on) while giving application teams the self-service, drift-correcting experience that Crossplane provides.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free