Crossplane vs Terraform: Infrastructure-as-Code in 2026
Both provision infrastructure; very different mental models. Pick on operational fit, not feature parity.
How each models infrastructure
Terraform and Crossplane provision the same kinds of infrastructure with very different mental models. Terraform is declarative HCL with a state file and a CLI; Crossplane is Kubernetes CRDs with a reconciliation loop. The model determines the operational fit.
- Terraform model. Declarative HCL files, state file, CLI runs apply; the canonical IaC pattern for a decade.
- Crossplane model. Kubernetes CRDs as infrastructure; reconciliation loop; the cloud is just another K8s resource.
- Operational fit differs. Terraform feels like a build tool; Crossplane feels like a controller; pick the one that matches your team’s operational gravity.
- Both produce the same cloud. The infrastructure is the same; the way you reason about and operate the IaC differs.
When Terraform wins
Terraform wins for heterogeneous targets, teams already deep in Terraform, and complex dependency graphs. The mature module ecosystem and long-tail provider support are unmatched; Crossplane is catching up but not there yet.
- Heterogeneous targets. Cloud plus SaaS providers (Datadog, GitHub, Cloudflare); Terraform’s provider catalog is unmatched.
- Existing Terraform investment. Teams already deep in Terraform; the muscle memory transfers; the migration cost rarely pays.
- Complex dependency graphs. Multi-resource modules; Terraform’s graph engine and HCL ergonomics handle complex compositions.
- Mature module ecosystem. Decade of community modules; long-tail provider support; the path most worn.
When Crossplane wins
Crossplane wins for: Kubernetes-first orgs; infrastructure with reconciliation needs; teams that already operate via GitOps.
Drift detection and self-healing are first-class; Terraform requires extra tooling.
The hybrid posture
Many orgs end up with Terraform for foundational infra (VPCs, IAM) and Crossplane for application-adjacent infra (databases, queues).
Boundary discipline matters: which tool owns which resource type. Document explicitly.
Antipatterns
- Crossplane for one-off infra. Overhead exceeds value.
- Terraform inside Kubernetes pods. Tooling indirection without benefit.
- Both managing the same resource. Conflict; drift.
What to do this week
Three moves. (1) Trial the candidate tool against one workload for two weeks. (2) Compare against your current using the four criteria above. (3) Plan the migration only if the trial shows real wins, not theoretical ones.