广告

通过修补Crossplane资源构建平台

  • 浏览(64)
  • 评论(0)
  • 译者:k8s

Crossplane是KubeCon+CloudNativeCon America 2022最多讨论的话题之一。它在主题演讲和演讲中被提及,关于它的讨论随处可见。Crossplane正在全球2000个组织的生产中部署,在KubeCon上,Grupo Boticario、Adobe和Autodesk等公司分享了如何采用Crossplane。

对于那些不熟悉的人来说,Crossplane是一个使用控制平面构建内部云平台的框架。

控制平面驱动的平台

你可能会问,“我为什么要使用控制平面?”让我们从大局开始——每个大公司都有某种内部“云、DevOps、平台”组织。我们称为“平台团队”。他们管理公共云和内部服务的运维和使用。在使用基础设施即代码(IaC)工具实现第一波自动化之后,这些平台团队已经意识到,单纯的IaC方法是不够的,因为他们通常无法解决两个基本问题:

——如何在中心位置管理基础设施和服务,以确保它们得到有效使用,并符合安全和其他标准?

——如何使开发团队畅通无阻并实现不需要深入的基础设施即代码知识的自助服务?

多种方法都试图实现这些目标,并承诺以降低的成本使用“单层玻璃”进行自助服务。但所有的产品都有取舍:它们将平台团队锁定在特定的技术或基础设施供应商中,并且对所提供的抽象层过于固执。

图片

Crossplane驱动的控制平面的各个组件

这里缺少的是一个控制平面。基于控制平面的架构提供了一种定义和管理资源的声明性方法,一种消除配置漂移的持续协调,并为策略实施和权限管理等问题提供了单一控制点。

这让我们回到Crossplane,它是一个开源框架,运行在Kubernetes之上,使用基于控制平面的架构构建平台。让我们看看这是如何实现的。

使用Crossplane构建平台

构建和使用基于Crossplane的平台涉及三个主要步骤:连接到想要管理的资源,将不同的资源组合到团队的自定义API中,最后由开发人员使用这些资源:

图片

使用Crossplane构建平台的三个步骤

连接到云

平台团队的第一步是连接到他们希望在内部提供的云API。使用Crossplane,这涉及创建自定义资源定义(CRD)并运行一个控制器来进行相应的API调用。这些特定的CRD称为托管资源,并绑定到特定的Crossplane provider中。

社区一直在传递一个一致的信息,即provider的质量和覆盖范围对采用Crossplane非常重要。有数百种贡献和开源列表可供选择,但通常不清楚哪些是最高质量的,而且发现最新或更相关的贡献越来越困难。

正因为如此,Upbound创建了Upbound Marketplace,将其作为一站式商店,提供跨平台的所有服务,包括官方供应商和其他列表。这是一个了解项目进展的好地方。市场为用户提供:

——托管Crossplane包的场所。

——为发布到它的包自动生成API文档。

——查找和学习不同的Crossplane扩展以及如何使用它们的简单方法。

——Upbound官方provider:一组由Upbound维护、测试和支持的Crossplane provider。

截至目前,该市场提供1182种云资源供选择。涵盖AWS、GCP和Azure,也涵盖Civo、DigitalOcean和Equinix等较小的云提供商,以及Kubernetes、Helm甚至Terraform和Ansible等其他“特殊”提供商。Upbound发布了第一批官方provider,并将其提供给整个Crossplane社区。

此外,社区继续提供许多provider。我们将继续支持这项工作,如果你想为API生成提供程序,请将Upjet视为生成提供程序的绝佳工具。

通过修补资源构建

有这么多服务可供我们使用,现在是时候进入下一步了:编写。使用Crossplane,你不会向开发人员公开原始API。相反,你提供了一个定制的API,称之为复合资源定义(XRD)。因此,你可以通过提供定制的XPostgreSQLInstance来设置护栏,而不是为开发人员提供原始的PostgreSQLInstance。现在,开发人员只能更改你启用的选项,并且平台团队已经允许;其余部分是预定义的,可以随时使用。

为了实现这个新的API,你需要通过配置一组资源并组合它们来构建。这就是我们所说的修补,你可以将XPostgreSQLInstance作为示例。组合一组资源是非常强大和有趣的(正如YAML那样有趣)。因此,Crossplane社区的下一个重要步骤是通过创建一些补丁来开发新的令人兴奋的API。

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头