A code generation framework and runtime for Crossplane providers
Go
481
1,558 commits
updated Sep 18, 2026
Upjet is a code generation framework and Kubernetes controller runtime that transforms Terraform providers into Crossplane providers. It generates Kubernetes CRDs, reconciliation controllers, and example manifests while providing runtime libraries for API conversions, Terraform state management, and resource lifecycle operations. It powers the official AWS, Azure, and GCP providers along with 50+ community providers.

Multiple Terraform Execution Modes
Automatic Resource Generation
Cross-Resource References
Management Policies (Crossplane v1.11+)
Advanced Capabilities
Upjet is ideal when:
Consider a native Crossplane provider when:
Upjet bridges the gap between Terraform's vast provider ecosystem and Kubernetes-native infrastructure management. At build time, Upjet reads a Terraform provider's schema and generates everything needed for a Crossplane provider: Go types, Custom Resource Definitions, and reconciliation controllers. At runtime, these controllers use Terraform's resource logic to manage infrastructure, while exposing a pure Kubernetes API to users.

Browse the Upbound Marketplace for a full list of available providers.
| Guide | Description |
|---|---|
| Generating a Provider | Create a new Crossplane provider from scratch |
| Configuring a Resource | External names, references, and resource customization |
| Adding New Resources | Add resources to an existing provider |
| Testing with Uptest | End-to-end testing framework |
| Monitoring | Prometheus metrics for the Upjet runtime |
| Upgrading to v2 | Migration guide from Upjet v1 to v2 |
| Managing CRD Versions | Handle Terraform schema changes across versions |
| Controller Template Variables | Variables available to the managed resource controller setup template |
| Setup Aggregator Template Variables | Variables available to the controller setup aggregator template |
| Terraformed Template Variables | Variables available to the managed resource terraformed template |
| Main Template Variables | Variables available to the provider family main program template |
We welcome contributions! Please see our Contributing Guide for details.
Upjet originates from the Terrajet project. See the original design document.
Upjet is under the Apache 2.0 license with notice.
(top 30 of 48)
Go
98.4%
Go Template
1.3%
A code generation framework and runtime for Crossplane providers
Go
481
1,558 commits
updated Sep 18, 2026
Upjet is a code generation framework and Kubernetes controller runtime that transforms Terraform providers into Crossplane providers. It generates Kubernetes CRDs, reconciliation controllers, and example manifests while providing runtime libraries for API conversions, Terraform state management, and resource lifecycle operations. It powers the official AWS, Azure, and GCP providers along with 50+ community providers.

Multiple Terraform Execution Modes
Automatic Resource Generation
Cross-Resource References
Management Policies (Crossplane v1.11+)
Advanced Capabilities
Upjet is ideal when:
Consider a native Crossplane provider when:
Upjet bridges the gap between Terraform's vast provider ecosystem and Kubernetes-native infrastructure management. At build time, Upjet reads a Terraform provider's schema and generates everything needed for a Crossplane provider: Go types, Custom Resource Definitions, and reconciliation controllers. At runtime, these controllers use Terraform's resource logic to manage infrastructure, while exposing a pure Kubernetes API to users.

Browse the Upbound Marketplace for a full list of available providers.
| Guide | Description |
|---|---|
| Generating a Provider | Create a new Crossplane provider from scratch |
| Configuring a Resource | External names, references, and resource customization |
| Adding New Resources | Add resources to an existing provider |
| Testing with Uptest | End-to-end testing framework |
| Monitoring | Prometheus metrics for the Upjet runtime |
| Upgrading to v2 | Migration guide from Upjet v1 to v2 |
| Managing CRD Versions | Handle Terraform schema changes across versions |
| Controller Template Variables | Variables available to the managed resource controller setup template |
| Setup Aggregator Template Variables | Variables available to the controller setup aggregator template |
| Terraformed Template Variables | Variables available to the managed resource terraformed template |
| Main Template Variables | Variables available to the provider family main program template |
We welcome contributions! Please see our Contributing Guide for details.
Upjet originates from the Terrajet project. See the original design document.
Upjet is under the Apache 2.0 license with notice.
(top 30 of 48)
Go
98.4%
Go Template
1.3%