BizWorks应⽤平台基于KubeVela的实践

简介: BizWorks与KubeVela的合作始于1.0.5版本,BizWorks在1.0.5版本上完成了关键技术验证并且在1.2.5版本上基础上扩展了BizWorks的应用部署和运维能力。通过近一年多的深度合作,BizWorks通过KubeVela解决了一些痛点和诉求,同时基于KubeVela功能和特性也沉淀了一些实践,本文将分别通过介绍BizWorks在KubeVela使用场景来讲述如何探索和实践云原生时代新一代PaaS平台持续交付能力的落地。

前⾔

BizWorks与KubeVela的合作始于1.0.5版本,BizWorks在1.0.5版本上完成了关键技术验证并且在1.2.5版 本上基础上扩展了BizWorks的应⽤部署和运维能⼒。通过近⼀年多的深度合作,BizWorks通过 KubeVela解决了配置碎片化的痛点和规范化的诉求,同时基于KubeVela功能和特性也沉淀了⼀些实践,本文通过介绍BizWorks在KubeVela使⽤场景来讲述如何探索和实践云原⽣时代新⼀代PaaS平台持续交付能⼒的落地。


⼀、BizWorks介绍

BizWorks(https://bizworks.aliyun.com/)是⼀体化的阿⾥云原⽣应⽤的开发和运营平台,内置阿⾥巴巴 业务中台构建的最佳技术实践。产品主要包括:业务建模平台、业务应⽤平台、演练压测平台、能⼒运 营平台、⼀体化运⾏和运维平台。BizWorks提供的产品能⼒(图1-1),普遍适⽤于企业云原⽣应⽤⾼效开发以及企业业务能⼒沉淀和复⽤的场景。

image.png

图 1-1 BizWorks业务架构


BizWorks⼀体化运⾏和运维平台提供⼀站式的应⽤⽣命周期管理、运⾏托管和运维管控能⼒,⽀持多云 适配,因此应⽤的⽣命周期管理是不可或缺的,其中CICD作为应⽤持续演进的关键⽅式对客户产品发布 以及升级迭代扮演着⾄关重要的⻆⾊。

CI(持续集成)主要包括中台类应⽤、低代码类轻应⽤、托管类应⽤、集成类应⽤的构建和物料产出, 为客户透出个性化流⽔线能⼒,可以依据⽤户实际需求编排符合业务需求的流⽔线,也可以直接使⽤业 界沉淀的通⽤流⽔线产品。


CD(持续交付/持续部署)主要包括上述⼏类应⽤构建制品部署上线以及运维,为客户提供核⼼的部署 操作能⼒,⽤户可以基于内置的部署引擎完成应⽤的部署,同时也可以接⼊其他部署产品,例如EDAS。


本⽂将主要讲述探索如何使⽤KubeVela在BizWorks⼀体化运⾏和运维平台应⽤部署中落地。


⼆、应⽤交付的需求与落地

2.1 需求背景

BizWorks对于应⽤交付的需求主要包括两个思考,第⼀个是在云原⽣技术背景下,应⽤交付应该基于云 原⽣技术架构进⾏设计,因此采⽤的应⽤交付技术选型要能够⽀持相应的技术组件诉求;第⼆个是从业 务需求出发,当前应⽤交付配置⾯临碎⽚化的境况,包括环境配置、资源规格配置、持久化配置、⽹络路由配置等,同时对于应⽤交付制品类型也不尽相同。为了满⾜上述的需求,BizWorks选择使⽤ KubeVela来实现应⽤的持续交付,保证客户环境交付终态的稳定性和可靠性。


2.2 应⽤部署架构

⽬前Bizworks⽀持四种类型的业务应⽤,集成了部分开源或阿⾥云的中间件组件,其部分能⼒主要是通 过使⽤KubeVela的Application、Component、Trait以及WorkFlow来实现(如图2-1)。在KubeVela Component基础上BizWorks定义⾃⼰的⽆状态组件(stateless-component)、有状态组件(stateful-component)、组装⽹络(advanced-ingress-trait)等,然后通过KubeVela来屏蔽不同云⼚商或 Kubernetes底座的复杂性和差异性,构成了当前BizWorks的应⽤部署架构。

image.png

图 2-1 BizWork应⽤部署业务架构


2.3 碎⽚化配置的痛点与解决

对于平台来说提供的功能如果具有可扩展和灵活性的话,可以为平台增强现有能⼒和推出更好体验的功 能点带来强⼤的帮助。但是由于平台⾯对的使⽤者背景和诉求各不相同,为了能尽可能满⾜⼤多数场景 需求可能会导致配置化内容变得多⽽且散乱,这是当时⾯临的碎⽚化配置痛点。借助KubeVela丰富和强⼤的插件和运维特征补丁功能可以极大改善这种情况。⾸先KubeVela拥有很多常⻅的插件,例如分批 发布、fluxcd等,并且也内置了很多可⽤性⾼的运维特征补丁,例如标签、注解、init-container、 ingress等。如果没有定制化需求,使⽤KubeVela⾃带的插件和运维特征补丁基本就可以满⾜需求;

如果需要针对平台⾃身能⼒进⾏定制的话也是可以的,这⾥以⾃定义运维特征补丁为例,介绍下 BizWorks如何实现⾃定义功能。


BizWorks应⽤在发布时,可以⽀持⽤户⾃⼰配置⽹络路由(如图2-2),因此就需要⽀持同时⽣效多个 ingress和service的配置。我们在KubeVela内置的ingress运维特征基础上进⾏了改进,⽀持批量传⼊声 明的⽹络路由配置,然后通过BizWorks以⾃定义运维特征的⽅式下发到KubeVela(相关cue定义⻅下⽅ 示例代码),最终⽣效到集群中。


"bizworks-ingress-comp-1-22": {type: "trait"annotations: {}description: "Enable public web traffic for the component, the ingressAPI matches K8s v1.20+."attributes: {podDisruptive: false}}template: {outputs: {// trait template can have multiple outputs in one trait
if parameter.route != _|_ {for _, v in parameter.route {"service-\(v.serviceName)": {apiVersion: "v1"kind: "Service"metadata:name: v.serviceName
spec: {selector: "app.oam.dev/component": context.name
if v.serviceType != _|_ {type: v.serviceType
}ports: [{port: v.servicePort
protocol: v.serviceProtocolType
targetPort: v.port
},]}}if v["ingressName"] != _|_ {"ingress-\(v.ingressName)": {apiVersion: "networking.k8s.io/v1"kind: "Ingress"metadata: {name: v.ingressName
annotations: {if !v.classInSpec {"kubernetes.io/ingress.class": v.class
}if v.annotations != _|_ {for _, t in v.annotations {"\(t.name)": t.value
}}}}spec: {if v.classInSpec {ingressClassName: v.class
}if v["ingressProtocolType"] == "HTTPS"{tls: [{hosts: [v.domain,]secretName: v.secretName
}]}rules: [{host: v.domain
http: {paths: [{path: v.path
pathType: "ImplementationSpecific"backend: service: {name: v.serviceName
port: number: v.servicePort
}},]}}]}}}}}}parameter: {route: [...{// +usage=Specify the port your server want to expose
port?: int
// +usage=Specify the protocol your service want to expose
serviceProtocolType?: string
// +usage=Specify the name your service want to expose
serviceName?: string
// +usage=Specify the port your service want to expose
servicePort?: int
// +usage=Specify the type your service want to expose
serviceType?: string
// +usage=Specify the type your ingress want to expose
ingressProtocolType?: string
// +usage=Specify the name your ingress want to expose
ingressName?: string
// +usage=Specify the domain you want to expose
domain?: string
// +usage=Specify the path you want to expose
path?: string
// +usage=Specify the tls secret you want to use
secretName?: string
annotations?: [...{name: string
value: string
}]// +usage=Specify the class of ingress to use
class: *"nginx" | string
// +usage=Set ingress class in '.spec.ingressClassName' instead of
'kubernetes.io/ingress.class' annotation.
classInSpec: *false | bool
}]}}


image.png

                     图2-2 BizWorks应⽤⽹络路由配置

2.4 实践案例

⾸先以⼀个⽆状态组件应⽤发布为例,介绍如何使⽤KubeVela完成应⽤发布计划。BizWorks继承OAM 设计理念,将应⽤作为⼀个交付的整体,其内部由不同类型的组件构成,并且组件可以通过绑定⾃定义运维特征补丁实现多种组合搭配。应⽤内的组件可以按照⾃⼰的发布计划⾃⾏发布,并且组件之间产⽣的⼯作负载和⽹络 拓扑不会彼此影响,具体⻅图2-3.

image.png

图 2-3 BizWorks应⽤发布计划


BizWorks还⽀持通过helm chart来部署复杂结构的应⽤组件,并且和⽆状态组件⼀样,⽀持⼀个应⽤下 同时发布多个helm类型的组件。如图2-4所示,模版中⼼提供了helm chart类型模版的上传、更新、下 载、删除的功能,然后通过平台定义的helm类组件完成模版组件的部署、回滚和删除操作。

image.png

图2-4 BizWorks helm chart应⽤发布

2.5 成果与收益

  • 具备了基础的部署和运维能⼒

    - 借助KubeVela Rollout,应⽤平台具备了基础的部署和运维能⼒,能够完全平台化覆盖应⽤实例的⽣命周期,运维⼈⼒成本降低50%,公有云场景消除了产品间来回切换的成本

    - 灵活的特征机制,为应⽤平台提供了便利的路由配置能⼒

  • 一键搭建测试环境

    - 基于KubeVela的fluxcd Addon和应⽤平台的模版中⼼,⽤户可以快速的搭建和释放⼀套测试环境,完整搭建由正常的3-6个⼩时缩减为15分钟左右

  • 应⽤模型统⼀

    - KubeVela相较于其他开源CD产品最⼤的优势,是其开放应⽤模型OAM的理念,声明式构建需要的资 源,对于有多云部署和应⽤配置统⼀的产品有很⼤的帮助,配置统⼀后运维⼈员不需要收集各 种格式的资源申请,完全可以通过平台化配置和OAM模型完成声明式资源创建,这部分效率⼏ 乎提升100%


三、未来规划

为了更好的⽀持后续平台能⼒的扩展和增强,BizWorks在可预⻅的近期会继续与KubeVela开展深度合 作,⼤致规划包括:

  • 可视化分批发布,基于Kruise Rollout和KubeVela,⽀持⽆状态组件以及helm chart
  • 弹性伸缩,兼容ACK和Kubernetes原⽣HPA策略
  • 社区贡献,⾃定义的definition转化为KubeVela的addon
  • ⾦丝雀发布,⽀持更好的流量控制和灰度策略
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
《阿里云产品手册2022-2023 版》——BizWorks
《阿里云产品手册2022-2023 版》——BizWorks
128 0
首批认证!阿里云E2 BizWorks产品通过中国信通院业务中台建设和运营能力评估认证!
2022年8月12日,“2022数字化转型发展高峰论坛”在北京落下帷幕,主办单位为中国信息通信研究院、中国通信标准化协会。作为数字化转型领域的权威行业盛会,本届论坛给业界带来了一场数字化转型的思想盛宴、技术盛宴和成果盛宴。在本届峰会上,阿里云E2 BizWorks成为首批通过中国信通院业务中台建设与运营认证的产品。
167 0
|
数据库
组装式应用平台!阿里云E2 BizWorks产品获得国家级数字技术创新应用案例一等奖!
2022年8月12日,“2022数字化转型发展高峰论坛”在北京落下帷幕,主办单位为中国信息通信研究院、中国通信标准化协会。作为数字化转型领域的权威行业盛会,本届论坛给业界带来了一场数字化转型的思想盛宴、技术盛宴和成果盛宴。在本届峰会上,阿里云E2 BizWorks产品荣获“鼎新杯”数字技术创新应用案例一等奖,BizWorks产品负责人谢纯良荣获中国信通院“数字化转型先锋人物”称号。
157 0
首批认证!阿里云E2 BizWorks产品通过中国信通院业务中台建设和运营能力评估认证!
8月12日,“2022数字化转型发展高峰论坛”在北京落下帷幕,主办单位为中国信息通信研究院、中国通信标准化协会。作为数字化转型领域的权威行业盛会,本届论坛给业界带来了一场数字化转型的思想盛宴、技术盛宴和成果盛宴。在本届峰会上,阿里云E2 BizWorks成为首批通过中国信通院业务中台建设与运营认证的产品。
首批认证!阿里云E2 BizWorks产品通过中国信通院业务中台建设和运营能力评估认证!
组装式应用平台!阿里云E2 BizWorks产品获得国家级数字技术创新应用案例一等奖!
8月12日,“2022数字化转型发展高峰论坛”在北京落下帷幕,主办单位为中国信息通信研究院、中国通信标准化协会。作为数字化转型领域的权威行业盛会,本届论坛给业界带来了一场数字化转型的思想盛宴、技术盛宴和成果盛宴。在本届峰会上,阿里云E2 BizWorks产品荣获“鼎新杯”数字技术创新应用案例一等奖,BizWorks产品负责人谢纯良荣获中国信通院“数字化转型先锋人物”称号。
组装式应用平台!阿里云E2 BizWorks产品获得国家级数字技术创新应用案例一等奖!
|
运维 Cloud Native 数据可视化
阿里云BizWorks重磅发布:企业级云原生应用数字工作台
BizWorks是一体化的云原生应用的开发和运营平台,内置阿里业务中台构建的最佳技术实践。产品主要包括:业务建模平台、一体化应用构建与运行平台、业务测试与演练平台、业务运营与治理平台。BizWorks提供的产品能力,普遍适用于企业云原生应用高效开发以及企业资产沉淀和复用的场景。
1131 0
阿里云BizWorks重磅发布:企业级云原生应用数字工作台
|
Kubernetes NoSQL 算法
阿里云新品发布会周刊第145期 丨 BizWorks新品发布会
新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多新品发布会!
778 0
阿里云新品发布会周刊第145期 丨 BizWorks新品发布会
|
人工智能 Cloud Native 架构师
阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段
业务中台产品BizWorks重磅发布,这可以看作是阿里云在 “做厚中台” 战略上继 “云钉一体”之后的又一个新动作!
阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段
|
运维 数据可视化 安全
阿里巴巴DevOps实践指南(二十三)| 编排运维
面向编排的运维是指用户(PaaS 服务以及开发、运维、运营等角色)根据实际业务需要,对多个原子组件通过简单编排的方式进行灵活装配,构造出不同的业务流程以便完成一个完整的运维需求。运维编排可以帮助我们更好地规范、管理和执行自动化运维操作,以模板的方式定义所需要进行的操作,然后再通过系统运行,从而提高整体运维操作的效率、增强运维操作的安全性,并避免人工运维的错误。
阿里巴巴DevOps实践指南(二十三)| 编排运维
|
27天前
|
运维 监控 Kubernetes
kubevela可观测体系问题之KubeVela 的面向应用监控界面的问题如何解决
kubevela可观测体系问题之KubeVela 的面向应用监控界面的问题如何解决