本文来自网易云社区html
做者:李培斌
前端
基于omad部署平台实现一键部署的实践已有不少成功的经验,杭研QA的技术先锋们也在ks圈里有不少不一样的文章去阐述关于这类需求的实现和思路,固然包括咱们金融事业部QA这边以前也有利用Jenkins+Omad实现一键部署的场景应用,但本次我想体现的基于omad实现一键群组部署、依赖部署功能,这个有别于以前的“一键部署”功能,一键群组部署、依赖部署工具在咱们这边已经上线一个月了,目前功能已比较稳定,所以本文主要围绕该工具的实现进行简要的阐述分享。
mysql
随着业务的快速发展,业务应用随之增多,每次项目和平常迭代须要部署的应用环境、静态资源、cdn等将近20个,这仅仅是一套环境,对于不一样阶段不一样环境的部署均会存在重复的状况,好比项目测试环境的一套部署,持续集成环境的一套部署、在线确认环境的一套部署等,由此可知,一个项目的研发过程当中投入重复约60次的部署工做已经占用QA不少的时间和精力投入,并且应用依赖的部署只能手工去OMAD平台上一个一个去触发,也下降不少效率,所以咱们就会造成一个简单的需求,oamd可否支持一键根据我任意要部署的应用进行批量部署?可否支持应用之间依赖的顺序部署?
redis
基于以上状况的需求点以下:
sql
一、一键批量部署
json
二、依赖部署
api
为平台化的实现以上需求功能,同时结合Omad平台现有的功能,须要作以下需求拓展:
数组
a、提供配置化的页面,引入分组的概念,实现一键批量部署功能
缓存
b、权限体系维持与Omad一致(我的维度),避免水平和垂直权限紊乱问题
框架
c、应用环境健康状态自动检查,页面实时检查由工具平台触发的部署进度
d、产品、应用、环境、实例的关联关系保持与Omad一致
工具使用如下Omad的api接口来获取环境列表信息、一键部署、健康检查、用户信息获取等:
一、/api/cli/ls:获取我的全部的产品、应用、环境及实例的详情信息
二、/api/cli/estatus:获取某个环境状态详情
三、/api/cli/vcchange:修改仓库、分支地址
四、/api/cli/deploy:一键部署
五、/api/cli/login:获取我的token接口
因为Omad平台设计的产品体系是以产品为维度划分,应用、环境及实例均挂靠下不一样的产品下,经过产品、应用及环境的组合形式来控制权限访问,一键群组部署和依赖部署工具做为部署的页面化入口,其设计理念和原有平台的方式保持一致,工具平台上也是根据产品、应用、环境、实例,层层挂靠递进的模型设计,以下图
对应的数据传输模型设计,以下图
Omad的接口/api/cli/ls返回的是一个大的json数组串,所以数据流解析时直接将返回的数据进行JSONArray对象化,利用json数组对象去循环遍历出JSONObject对象,以此类推层层递进,直到将最后里层的Instance给解析出来,然后根据数据传输模型组装成前端须要的json串。
一、工具平台经过api与omad交互,实现环境数据、部署、健康检查等功能
二、工具平台根据api返回的数据进行不一样类型的处理和组装,返回前端页面处理展现
三、群组数据落地至本地的mysql库,为持久化部署提供支持
四、因为环境列表一个很是大的json数组串,每次调用须要处理耗时较久,且我的的环境列表信息变化周期较长,所以该数据作LocalStorage缓存处理,同时提供接口支持手动刷新
五、权限控制维持Omad体系,第一次使用需用户录入AccessKey和AccessSecret,用户惟一的token标识信息缓存至redis,避免屡次交互
权限控制直接按照Omad原有权限体系来控制,按照我的权限维度作区分,实现从工具平台页面入口的我的产品、应用、环境权限与直接从Omad平台入口保持一致,避免一键群组部署和依赖部署的权限紊乱,引发权限渗透的状况发生。在工具平台这边维护一个用户表,记录录入的AccessKey和AccessSecret信息,以获取用户的惟一标识token信息,从而达到每一个用户的权限隔离。
一、第一次访问工具须要录入OMAD-KEY,或录入的OMAD-KEY信息不正确也须要从新录入
二、选择产品、选择组,添加部署的应用环境信息,其中仓库地址、分支、版本能够为空,为空则表示维持现有的omad配置而不作修改。
三、组状态下的应用环境部署状态是可持续化的,离开页面后从新进去组仍是会进行健康检查,若无组化部署,离开后则再也不检查应用环境的健康状态。
四、部署失败的应用须要“前往”OMAD平台查看详细的日志,若OMAD在登陆状况则直接跳转至对应的应用环境,若未登陆则去OMAD登陆页面。
五、应用部署过程当中,状态会自动刷新。
一键部署工具已上线一个月时间,如今已接入30几个用户,创建近300个群组,有效触发一键部署次数达200屡次,功能逐渐趋于稳定,欢迎你们前来尝鲜。
一、组数据的复制功能
二、我的权限隔离后引发的数据不能共用的问题
三、部署进度刷新功能存在局限性,没法彻底的实时同步
四、......
Oamd一键群组部署、依赖部署工具是基于Omad平台而开发的一个测试效率工具,理论上全部接入到omad上进行部署的应用,如有群组部署和依赖部署的需求都可以使用本工具做为部署入口,邀请你们一块儿来尝尝鲜,同时也给出一些宝贵的意见。
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易云社区,经做者李培斌受权发布。
相关文章:
【推荐】 kubernetes 1.3管中窥豹- RS(Replica Sets):the next-generation Replication Controller