Today we are proud to announce a new open source project, Terrajet, a code generation framework designed to generate Crossplane providers from Terraform.
Missing Resources in Crossplane Providers
Crossplane providers install Custom Resource Definitions (CRD) that allow users to provision infrastructure using Kubernetes API. These CRDs are called managed resources - the lowest level building block of Crossplane Resource Model. Oftentimes, provisioning cloud infrastructure for an application requires more than a single service of the cloud provider. Users are able to simplify this by stitching many managed resources together and presenting them through a single interface using Composite Resource Definitions (XRD).
To expand users’ capability to have XRDs with different kinds of managed resources, the Crossplane community has been adding CRDs to providers everyday. However, due to the vast number of services cloud providers offer, users may still get stuck waiting for support for a specific resource.
Introducing Terrajet
In order to address this problem, we have built Terrajet — a code generation framework that generates Crossplane CRDs and sets up the provider to use its generic Terraform controller. We’re building on top of the great work the Terraform community has done over the years in a way that abstracts all Terraform-related details. The managed resources in Terrajet based providers are just like other providers that call cloud providers directly, implementing all Crossplane Resource Model features - external name, cross-resource references, spec and status and others.
The Crossplane community has already started building on top of Terrajet - we have more than 10 Jet-based providers today. But the big three providers deserve a special callout with high numbers of CRDs they introduce:
Jet AWS Provider - 763 CRDs
Jet Azure Provider - 647 CRDs
Jet GCP Provider - 438 CRDs
With all those CRDs, Crossplane now has full coverage of all the resources available in the three most popular cloud providers, giving the Crossplane community the tools it needs to build more advanced cloud native developer platforms using composition.
It's important to note that we believe the long term path for Crossplane providers is to get them maintained by the vendors and we are actively working with AWS, Azure and GCP on native providers and will continue to do so. Terrajet helps with the adoption of Crossplane today and we will support migration from it to native providers. See the provider strategy design doc here for more details.
Terrajet was incubated by Upbound and donated to the Crossplane community. Read more about this exciting announcement on the Upbound blog.
Learn more about Terrajet
Stay tuned for more exciting content!
If you missed the Upbound Launch Party, you can catch the replay here.
Over at Crossplane, we are posting a three-part technical deep dive so you can really get into the details. You can check out the first post here.
Finally, join Upbound on February 2nd at 10am PST to hear Grant Gumina discuss "Control planes: The missing ingredient to your cloud native developer platform." We'll be posting all of it here and on our social profiles, so keep an eye out!