凌云时刻

pulsar 云原生 云原生oam_运维

pulsar 云原生 云原生oam_java_02

编者按:2021 年 6 月 22 日,在云原生计算基金会(CNCF)的 TOC 例会上投票决议通过,Open Application Model (OAM) 和 KubeVela 整体成为 CNCF 官方沙箱项目。阿里云与微软云目前正在协作将 OAM 和 KubeVela 项目的 IP、域名、所有权以及整个 oam-dev GitHub 组织移交给 CNCF 基金会进行托管。

OAM 与 KubeVela 项目地址:https://github.com/oam-dev/kubevela

项目背景

pulsar 云原生 云原生oam_pulsar 云原生_03

我们知道,云原生技术的发展趋势,正在向通过 Kubernetes 作为公共抽象层来实现跨云和基础设施的、一致的应用交付体验方向迅速演进。然而,尽管 Kubernetes 在屏蔽底层基础设施细节方面表现出色,它并没有引入更上层抽象来对面向混合/分布式部署环境的软件交付进行建模。

在混合云/多云/分布式云迅速普及的今天,缺乏面向混合环境的应用部署抽象与运维能力的问题,已经极大的影响了开发者体验、降低了生产力,甚至导致生产故障的发生。

另一方面,面向混合/分布式环境对微服务应用的交付和运维进行建模是一个复杂且碎片化的过程。这导致今天的许多 CD 或 PaaS 系统,要么过于复杂,要么限制性很强(这意味着用户的需求肯定会在某一天超出这些系统的能力)。应用团队普遍抱怨这些平台在响应功能请求和改进方面过于僵化和缓慢。平台团队虽然想提供帮助,但构建这样一个跨环境、灵活且具备一致性的应用交付系统所需的工程工作似乎令人生畏。

什么是 KubeVela

pulsar 云原生 云原生oam_pulsar 云原生_04

KubeVela 是一个现代应用交付与管理平台,旨在帮助应用团队更轻松、更快速地在混合/多云环境中部署和管理应用程序,同时在用户需求变化的时候提供高度的灵活性与可扩展性。具体来说,它的核心设计包括:

pulsar 云原生 云原生oam_运维_05

 以应用程序为中心- KubeVela 引入了开放应用程序模型(OAM)来作为更高级别的 API,通过高度一致的工作流来捕获面向混合环境的微服务交付的所有信息。包括多集群分发策略、流量调配和滚动更新等运维特征,都声明在应用级别。用户无需关心任何基础设施细节,只需要定义和部署应用即可。

pulsar 云原生 云原生oam_运维_06

 可编程式交付工作流- KubeVela 的模型层是利用 CUE 来实现的。它使得你可以轻松地将应用交付工作流声明为一个 DAG,并将所有步骤和应用部署需求以可编程的方式粘合在一起。这里没有任何限制,原生可扩展。

pulsar 云原生 云原生oam_pulsar 云原生_07

 运行时无关 - KubeVela 是一个完全与运行时无关的应用交付与管理控制平面。它可以按照你定义的工作流与策略,面向混合环境交付和管理任何应用组件:包括容器、云函数、数据库甚至 AWS EC2 实例。

项目架构

pulsar 云原生 云原生oam_大数据_08

KubeVela 是一个现代应用交付与管理平台,旨在帮助应用团队更轻松、更快速地在混合/多云环境中部署和管理应用程序,同时在用户需求变化的时候提供高度的灵活性与可扩展性。具体来说,它的核心设计包括:

在架构上,KubeVela 是一个应用交付与管理控制平面,其工作原理如下所示(关注 Control Plane 部分):

pulsar 云原生 云原生oam_pulsar 云原生_09

pulsar 云原生 云原生oam_java_10

 
控制平面(Control Plane)

控制平面是 KubeVela 本身所运行的位置。正如项目名称所暗示的那样,KubeVela 在实现上利用 Kubernetes 作为控制平面,从而通过控制循环机制来保证大规模应用交付过程的高度自动化强确定性。在控制平面,用户通过以应用为中心的 API 同 KubeVela 交互来对应用部署进行定义,然后 KubeVela 则根据用户声明的策略和工作流将应用分发到具体的运行时基础设施中去运行。

pulsar 云原生 云原生oam_阿里云_11

 
运行时基础设施(Runtime Infrastructure)

运行时基础设施是应用程序实际运行的地方。KubeVela 允许您同时面向基于 Kubernetes 的基础设施(包括本地、托管产品、物联网/边缘/裸机等)和非 Kubernetes 环境(例如公共/私有云)以完全一致的工作流交付和管理应用。注意:KubeVela 本身不工作在运行时基础设施当中

KubeVela 的使用场景

pulsar 云原生 云原生oam_运维_12

KubeVela 的典型应用场景包括:

pulsar 云原生 云原生oam_运维_13

 
SasS 软件云端交付与托管;

pulsar 云原生 云原生oam_大数据_14

 
面向混合云/分布式云的应用 PaaS;

pulsar 云原生 云原生oam_大数据_15

 
面向混合环境的 DevOps 平台,包括多集群/多环境 CD 系统等。

KubeVela 的近期 Roadmap

pulsar 云原生 云原生oam_运维_16

pulsar 云原生 云原生oam_java_17

 
Helm、Kustomize 和 Terraform 组件的进一步完善,模型层进一步升级从而在设计和实现上确保 KubeVela 可以“交付一切”。

pulsar 云原生 云原生oam_阿里云_18

 
新增部署环境初始化 (Initializer) 能力,比如 Kubernetes 集群、系统插件、公共服务 (Load Balancer, VPC, DB) 等部署环境的拉起和维护。

pulsar 云原生 云原生oam_运维_19

 
进一步完善应用发布过程的 Workflow 能力,让用户可以定义面向过程的运维命令。部分运维能力也将配合 Workflow 方向改造,包括灰度升级、流量管理、多集群分发策略等。

pulsar 云原生 云原生oam_pulsar 云原生_20

 
新增配置差异化、数据传递等面向跨环境部署的功能。

pulsar 云原生 云原生oam_pulsar 云原生_21

 
完善 Workflow 可插拔能力,用户可以使用自己的能力(比如:灰度发布)来添加或替换 Workflow 中的任何步骤。

pulsar 云原生 云原生oam_大数据_22

 
KubeVela 安装的 standalone 模式,即可以在单个 Docker 容器/VM 里面运行 KubeVela。

OAM/KubeVela 社区与生态

pulsar 云原生 云原生oam_运维_23

KubeVela 项目日前已经发布了 v1.0 稳定版,拥有 85 位活跃的社区贡献者,已经被 Springer Nature、Salesforce、Agoda、SHEIN、网易游戏、滴普、谐云和风变科技等国内外超过 11 家领先企业开始应用在实际生产环境,Oracle Cloud 已经对外提供了基于 OAM 的企业级应用平台。

2021 年 5 月,由中国信息通信研究院等 10 余家单位联合发起的《云计算开放应用架构》标准文件在“云原生产业大会”现场发布。该架构以阿里云、微软云联合发起的开源项目“开放应用架构模型(Open Application Model,以下简称 OAM)”为实现基础,旨在为云端应用管理者提供统一的应用描述规范及开放应用程序能力管理框架,以期推动简洁、高效、可控的云原生应用管理与交付方式在更多行业和企业中的大规模落地。