发布时间:2022-08-19 12:00
随着各大云厂商产品版图的扩大,基础计算设施,中间件服务,大数据/AI 服务,应用运维管理服务等都可以直接被企业和开发者拿来即用。我们注意到也有不少企业基于不同云厂商的服务作为基础来建设自己的企业基础设施中台。为了更高效,统一的管理云服务,IaC 思想近年来盛行,其中 Terrafrom 更是成功得到了几乎所有的云厂商的采纳和支持。以 Terrafrom 模型为核心的云服务 IaC 生态已经形成。然而在 Kubernetes 大行其道的今天,IaC 被冠以更广大的想象空间,Terraform IaC 能力和生态成果如果融入 Kubernetes 世界,我们认为这是一种强强联合。
目前大多数企业基于 Kubernetes 服务来构建 PaaS 平台或基础设施管理平台,统一集成云上和自建基础设施。但除了提供基础设施以外,各种中间件,大数据服务,AI 服务,应用可观测等也是云厂商重点提供的产品。企业平台需要具备创建和销毁更多云服务的能力,这时 Terraform 会进入平台构建者的视线,那么他们还需要在 Kubernetes 之外再做一次对接开发吗?而且同时还需要考虑持续发布,GitOps,灰度发布等需求。显然如果直接 基于 Kubernetes 即可完成对接是更好的选项。
云计算的本质或目标就是 Serverless 化,然而自建的基础设施总是有限的,无缝接入云服务可以开启 “近乎无限”的资源池。同时开发者在架构业务应用时,除了在 Serverless 平台上直接完成业务服务部署以外,还需要直接获得例如消息中间件,数据库等服务。更多的企业会采用对接云厂商的方案,运维管理成本更低。但对于开发者,这最好是透明的,一致的。
一切皆服务,我们需要通过统一的模型来描述云资源、自建基础设施和各种企业应用。Terraform 和 Kubernetes 可以整合并统一为面向开发者的 IaC 规范。带来的好处是同时纳管云资源和容器生态丰富的运维能力,以及面向复杂应用的统一编排
Terraform 开源发行版只能以客户端模式工作,即用户进行完一次交付后无法维持服务状态,且如果遇到网络故障交付失败时需要手动进行重试处理。Kubernetes 为开发者带来了面向终态的 IaC 思想,通过控制器模式实现对目标资源的状态维持,这进一步提升了 Terraform 工具在自动化层面的优势。
KubeVela 是一个现代的软件交付控制平面, 面向开发者提供统一的 API 抽象,使开发者使用相同的 IaC 方式来同时交付普通应用和云服务。KubeVela 向下直接支持 Terraform 的 API 和 Kubernetes API,无需修改可复用所有 Terraform 模块和所有 Kubernetes 对象。通过 KubeVela 你可以非常简单的实现上诉三方面诉求。我们也看到了另外一种模式的 Crossplane 项目,通过定义 Kubernetes 原生 CRD 的形式在对接云服务,使其体验更加原生,KubeVela 也天然支持 Crossplane API。
接下来让我们通过两部分内容,来详细看看 KubeVela 是如何应用 Terraform 来为用户提供统一 IaC 体验的。