作者:KubeVela 社区
2021 年 6 月 22 日,在云原生计算基金会(CNCF)的 TOC 例会上投票决议通过,KubeVela 正式成为 CNCF 官方沙箱项目。透明、开放、开源中立的 KubeVela,未来将持续致力于打造统一、标准、跨云的应用管理和交付体验。
“KubeVela 就是这样一个面向用户的上层平台项目。对于业务开发者来说,KubeVela 简单、易用,它可以让开发者以极低的心智负担和上手成本在 Kubernetes 上定义与部署应用... 但更重要的是,对于平台团队来说,KubeVela 可不是一个简单的 PaaS 或者 Serverless,它是一个能够以 Kubernetes 原生的方式进行任意扩展的 PaaS 内核,平台工程师可以基于它构建出任意的垂直业务系统。”
—张磊,CNCF TOC Member
KubeVela 项目地址:
_https://github.com/oam-dev/kubevela
_
项目介绍
云原生技术正在以 Kubernetes 作为通用抽象层,朝着跨云追求一致的应用交付迈进。Kubernetes 虽然在底层基础结构细节抽象方面表现出色,但带来了额外的复杂性。基于 Kubernetes 打造的各类 PaaS 林立却又互不相通,导致服务应用开发的平台团队,没有一个合适的框架来构建用户友好且高度可扩展的抽象。与此同时,混合云、多云、分布式云这些日益复杂的业务场景中,应用交付也在逐渐变得碎片化。
用 Go 语言开发的应用交付引擎 KubeVela,能帮我们克服以上所有难题。作为 OAM(Open Application Model)在 Kubernetes 上的实现,KubeVela 项目从 oam-kubernetes-runtime 演进至今,发展势头非常迅猛,不仅连续登上 GitHub Go 语言趋势榜首和 HackerNews 首页,更是迅速收获了包括 MasterCard、Springer Nature、第四范式、SILOT、Upbound 等来自世界各地、不同行业的终端用户,甚至还出现了像 Oracle Cloud、Napptive 等基于它构建的商业化产品。就在 2021 年 3 月底,KubeVela 社区宣布包含所有稳定版 API 的 v1.0版本 发布,正式开始向企业级生产可用迈进。
KubeVela 技术架构图
核心思路
对于平台开发人员而言,KubeVela 作为框架,通过执行以下操作来减轻构建以开发人员为中心的平台的烦恼:
- 以开发人员为中心。KubeVela 通过引入 Application 的概念来抽象基础架构级别的原语,从而捕获微服务的完整部署,然后根据应用程序的需求构建操作功能。
- 本地扩展。Application 由模块化的构建块组成,这些构建模块支持 CUELang【1】 和 Helm 【2】作为模板引擎。这使你能够以乐高风格抽象 Kubernetes 的功能,并通过简单的 kubectl apply -f 将它们发布给最终用户。对抽象模板所做的更改将在运行时生效,无需重新编译或重新部署 KubeVela。
- 简单而可靠的抽象机制。与大多数 IaC(基础设施即代码)解决方案不同,KubeVela 中的抽象是用 Kubernetes Control Loop 【3】构建的,所以它们永远不会在集群中留下配置漂移。作为 Kubernetes 自定义资源【4】,KubeVela可以与任何 CI/CD 或 GitOps 工具无缝协作,不需要进行集成工作。
有了 KubeVela,平台构建者终于有了工具支持,可以设计易于使用的抽象,并以高信心和低周转时间将它们交付给终端用户。
对于终端用户(例如应用程序开发人员)来说,这种用 KubeVela 构建的抽象将使他们能够以最少的努力设计并向 Kubernetes 发布应用程序 —他们要做的只是定义一个简单的应用程序,可以轻松地与任何 CI/CD 集成,而不需要管理一些基础设施细节。
更进一步,KubeVela 目前典型的应用场景有很多,比如:
- SasS 软件云端托管
- 面向混合云/分布式云的应用 PaaS
- 面向混合环境的 DevOps 平台,包括多集群/多环境 CD/CD 等
未来展望
为了更好的满足云原生下应用交付的更加快速、多变和复杂等业务需求特性,KubeVela 将遵循以下的 Roadmap 进一步演进:
- 目前 Component 接入需要通过 CUE 来实现对接转换。接下来,我们打算对已有的体系做更好的支持 -- 这包括已有的 Helm Chart、Kustomize 目录、Terraform Module 能够直接接入成为 Component。以 Helm Chart 为例,它的 values.schema.json 将对接成为 properties,输出的资源等同于 helm template 渲染后的结果。
- 添加环境初始化 (Initializer) 的能力,为开发团队提供公共的部署环境,比如集群、系统 Operators & CRDs、公共服务 (Load Balancer, VPC, DB) 等。
- 添加面相应用发布过程的 Workflow 能力,让用户可以定义面向过程的运维命令。所有内置运维操作也将往 Workflow 方向改造,包括 apply resources、灰度升级、流量管理、多集群等。同时也会新增配置差异化、数据传递等新功能。同时 Workflow 能力整体设计是可插拔的,用户可以实现自己的能力(比方说灰度发布)来添加或替换。
- Vela 系统部署上提供 standalone 模式,不需要 K8s 作为运行时底座,可以在单个容器/VM 里面运行起来,适应一些比较复杂的管控部署环境。
- 用户体验这一侧,velacp 项目将去除 mongodb 依赖而转为直接使用 CRD 做存储。添加更多的垂直场景,实现端到端一键交付能力,产出 App Profile 这种可被分享复用的场景制品解决方案。
- 跟 CICD 系统做更好的集成,包括 Github Actions、Jenkins 等,能够让用户实现 git push 就将应用发布出去。
2021 年 5 月 26 日,由阿里云计算有限公司、中国信息通信研究院等 10 余家单位联合发起的《云计算开放应用架构》标准文件在“云原生产业大会”现场发布。该架构以阿里云、微软云联合发起的开源项目“开放应用架构模型(Open Application Model,以下简称 OAM)”为实现基础,旨在为云端应用管理者提供统一的应用描述规范及开放应用程序能力管理框架,以期推动简洁、高效、可控的云原生应用管理与交付方式在更多行业和企业中的大规模落地。
我们可以看到作为 KubeVela API Specification 的 OAM 正在汇聚行业共识,KubeVela 社区目前也在 GitHub 上获得 2.2k+ Star 认可,吸引到 3+ Maintainer、85+ Contributor 共建,以及 SheIn、滴普、谐云和风变科技等众多用户开始运用 KubeVela 在生产环境上。
我们欢迎所有对应用交付感兴趣的开发者一起加入进来!访问官网 kubevela.io,加入社区群组,学习使用 KubeVela。如果您已经在使用 KubeVela,欢迎在社区案例登记 issue(https://github.com/oam-dev/kubevela/issues/1662)留下您的信息,让社区知道您最真实的需求。
KubeVela 将会一如既往地和社区一起前进,让云端应用交付更加简单!
相关链接
【1】 CUELang
https://github.com/cuelang/cue
【2】 Helm
https://helm.sh/
【3】 Kubernetes Control Loop
https://kubernetes.io/docs/concepts/architecture/controller/
【4】Kubernetes 自定义资源
https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
如果你想更好的了解 KubeVela 项目,欢迎搜索钉钉群号 23310022 或直接钉钉扫码加入社区交流群: