CN114385211A - 一种基于GitOps的多云环境升级方法及控制平台 - Google Patents

一种基于GitOps的多云环境升级方法及控制平台 Download PDF

Info

Publication number
CN114385211A
CN114385211A CN202210032241.9A CN202210032241A CN114385211A CN 114385211 A CN114385211 A CN 114385211A CN 202210032241 A CN202210032241 A CN 202210032241A CN 114385211 A CN114385211 A CN 114385211A
Authority
CN
China
Prior art keywords
environment
cloud
gitops
warehouse
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210032241.9A
Other languages
English (en)
Inventor
胡鹏
刘隆剑
欧志伟
吴坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhenyun Information Technology Co ltd
Original Assignee
Shanghai Zhenyun Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Zhenyun Information Technology Co ltd filed Critical Shanghai Zhenyun Information Technology Co ltd
Priority to CN202210032241.9A priority Critical patent/CN114385211A/zh
Publication of CN114385211A publication Critical patent/CN114385211A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明公开了一种基于GitOps的多云环境升级方法及控制平台,旨在降低多云环境的部署和升级成本,使得OP用户同SaaS用户一样,统一纳管、统一迭代、统一运维。该方法通过对云端的SaaS环境进行环境快照,借助GitOps仓库的提交和解析,将复杂的微服务架构、数据库对象、种子数据脚本、模版文件等以环境快照的形式固化下来,使用GitOps技术驱动环境初始化引擎,通过快照重放方便地在各个环境间传递,进行环境的部署和升级,让OP用户能够自由选择数据存放位置的同时,也能享受到开箱即用、云原生、持续迭代的红利,实现了多云环境的统一纳管、统一迭代、统一运维。

Description

