作者:Muvaffak Onuş
今天,我们很自豪地宣布了一个新的开源项目 Terrajet,这是一个代码生成框架,旨在从 Terraform 生成 Crossplane 供应商。
Crossplane 供应商安装自定义资源定义(CRD),允许用户使用 Kubernetes API 创建基础设施。这些 CRD 称为托管资源(managed resources)——Crossplane 资源模型的最低层次构建块。通常,为应用程序提供云基础设施需要云供应商提供不止一个服务。用户可以通过将许多托管资源拼接在一起,并使用复合资源定义(Composite Resource Definitions,XRD)通过单个界面呈现它们来简化这一过程。
为了扩展用户的能力,让 XRD 具有不同种类的管理资源,Crossplane 社区每天都在向供应商添加 CRD。然而,由于云供应商提供了大量的服务,用户可能仍然需要等待对特定资源的支持。
为了解决这个问题,我们构建了Terrajet[1]——一个代码生成框架,可以生成 Crossplane CRD,并设置供应商使用通用 Terraform 控制器。我们是在 Terraform 社区多年来所做的伟大工作的基础上构建的,并将所有与 Terraform 相关的细节抽象出来。基于 Terrajet 的供应商中的托管资源就像其他直接调用云供应商的供应商一样,实现了所有 Crossplane资源模型特性[2]——外部名称、跨资源引用、规范和状态等。
Crossplane 社区已经开始在 Terrajet 的基础上进行建设——我们现在有超过 10 家基于 Jet 的供应商。但三大供应商应该得到特别的接受,因为它们推出了大量的 CRD:
有了所有这些 CRD,Crossplane 现在已经完全覆盖了三家最流行的云供应商提供的所有资源,为 Crossplane 社区提供了使用组合构建更高级的云原生开发者平台所需的工具。
值得注意的是,我们认为 Crossplane 供应商的长期路径是让供应商维护它们,我们正在积极地与 AWS、Azure 和 GCP 合作,并将继续这样做。Terrajet 帮助 Crossplane 今天的方便采用,我们将支持从它迁移到原生供应商。有关更多细节,请参阅供应商策略设计文档[6]。
Terrajet 由 Upbound 孵化并捐赠给 Crossplane 社区。在Upbound 博客[7]上了解更多关于这一激动人心的公告。
[1]Terrajet: https://github.com/crossplane/terrajet
[2]资源模型特性: https://github.com/crossplane/crossplane/blob/master/design/one-pager-managed-resource-api-design.md
[3]763 CRD: https://github.com/crossplane-contrib/provider-jet-aws/releases/tag/v0.4.0-preview
[4]647 CRD: https://github.com/crossplane-contrib/provider-jet-azure/releases/tag/v0.7.0-preview
[5]438 CRD: https://github.com/crossplane-contrib/provider-jet-gcp/releases/tag/v0.2.0-preview
[6]供应商策略设计文档: https://github.com/crossplane/crossplane/blob/master/design/design-doc-provider-strategy.md
[7]Upbound 博客: https://blog.upbound.io/cloud-service-coverage/