系统架构
KubeVela 的整体架构如下所示:
KubeVela 是一个控制平面系统
KubeVela 本身是一个的应用交付与管理控制平面,它架在 Kubernetes 集群、云平台等基础设施之上,通过开放应用模型来对组件、云服务、运维能力、交付工作流进行统一的编排和交付。KubeVela 这种与基础设施本身完全解耦的设计,很容易就能帮助你面向混合云/多云/多集群基础设施进行应用交付与管理。
而为了能够同任何 CI 流水线或者 GitOps 工具无缝集成,KubeVela 的 API(即开放应用模型)被设计为是声明式、完全以应用为中心的,它包括:
- 帮助用户定义应用交付计划的
Application
对象 - 帮助平台管理员通过 CUE 语言定义平台能力和抽象的
X-Definition
对象- 比如
ComponentDefinition
、TraitDefinition
等
- 比如
在具体实现上,KubeVela 依赖一个独立的 Kubernetes 集群来运行。这其实是一个“有意为之”的设计:云原生社区中大量的实践已经证明“构建一个科学的、健壮的控制平面系统”,正是 Kubernetes 项目最擅长的工作。所以,依赖 Kubernetes 作为控制平面集群这个选择,虽然会增加一定的部署难度,却能够让我们以最原生的方式为大规模应用交付带来至关重要的“确定性”、“收敛性”和“自动化能力”。
具体来说,KubeVela 本身主要由如下几个部分组成:
- 核心控制器 为整个系统提供核心控制逻辑,完成诸如编排应用和工作流、修订版本快照、垃圾回收等等基础逻辑
- 模块化能力控制器 负责对 X-Definitions 对象进行注册和管理。
- 插件控制器 负责注册和管理 KubeVela 运行所需要的第三方插件,比如 Flux、Terraform 组件等等。
运行时基础设施
运行时基础设施是应用实际运行的地方。KubeVela 本身是完全与这些基础设施无关的,因此它允许你面向任何环境(包括 Kubernetes 环境,也包括非 Kubernetes 环境比如云平台和边缘设备等)去交付和管理任何类型的应用。
KubeVela 是可编程的
现实世界中的应用交付,往往是一个比较复杂的过程。哪怕是一个比较通用的交付流程,也会因为场景、环境、用户甚至团队的不同而千差万别。所以 KubeVela 从第一天起就采用了一种“可编程”式的方法来实现它的交付模型,这使得 KubeVela 可以以前所未有的灵活度适配到你的应用交付场景中。
如果要详细学习 KubeVela 的可编程文档,欢迎查看文档网站中 管理员手册 部分。