一种基于GitOps的多云环境升级方法及控制平台
技术领域
本申请涉及SaaS系统开发技术领域,具体涉及一种多云环境升级方法及控制平台。
背景技术
在企业软件市场上,SaaS(Software as a Service)企业应用的发展较为迅速,有相当一部分的用户受到市场教育,开始拥抱SaaS,享受到了SaaS开箱即用、云原生、持续迭代的红利。
但是,仍有部分用户出于各种各样的考虑,更希望数据存放于自己的机房中,选择了OP(On-Premise)部署模式。传统的OP部署模式往往是项目交付制的,项目上线即意味着应用开发周期的终结。后期的运维往往仅围绕着bug修复展开,有新的需求,通常需要经过冗长的增补合同周期,无法快速响应用户后续的需求。并且,后续的开发人员,甚至项目经理,可能会有较大的人员变动,代码中充斥着大量临时的、随意的,甚至颠覆式的修改,交付质量也无法得到很好的保证;同时,有关该项目的一些宝贵的经验无法反哺于软件供应商的SaaS产品上,大量的重复的、同质化需求被重复的实现,得不到有效的沉淀。
发明内容
基于此,本发明提供一种基于GitOps的多云环境升级方法及控制平台,旨在降低多云环境的部署和升级成本,使得OP用户同SaaS用户一样,统一纳管、统一迭代、统一运维。
第一方面,(1)生成环境快照
通过定时任务,环境初始化引擎周期性地对云端的SaaS环境进行环境快照,固化微服务与微服务之间、微服务与数据库对象之间、微服务与种子数据(即服务运行所依赖的配置数据)之间以及微服务与模版文件之间的版本依赖关系,生成统一的产品版本,并以docker镜像的方式保存于Harbor仓库中;这里的产品,即包括微服务、数据库对象、种子数据以及模版文件;
(2)升级环境初始化引擎
当需要进行某个多云环境升级时,选择要进行升级的产品版本,获取对应于所述产品版本的环境初始化引擎,将该环境初始化引擎的版本信息更新至该多云环境对应的GitOps仓库中,根据GitOps仓库描述的环境初始化引擎的镜像信息,从Harbor仓库中拉取环境初始化引擎对应的docker镜像;完成引擎自身的升级,然后环境初始化引擎启动运行;
(3)快照重放
环境初始化引擎启动完成后,使用GitOps技术驱动环境初始化引擎执行所述环境快照的重放:根据GitOps仓库描述的产品的镜像信息,从Harbor仓库中拉取产品对应的docker镜像,实现多云环境的升级。
进一步地,步骤(1)中所述对云端的SaaS环境进行环境快照,包括:抓取SaaS版生产环境的微服务docker镜像版本、数据库对象创建脚本、种子数据导入脚本和模版文件的快照,并压缩,然后根据时间戳生成所述统一的产品版本。
进一步地,所述环境初始化引擎作为一个应用运行在每一个多云环境中;步骤(2)具体包括:
2.1)选择要进行升级的多云环境,从环境初始化引擎应用的下拉列表中选择步骤(1)中生成的版本,并确认执行部署;
2.2)将环境初始化引擎的版本更新至多云环境对应的GitOps仓库中;
2.3)采用轮询的方式,当检测到当前多云环境对应的GitOps仓库的变动时,通过SSH认证拉取所述对应的GitOps仓库的最新变动,并解析;
2.4)解析完成后,使用helm调用Kubernetes API进行环境初始化引擎的升级,Kubernetes拉取对应版本的docker镜像,并启动运行。
进一步地,步骤(3)具体包括:
3.1)将存在的压缩包进行解压缩;
3.2)如果有数据库对象脚本更新,则使用Liquibase执行数据库对象创建脚本;
3.3)如果有种子数据导入脚本更新,择使用Liquibase执行种子数据导入脚本;
3.4)通过feign调用文件服务执行模版文件上传;
3.5)如果有应用更新,则将各个应用的版本更新提交至该环境对应的GitOps仓库;
3.6)采用轮询的方式,当检测到该环境对应的GitOps仓库的变动时,通过SSH认证拉取该GitOps仓库的最新变动,并解析;
3.7)解析完成后,使用Helm调用Kubernetes Api进行各个应用的升级。
第二方面,一种基于GitOps的多云部署控制平台,包括:
环境初始化引擎,作为一个应用运行在每一个多云环境中,通过对云端的SaaS环境进行环境快照,固化微服务与微服务之间、微服务与数据库对象之间、微服务与种子数据之间以及微服务与模版文件之间的版本依赖关系,生成统一的产品版本;通过在目标环境中重放快照,实现环境的初始化或者升级;
DevOps子系统,用于对部署到多云环境的产品进行统一CI/CD,使用GitOps技术驱动所述环境初始化引擎进行环境的部署和升级;
DevOps Agent,作为代理工具通过WebSocket连接至DevOps子系统,用于接受命令并执行。
可选地,该多云部署控制平台还包括UVPN子系统,用于实现多云、多IDC的统一入口,从而支持同时运维SaaS环境和OP环境。
可选地,该多云部署控制平台还包括监控预警子系统,用于借助UVPN实现跨云、跨IDC监控指标和性能指标的统一采集和统一预警。
可选地,该多云部署控制平台还包括日志分析子系统,用于借助UVPN实现跨云、跨IDC应用日志的统一采集和统一查询。
本发明至少具有以下有益效果:
本发明通过捕捉环境快照和快照重放,并借助GitOps仓库的提交和解析,将复杂的微服务架构、数据库对象、种子数据脚本、模版文件等以环境快照的形式固化下来,并通过快照重放方便地在各个环境间传递,让OP用户能够自由选择数据存放位置的同时,也能享受到开箱即用、云原生、持续迭代的红利,实现了多云环境的统一纳管、统一迭代、统一运维。
附图说明
图1为本发明一个实施例提供的基于GitOps的多云部署控制平台的架构示意图;
图2为本发明一个实施例提供的基于GitOps的多云环境升级方法的流程示意图;
图3为本发明一个实施例提供的快照重放的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,本发明一个实施例提供的基于GitOps的多云部署控制平台包括下列组成部分:
UVPN子系统:通过在网络的第3层创建隧道打通不同的网络,使用LDAP协议进行统一认证,实现了多云、多IDC的统一入口,运维人员无须安装额外的VPN软件,便可以同时运维SaaS环境和OP环境,降低了运维成本;
环境初始化引擎(环境初始化应用):部署在每一个多云环境中,通过对云端的SaaS环境进行环境快照,固化微服务与微服务之间、微服务与数据库对象之间、微服务与种子数据(即服务运行所依赖的配置数据)之间以及微服务与模版文件之间的版本依赖关系,生成统一的产品版本。快照可以很方便地在不同的环境间传递,并通过在目标环境中重放快照,快速地实现环境的初始化或者升级;
监控预警子系统:借助UVPN实现了跨云、跨IDC监控指标和性能指标的统一采集和统一预警,用于异常指标的提前预警,避免重大灾难性事故的发生;
日志分析子系统:借助UVPN实现了跨云、跨IDC应用日志的统一采集和统一查询,用于辅助后期的故障排查、问题处理;
DevOps子系统:对部署到多云的产品进行统一CI/CD,使用GitOps技术驱动环境初始化引擎进行环境的部署和升级;
DevOps Agent:部署在对应环境中的代理工具,通过WebSocket连接至DevOps子系统,用于接受命令并执行。
本发明的实施例还提出了一种基于GitOps的多云环境升级方法,如图2所示,主要包括:
S1:生成环境快照
通过定时任务,环境初始化引擎每晚抓取SaaS版生产环境的微服务docker镜像版本、数据库对象创建脚本、种子数据导入脚本、模版文件等必要数据文件的快照,并压缩,接着根据时间戳生成快照版本,即生成统一的产品版本(涉及微服务、数据库对象、种子数据以及模版文件);接着将该环境快照以docker镜像的方式保存于Harbor仓库中;
S2:升级环境初始化引擎
在DevOps子系统中,所有的环境都部署在Kubernetes集群中,每一个现实存在的多云环境都对应着一个环境对象,并且有一个对应的GitOps仓库用于记录该环境的所有变动,每一个微服务都作为一个应用以一个文件的形式保存在对应环境的对应GitOps仓库中,环境初始化引擎同样作为一个应用运行在每一个多云环境中;具体步骤如下:
(1)在DevOps子系统中,选择要进行升级的多云环境,接着从环境部署引擎应用的下拉列表中选择步骤1中生成的版本,并确认执行部署;
(2)DevOps子系统将环境初始化引擎的版本更新至上述多云环境对应的GitOps仓库中;
(3)部署在该环境中的Agent通过轮询的方式,检测到该环境对应的GitOps仓库的变动,通过内置的SSH认证拉取该GitOps仓库的最新变动,并解析;
(4)解析完成后,接着Agent使用helm调用Kubernetes API进行环境初始化引擎的升级,Kubernetes拉取对应版本的docker镜像,并启动运行;
S3:快照重放
环境初始化引擎启动完成后,便开始执行快照重放,如图3所示,具体步骤如下:
(1)将存在的压缩包进行解压缩;
(2)如果有数据库对象脚本更新,则使用Liquibase执行数据库对象创建脚本;
(3)如果有种子数据导入脚本更新,择使用Liquibase执行种子数据导入脚本;
(4)通过feign调用文件服务执行模版文件上传;
(5)如果有应用更新,则将各个应用的版本更新提交至该环境对应的GitOps仓库;
(6)部署在该环境中的Agent通过轮询的方式,检测到该环境对应的GitOps仓库的变动,通过内置的SSH认证拉取该GitOps仓库的最新变动,并解析;
(7)解析完成后,接着Agent使用Helm调用Kubernetes Api进行各个应用的升级;
以上便完成了一个多云环境的升级。
应该理解的是,上述步骤并不是必然按照数字序号的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。尤其图2所示,涉及数据库对象脚本更新、文件服务、应用更新等不同的方面。
本发明实施例通过捕捉环境快照和快照重放(快照生成、转移),并借助GitOps仓库的提交和解析,将复杂的微服务架构、数据库对象、种子数据脚本、模版文件等以环境快照的形式固化下来,并通过快照重放方便地在各个环境间传递,让OP用户能够自由选择数据存放位置的同时,也能享受到开箱即用、云原生、持续迭代的红利,将一套环境的部署和升级过程由原来的1天时间缩短到了半个小时,大大降低了多云环境的部署和升级成本,实现了部署、升级的自动化,使得OP用户同SaaS用户一样,统一纳管、统一迭代、统一运维。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种基于GitOps的多云环境升级方法,其特征在于,包括:
(1)生成环境快照
通过定时任务,环境初始化引擎周期性地对云端的SaaS环境进行环境快照,固化微服务与微服务之间、微服务与数据库对象之间、微服务与种子数据之间以及微服务与模版文件之间的版本依赖关系,生成统一的产品版本,并以docker镜像的方式保存于Harbor仓库中;
(2)升级环境初始化引擎
当需要进行某个多云环境升级时,选择要进行升级的产品版本,获取对应于所述产品版本的环境初始化引擎,将该环境初始化引擎的版本信息更新至该多云环境对应的GitOps仓库中,根据GitOps仓库描述的环境初始化引擎的镜像信息,从Harbor仓库中拉取环境初始化引擎对应的docker镜像;完成引擎自身的升级,然后环境初始化引擎启动运行;
(3)快照重放
环境初始化引擎启动完成后,使用GitOps技术驱动环境初始化引擎执行所述环境快照的重放:根据GitOps仓库描述的产品的镜像信息,从Harbor仓库中拉取产品对应的docker镜像,实现多云环境的升级。
2.根据权利要求1所述的基于GitOps的多云环境升级方法,其特征在于,步骤(1)中所述对云端的SaaS环境进行环境快照,包括:抓取SaaS版生产环境的微服务docker镜像版本、数据库对象创建脚本、种子数据导入脚本和模版文件的快照,并压缩,然后根据时间戳生成所述统一的产品版本。
3.根据权利要求1所述的基于GitOps的多云环境升级方法,其特征在于,所述环境初始化引擎作为一个应用运行在每一个多云环境中;步骤(2)具体包括:
2.1)选择要进行升级的多云环境,从环境初始化引擎应用的下拉列表中选择步骤(1)中生成的版本,并确认执行部署;
2.2)将环境初始化引擎的版本更新至多云环境对应的GitOps仓库中;
2.3)采用轮询的方式,当检测到当前多云环境对应的GitOps仓库的变动时,通过SSH认证拉取所述对应的GitOps仓库的最新变动,并解析;
2.4)解析完成后,使用helm调用Kubernetes API进行环境初始化引擎的升级,Kubernetes拉取对应版本的docker镜像,并启动运行。
4.根据权利要求1所述的基于GitOps的多云环境升级方法,其特征在于,步骤(3)具体包括:
3.1)将存在的压缩包进行解压缩;
3.2)如果有数据库对象脚本更新,则使用Liquibase执行数据库对象创建脚本;
3.3)如果有种子数据导入脚本更新,则使用导入工具执行种子数据导入脚本;
3.4)通过feign调用文件服务执行模版文件上传;
3.5)如果有应用更新,则将各个应用的版本更新提交至该环境对应的GitOps仓库;
3.6)采用轮询的方式,当检测到该环境对应的GitOps仓库的变动时,通过SSH认证拉取该GitOps仓库的最新变动,并解析;
3.7)解析完成后,使用Helm调用Kubernetes Api进行各个应用的升级。
5.一种基于GitOps的多云部署控制平台,其特征在于,包括:
环境初始化引擎,作为一个应用运行在每一个多云环境中,通过对云端的SaaS环境进行环境快照,固化微服务与微服务之间、微服务与数据库对象之间、微服务与种子数据之间以及微服务与模版文件之间的版本依赖关系,生成统一的产品版本;通过在目标环境中重放快照,实现环境的初始化或者升级;
DevOps子系统,用于对部署到多云环境的产品进行统一CI/CD,使用GitOps技术驱动所述环境初始化引擎进行环境的部署和升级;
DevOps Agent,作为代理工具通过WebSocket连接至DevOps子系统,用于接受命令并执行。
6.根据权利要求5所述的基于GitOps的多云部署控制平台,其特征在于,还包括UVPN子系统,用于实现多云、多IDC的统一入口,从而支持同时运维SaaS环境和OP环境。
7.根据权利要求5所述的基于GitOps的多云部署控制平台,其特征在于,还包括监控预警子系统,用于借助UVPN实现跨云、跨IDC监控指标和性能指标的统一采集和统一预警。
8.根据权利要求6所述的基于GitOps的多云部署控制平台,其特征在于,还包括日志分析子系统,用于借助UVPN实现跨云、跨IDC应用日志的统一采集和统一查询。
CN202210032241.9A 2022-01-12 2022-01-12 一种基于GitOps的多云环境升级方法及控制平台 Pending CN114385211A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210032241.9A CN114385211A (zh) 2022-01-12 2022-01-12 一种基于GitOps的多云环境升级方法及控制平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210032241.9A CN114385211A (zh) 2022-01-12 2022-01-12 一种基于GitOps的多云环境升级方法及控制平台

Publications (1)

Publication Number Publication Date
CN114385211A true CN114385211A (zh) 2022-04-22

Family

ID=81201445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210032241.9A Pending CN114385211A (zh) 2022-01-12 2022-01-12 一种基于GitOps的多云环境升级方法及控制平台

Country Status (1)

Country Link
CN (1) CN114385211A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643846A (zh) * 2023-06-01 2023-08-25 北京首都在线科技股份有限公司 基于容器集群编排管理平台的定时任务处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643846A (zh) * 2023-06-01 2023-08-25 北京首都在线科技股份有限公司 基于容器集群编排管理平台的定时任务处理方法和装置
CN116643846B (zh) * 2023-06-01 2024-02-20 北京首都在线科技股份有限公司 基于容器集群编排管理平台的定时任务处理方法和装置

Similar Documents

Publication Publication Date Title
CN107729066B (zh) 一种基于svn资源库自动化构建发布方法与装置
US10171383B2 (en) Methods and systems for portably deploying applications on one or more cloud systems
US11436100B2 (en) Backup client agent
CN110908859B (zh) 应用服务处理方法、装置、终端及存储介质
CN110768833A (zh) 基于kubernetes的应用编排部署方法及装置
CN106708740B (zh) 脚本测试方法及装置
US20220147367A1 (en) Method and System for Automation Tool Set for Server Maintenance Actions
CN109189680B (zh) 一种应用发布和配置的系统及方法
CN112084008B (zh) 一种基于容器技术快速部署云管系统的方法
CN109240716B (zh) 一种大数据平台版本管理与快速迭代部署方法及系统
CN111651352B (zh) 一种仓库代码的合并方法及装置
CN111786810A (zh) 一种大规模测试床节点的自动化部署方法及系统
CN115718606A (zh) 一种服务器自动化持续集成与部署的方法及系统
CN114385211A (zh) 一种基于GitOps的多云环境升级方法及控制平台
Yiran et al. Design and implementation of continuous integration scheme based on Jenkins and Ansible
CN108616391A (zh) 服务器端进行设备固件升级的方法及系统
CN103026337A (zh) 配给组件的提取和重构
EP4162649B1 (en) Stable references for network function life cycle management automation
CN112130889A (zh) 资源的管理方法和装置、存储介质、电子装置
US20100281294A1 (en) Method of managing operations for administration, maintenance and operational upkeep, management entity and corresponding computer program product
CN115129574A (zh) 一种代码测试方法和装置
CN116719546A (zh) 一种远程服务器代码更新系统及方法
CN114879977A (zh) 应用部署方法、装置及存储介质
CN113986423A (zh) 一种弹框显示方法、系统及存储介质和终端设备
US20240152372A1 (en) Virtual representations of endpoints in a computing environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination