KubeVela是基于Kubernetes与OAM技术构建的,一个简单易用且高度可扩展的应用管理平台与核心引擎。阿里云高级工程师董天欣在“2022云原生超级英雄会”直播中分享了OAM与KubeVela下一代云原生应用交付和管理实践。

多环境下的应用部署

在业务不断扩张的当下,每个企业都在不断演进中开发了更多工具以及应用服务。这些应用有内部的,也有外部的,应用的底层基础设施也都各不相同。这些应用在演进的过程中,需要不断地被更新,更新逻辑也不尽相同。

这就要求运维人员不但需要管理各个更新逻辑不一致的应用,还要管理这些应用底层基础设施的变更,如:集群的重启等等。

手动的更新和管理不仅容易出错,还十分消耗人力,希望能有一个自动化的流程去管理这些应用的部署以及更新。

以淘宝这个应用为例,淘宝是个功能十分丰富的应用,其内部也分为了许多功能模块。举一个简单的例子,淘宝内部可能需要管理用户信息的组件,管理订单系统的组件,两个组件对应的数据库,以及一个前端。

这些内部组件的部分配置可能是类似的,比如说用户信息和订单系统这两个组件都可以被认为是同一类的后端组件,而其对应的数据库也有一大部分配置是可以复用的。

除了这些组件本身以外,他们还需要一些额外的资源,比如负载均衡器。

在手动部署的过程中,首先需要部署三个服务,然后去云厂商的页面上开启两个云上的数据库,并且为服务配置负载均衡器。而在一个应用上线的过程中,将面对着许多不同的环境:开发环境、测试环境、预发环境、生产环境等等。

如果没有统一的自动化流程,同样的部署更新步骤需要我们在不同的环境中不断重复,这是一件十分繁琐且容易出错的事。

但这么多配置不同的组件和应用,应该如何自动化部署呢?

使用KubeVela的应用部署

以下是KubeVela对应用自动化部署提出的解决方案。

要想自动化去管整个流程,首先需要统一的应用模型,利用模型里面的抽象,去纳管各个配置不同的组件,这也正是我们提出的OAM。

OAM是阿里与微软推出的开放应用模型,而KubeVela则是OAM的官方实现,目前也是CNCF中的项目之一。

KubeVela将应用中的资源划分成两大块:组件和运维特征。组件指实际上需要被部署的服务,在下图中,最左边的一栏是组件。在这个例子中,组件指的是订单服务,订单数据库,商品服务,商品数据库以及前端服务。

除此之外,应用自动化部署还需要运维特征帮助描述额外被运维的资源。应对不同配置的服务,每个组件以及运维特征背后,都有一个类型,对应实际服务的定义。KubeVela使用IaC的方式,来完成组件的抽象与定义。有了这层抽象之后,不管是组件还是运维特征,可插拔性都能大大提高。在生产环境中,可以将需要的组件进行下发,并且指定对应的版本号。由于生产环境中要经常进行审批才能进行下发,所以需要人工审核配合工作。

为了防止配置时出错,我们可以在策略中加上安全或者合法校验的策略,保证每一次部署都是可信的。而在整个应用的部署过程中,KubeVela会自动生成工作流完成部署,这个过程可以是隐式的,也是可以是显示的。

普通的用户只需要完成资源下发,但是当出现高阶的需求,需要管理每一个步骤时,便可以在工作流中声明步骤,帮助完成更好的部署,这就是KubeVela在应用交付层给到的答案。

在交付策略层,不管是集群分发策略、健康检查策略,还是防火墙规则,任何部署前需要遵守的规则,都可以在这个阶段进行声明和执行。同时在工作流定义层,当我们需要蓝绿部署,流量渐进式部署时,便可以在工作流中一步一步的去完成流量分发。目前KubeVela提供了CLI以及UX两个方式帮助用户进行部署。

以上是关于应用交付的演示说明,具体操作请见视频8分20秒处。

关于云原生应用交付和管理实践,大家有任何想法欢迎评论区留言交流。

Logo

开源、云原生的融合云平台

更多推荐