Revise architecture zh (#265)

Co-authored-by: 段少 <duanwei.duan@alibaba-inc.com>
This commit is contained in:
Wei (段少) 2021-09-13 19:41:17 +08:00 committed by GitHub
parent 2adfb4d10a
commit eecc8f5625
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 77 deletions

View File

@ -15,7 +15,7 @@ It is based on Kubernetes CRDs to natively fit into the Kubernetes ecosystem.
The APIs can be categorized for two purposes:
- For **platform users** to compose final application manifest to deploy.
- For **end users** to compose final application manifest to deploy.
- Usually this contains only user-concerned config and hides infrastructure details.
- Users will normally write the manifest in yaml format.
- This currently includes Application only. But we may add more user-facing APIs, e.g. ApplicationSet to define multiple Applications.
@ -60,5 +60,5 @@ KubeVela itself does not run on the execution infrastructures, but manage them i
Here are some recommended next steps:
- Learn KubeVela's user guide to know how to deploy component, let's start from [helm component](../end-user/components/helm).
- Learn KubeVela's Application to know the basics of how to building App Delivery, let's start from [Application](./application).
- Learn KubeVela's admin guide to learn more about [the OAM model](../platform-engineers/oam/oam-model).

View File

@ -104,7 +104,7 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/mast
2. Install KubeVela
```shell script
helm install --create-namespace -n vela-system kubevela kubevela/vela-core
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --wait
```
You can refer to [advanced installation guide](./platform-engineers/advanced-install) for more custom ways.

View File

@ -17,7 +17,7 @@ helm install cert-manager jetstack/cert-manager --namespace cert-manager --versi
Install kubevela with enabled certmanager:
```shell script
helm install --create-namespace -n vela-system --set admissionWebhooks.certManager.enabled=true kubevela kubevela/vela-core
helm install --create-namespace -n vela-system --set admissionWebhooks.certManager.enabled=true kubevela kubevela/vela-core --wait
```
## Install Pre-release
@ -39,7 +39,7 @@ helm search repo kubevela/vela-core -l --devel
And try the following command to install it.
```shell script
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --version <next_version>-rc-master
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --version <next_version>-rc-master --wait
```
```console
NAME: kubevela
@ -139,7 +139,7 @@ kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/v1.1.0/chart
### Step 3. Upgrade KubeVela Helm chart
```shell
helm upgrade --install --create-namespace --namespace vela-system kubevela kubevela/vela-core --version <the_new_version>
helm upgrade --install --create-namespace --namespace vela-system kubevela kubevela/vela-core --version <the_new_version> --wait
```
## Addons

View File

@ -2,56 +2,37 @@
title: 系统架构
---
KubeVela 的系统在默认安装模式下,是一个只包含“控制平面”的架构,通过插件机制与各种运行时系统进行紧密配合。其中 KubeVela 核心控制器工作在管控 Kubernetes 集群。
KubeVela 在默认安装模式下,是一个只包含“控制平面”的架构,通过插件机制与各种运行时系统进行紧密配合。其中 KubeVela 核心控制器工作在一个单独的控制面 Kubernetes 集群。
如下图所示,自上而下看,用户只与 KubeVela 所在的控制面 Kubernetes 集群发生交互。
![kubevela-arch](../resources/system-arch.png)
## 应用Application控制器
## API 层
应用控制器是 KubeVela 的核心控制器,也是 KubeVela 唯一一个必须要安装且不可替换的控制器,负责应用的全生命周期管控,主要包含应用版本化、交付模型引擎、工作流引擎等模块,即图中淡红色部分框图
KubeVela API 是声明式的,并以应用程序为中心,用于构建应用交付平台和解决方案。同时,由于它基于原生的 Kubernetes CRD 构建,所以使用起来非常方便
* 版本化控制Revision Manager对于 KubeVela 而言应用的每一次变动都会生成两种类型的版本一个是应用的版本AppRevision一个是组件版本Component Revision。应用版本主要作为应用的快照记录可以方便的进行应用修改的审计。组件的版本主要用于组件的滚动升级与回滚也可以指定不同的组件版本同时运行并做发布时的流量控制。
* 交付模型引擎CUE EngineKubeVela 采用 Open Application ModelOAM作为应用交付模型并通过 [CUE](https://cuelang.org/) 配置语言来实现该模型从而以可编程的方式IaC对待交付组件、运维能力、用户输入和交付工作流进行统一的编排和管理。
* 工作流引擎Workflow Engine工作流是一次应用部署执行过程的描述用户可以通过工作流自己定义部署的完整流程或者灵活的插入各种步骤。举例来说用户可以在工作流的最开始加入一个环境初始化的节点这个工作流节点可以是创建一个运行时 Kubernetes 集群,或者是在一个环境上安装某种系统组件。然后再将应用部署到刚刚初始化完成的部署环境中。简而言之,**KubeVela 的工作流使得应用部署的完整流程可以通过一份声明式配置文件完成描述**。
- 对于大多数不用关心底层细节的用户来说,你只需要:
- 查看 KubeVela 所提供的开箱即用的组件、运维特征、应用策略和工作流
- 通过 YAML 文件来描述一个应用部署计划
- 对于少数管理员来说:
- 内置新的组件、运维特征、应用策略和自定义工作流,提供给你的用户
- 通常需要使用 YAML 文件和 CUE 语言来完成上述操作
## 模块定义Definition控制器
## 控制平面层
模块定义Definition控制器管理各 OAM 模块对象的生命周期比如组件定义模块ComponentDefinition、运维特征模块TraitDefinition等等。模块定义控制器会为这些模块的修改生成不同的版本自动生成操作文档对接的 OpenAPI Schema 等辅助信息,方便其他系统对接
控制平面层是 KubeVela 的系统核心。它既能帮你按需组装内置能力,或者通过注册各种能力插件满足交付应用的需要,同时在交付后全自动处理 API 请求并管理全局状态
## 健康检查控制器
主要包含如下三个部分:
健康检查控制器是默认的健康检查组件,将散落的 Kubernetes 资源汇总并提供应用整体的部署健康状态和拓扑结构,甚至能够将不同集群的健康状态汇总,并周期性的进行部署状态健康检查。
健康检查策略方面,不仅支持常见 Kubernetes 资源的自动化健康检查,同时可以基于 CUE 配置语言进行自定义健康检查策略。甚至平台构建者可以完全自己编写一个 Kubernetes 控制器,实现自定义健康检查逻辑。这一切都是基于 OAM 标准概念可插拔的。
- **核心控制器** 为整个系统提供核心控制逻辑,完成诸如编排应用和工作流、修订版本快照、垃圾回收等等基础逻辑
- **新增内置能力** 由 X-Definitions 创建,注册应用交付所需要的内置能力。基于这个灵活性,我们可以自由地去集成开源生态的能力,按需自定义
- **插件能力中心** Addon 让你可以调用生态下常见的能力,甚至直接省去了开发的时间和成本
## 环境差异化配置控制器
## 执行层
环境差异化配置EnvBinding控制器提供了针对不同的环境做差异化配置patch的能力同时可以结合多集群组件根据用户声明的策略将应用组件分发调度到不同的目标集群环境
## 云资源供应控制器
如今 Terraform 已经逐渐成为了云资源创建的主流方式,涵盖了几乎所有云厂商的资源模块。而这里的云资源供应控制器,就是将 Terraform 客户端的功能与 Kubernetes 控制器相结合,在服务端面向终态的持续管理云资源,为 KubeVela 创建可以持续维护和管理的云资源。这个模块也是可插拔的,可以替换成 Crossplane 等其他云资源创建方案。
## 灰度发布Rollout控制器
灰度发布Rollout控制器可以结合 KubeVela 不同的组件版本进行灰度发布,包含的功能有分批发布、发布暂停、发布回滚、按百分比发布等。可以对接的工作负载包括 Kubernetes 的 Deployment、StatefulSet 等原生能力,以及 OpenKruise 中的 [Cloneset](https://openkruise.io/zh-cn/docs/cloneset.html)。结合 Istio 等 Service Mesh 组件还可以实现蓝绿发布等高级发布功能。
除了默认安装的控制器外KubeVela 提供了包括多集群在内的一系列开箱即用的插件功能,只需要激活这些插件功能,就可以使用。
## 一键安装的插件化控制器
### FluxCD 控制器
KubeVela 通过 FluxCD 控制器来实现 Helm, Kustomize 等组件的交付,并实现基于 GitOps 模式的组件交付功能。
### OpenKruise 控制器
[OpenKruise](https://openkruise.io/) 控制器工作在运行时集群,提供了多种面向无状态、有状态应用管理的高级工作负载功能,通过 OpenKruise 中的各种高级工作负载,可以实现原地升级、镜像预热等高级功能。
最后执行层是应用程序实际会运行的地方。KubeVela 允许你在统一的工作流中,部署和管理应用程序到 Kubernetes 集群例如本地、托管云服务、IoT/边缘设备端等等。
## 下一步
后续步骤:
- 加入 KubeVela 中文社区钉钉群群号23310022。
- 阅读[**用户手册**](../end-user/components/helm),从 Helm 组件开始了解如何构建你的应用部署计划。
- 阅读[**管理员手册**](../platform-engineers/oam/oam-model)了解 KubeVela 的扩展方式和背后的 OAM 模型原理。
- 学习如何用 KubeVela 来进行应用交付, 请查看[应用部署计划](./application)。
- 阅读管理员手册学习 [开放应用模型](../platform-engineers/oam/oam-model)。

View File

@ -102,7 +102,7 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/mast
2. 安装 KubeVela
```shell script
helm install --create-namespace -n vela-system kubevela kubevela/vela-core
helm install --create-namespace -n vela-system kubevela kubevela/vela-core --wait
```
你可以参考 [`自定义安装`](./platform-engineers/advanced-install) 获取更多安装模式和功能。

View File

@ -141,7 +141,7 @@ kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/v1.1.0/chart
### 第三步 升级 KubeVela Helm chart
```shell
helm upgrade --install --create-namespace --namespace vela-system kubevela kubevela/vela-core --version <the_new_version>
helm upgrade --install --create-namespace --namespace vela-system kubevela kubevela/vela-core --version <the_new_version> --wait
```
## 插件列表

View File

@ -27,10 +27,8 @@ module.exports = {
collapsed: false,
items: [
'case-studies/jenkins-cicd',
'case-studies/gitops',
// 'case-studies/multi-app-env-cluster',
// 'case-studies/workflow-edge-computing', // 待完成
// 'case-studies/li-auto-inc', 暂时下掉,应该改写成一个 10 - 15 分钟体验的产品 lab 例子
// 'case-studies/workflow-with-ocm',
],
},
{
@ -38,7 +36,6 @@ module.exports = {
label: 'End User Guide',
collapsed: false,
items: [
// 'end-user/initializer-end-user',
{
'Components': [
'end-user/components/helm',
@ -51,11 +48,9 @@ module.exports = {
'end-user/components/cloud-services/terraform/alibaba-rds',
'end-user/components/cloud-services/terraform/alibaba-oss',
],
},
'end-user/components/cloud-services/provider-and-consume-cloud-services',
],
},
{
'CUE Component': [
@ -68,7 +63,6 @@ module.exports = {
'end-user/components/more',
]
},
{
'Traits': [
'end-user/traits/ingress',
@ -81,25 +75,6 @@ module.exports = {
'end-user/traits/more',
]
},
// 'end-user/canary-blue-green', v1.1+ 再上
// {
// 'Components': [
// 'end-user/components/helm',
// 'end-user/components/kustomize',
// 'end-user/components/cue',
// 'end-user/components/cloud-services', 先隐藏,需要等用户侧的云服务支持 terraform 原生的 HCL
// {
// 'Cloud Services': [
// {
// 'Terraform': [
// 'end-user/components/cloud-services/terraform/alibaba-rds',
// 'end-user/components/cloud-services/terraform/alibaba-oss',
// ]
// },
// ]
// },
// ]
// },
{
'Policies': [
'end-user/policies/envbinding',
@ -142,11 +117,6 @@ module.exports = {
'platform-engineers/cue/advanced',
]
},
//{
// 'Environment System': [
// 'platform-engineers/initializer/basic-initializer',
// ]
//},
{
type: 'category',
label: 'Component System',