一种用户无感的微服务容器部署方法及其部署装置制造方法及图纸

技术编号:34611350 阅读:55 留言:0更新日期:2022-08-20 09:16
本发明专利技术公开了一种用户无感的微服务容器部署方法及其部署装置,其特点是该方法采用流水线的项目部署方法,通过静态代码扫描模块、服务网格实和流量转发模块,实现用户无感的微服务容器部署,装置(系统)包括:流水线模块、代码扫描模块、镜像发布模块、升级镜像模块、服务网格模块和流量转发模块。本发明专利技术与现有技术相比具有发布新版本时停机时间为0,用户可以丝滑地过渡到新版本而不影响使用,使得用户对部署毫不知情,实现用户无感的微服务容器部署,简化了项目部署过程,节省时间与人力,较好解决了0停机时间发布新版本的问题,具有广泛的应用前景。应用前景。应用前景。

【技术实现步骤摘要】
一种用户无感的微服务容器部署方法及其部署装置
[0001]

[0002]本专利技术涉及微服务容器部署
,尤其涉及一种用户无感的微服务容器部署方法及其服务容器部署装置。

技术介绍

[0003]在中大型应用程序的实际开发过程中,随着应用程序的使用需求不断变化,开发者们需要不定期地更新版本,更新版本又需要开发者们修改代码、提交代码、发布新版本到生产环境。随着容器化技术的发展,容器变得越来越轻量级,使用成本越来越低,但是资源利用率和性能越来越高。在面对同一台服务器需要部署多个应用或者同一个应用需要部署到多台服务器的情况时,容器化技术显得十分实用。因此,在发布新版本到生产环境时,越来越多的企业和开发者们选择使用容器化技术来部署应用。虽然,使用容器化技术来部署应用已经广为人知,但目前的技术方案仍然存在以下问题:对于传统的容器部署来说,在发布新版本的时候,部署应用人员需要先将原有容器停止运行,再重新部署新版本容器并且运行,这样就使得用户往往有一段时间不能使用应用直到新版本发布完成,这段时间被称为停机时间。解决如何做到0停机时间发布新版本,即用户无感的容器部署这个问题变得很有价值。

技术实现思路

[0004]本专利技术的目的是针对现有技术的不足而设计的一种用户无感的微服务容器部署方法及其部署装置,采用流水线的项目部署方法,通过流水线模块依次连接的代码扫描模块、镜像发布模块、升级镜像模块、服务网格模块和流量转发模块构成的装置,实现用户无感的微服务容器部署,使得发布新版本时停机时间为0,用户可以丝滑地过渡到新版本而不影响使用应用,通过静态代码扫描模块,可以扫描出静态代码可能存在的风险,减少了项目上线后的风险和企业的损失,通过服务网格模块,可以实现精细化控制流量,优化用户体验,使得用户对部署毫不知情,即可实现用户无感的微服务容器部署,大大简化了项目部署过程,节省时间与人力,较好解决了0停机时间发布新版本的问题,具有广泛的应用前景。
[0005]实现本专利技术的具体技术方案是:一种用户无感的微服务容器部署方法,其特点是该方法包括如下步骤:步骤S1:推送代码后自动启动流水线;步骤S2:推送新版本镜像到镜像仓库;步骤S3:静态代码扫描;步骤S4:在k8s集群上的空闲worker部署新版本镜像;步骤S5:启动Istio服务网格;步骤S6:验证通过后将所有流量转发到新版本所在集群中。
[0006]所述步骤S1中推送代码后自动启动流水线,具体包括如下步骤:步骤S11:在服务器上部署runner用于运行流水线;步骤S12:通过Git命令将代码推送至已有的Gitlab代码仓库;步骤S13:启动Gitlab CI/CD流水线。
[0007]所述步骤S2中推送新版本镜像到镜像仓库,具体包括如下步骤:步骤S21:使用docker拉取项目依赖的基础镜像;步骤S22:将项目打包成新版本镜像;步骤S23:通过docker将新版本镜像推送至阿里云镜像仓库;步骤S24:生成产物供所述步骤S3静态代码扫描使用。
[0008]所述步骤S3中静态代码扫描,具体包括如下步骤:步骤S31:拉取所述步骤S2推送新版本镜像到镜像仓库的产物;步骤S32:根据项目选择代码扫描工具,进行静态代码扫描。
[0009]所述步骤S4中在k8s集群上的空闲worker部署新版本镜像,具体包括如下步骤:步骤 S41:启动service服务;步骤 S42:定义pod模板;步骤S43:根据所述步骤S42中定义的模板创建replica set;所述步骤S41中启动service服务,通过设置服务的标签来使服务可以匹配到相应的pods。
[0010]所述步骤S42中定义pod模板,具体包括如下步骤:步骤S421:设置pod的副本数量;步骤S422:设置pod的标签,用于被相应的service服务选中;步骤S423:将pod的镜像设置为所述步骤2中推送的新版本镜像,用于创建对应pods;步骤S424:设置生存探针和就绪探针,用于判断pod是否存活和就绪;步骤S425:设置相应的环境变量。
[0011]所述步骤S5中启动Istio服务网格,具体包括如下步骤:步骤S51:启动gateway服务;步骤S52:启动Destination Rule服务;步骤S53:启动Virtual Service服务。
[0012]所述步骤S51中启动gateway服务,具体包括如下步骤:步骤S511:通过设置标签以匹配Istio出口网关;步骤S512:设置服务的protocol和端口号;步骤S513:设置匹配host。
[0013]所述步骤S52中启动Destination Rule服务,具体包括如下步骤:步骤 S521:设置host名;步骤S522:设置subsets集合,其中包括新版本和旧版本两个子集,并且设置对应版本的标签。
[0014]所述步骤S53中启动Virtual Service服务,具体包括如下步骤:步骤S531:设置匹配host名;
步骤S532:绑定所述步骤S51中启动的gateway服务;步骤S533:设置route规则。
[0015]所述步骤S533中设置route规则,具体包括如下步骤:步骤S5331:设置destination中所匹配的service服务;步骤S5332:设置destination中新、旧版本的subset子集;步骤S5333:设置将客户端的请求流量转移到新、旧版本上的流量比例,将新版本的weight设置为A,表明将有A%的流量被转移到新版本上;将旧版本的weight设置为B,表明将有B%的流量将被转移到旧版本上;其中A+B=100。
[0016]所述步骤S6中验证通过后将所有流量转发到新版本所在集群,具体包括如下步骤:步骤S61:验证所述步骤S5333中转移到新版本上的A%流量,检查是否存在bug;步骤S62:如果在新版本上的A%流量不存在bug,那么修改所述步骤S53中的Virtual Service服务,将所有流量转发到新版本上,并断开与旧版本的连接;如果在新版本上的A%流量存在bug,则进行回滚,将A%流量重新转移到旧版本中。
[0017]所述步骤S62中,通过修改所述步骤S5333中的流量比例来控制流量转移,并且重新启动所述步骤S53中的Virtual Service服务。
[0018]一种用户无感的微服务容器的部署装置,其特点是该装置(系统)由流水线模块依次连接的代码扫描模块、镜像发布模块、升级镜像模块、服务网格模块和流量转发模块组成,实现用户无感的微服务容器部署,所述流水线模块用于推送代码后自动启动流水线,简化项目部署过程;所述代码扫描模块用于静态代码扫描,检出代码中可能存在的风险;所述镜像发布模块用于推送新版本镜像到镜像仓库;所述升级镜像模块用于在k8s集群上的空闲worker部署新版本镜像;所述服务网格模块用于启动Istio服务网格,实现精细化控制流量;所述流量转发模块用于验证通过后将所有流量转发到新版本所在集群中,实现用户无感的微服务容器部署。
[0019]本专利技术与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
Service服务,将所有流量转发到新版本上,并断开与旧版本的连接;如在新版本上的A%流量存在bug,则进行回滚,将A%流量重新转移到旧版本中。8.一种权利要求1所述用户无感的微服务容器部署方法的微服务容器部署装置,其特征在于该装置由流水线模块依次连接的代码扫描模块、镜像发布模块、升级镜像模块、服务网格模块和流量转发模块组成,实现用户无感的微服务容器部署,所述流水线模块用于推送代...

【专利技术属性】
技术研发人员:蒲鹏司琦
申请(专利权)人:华东师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1