CN112965785B - 基于容器的微服务应用开发方法及开发平台 - Google Patents

基于容器的微服务应用开发方法及开发平台 Download PDF

Info

Publication number
CN112965785B
CN112965785B CN202110247037.4A CN202110247037A CN112965785B CN 112965785 B CN112965785 B CN 112965785B CN 202110247037 A CN202110247037 A CN 202110247037A CN 112965785 B CN112965785 B CN 112965785B
Authority
CN
China
Prior art keywords
mirror image
deployment
container
configuration
micro
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.)
Active
Application number
CN202110247037.4A
Other languages
English (en)
Other versions
CN112965785A (zh
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.)
Shiheng Shanghai Technology Service Co ltd
Original Assignee
Shiheng Shanghai Technology Service 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 Shiheng Shanghai Technology Service Co ltd filed Critical Shiheng Shanghai Technology Service Co ltd
Priority to CN202110247037.4A priority Critical patent/CN112965785B/zh
Publication of CN112965785A publication Critical patent/CN112965785A/zh
Application granted granted Critical
Publication of CN112965785B publication Critical patent/CN112965785B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明揭示了一种基于容器的微服务应用开发方法,包括:代码编译步骤、镜像构建步骤、镜像部署步骤和应用监控步骤。本发明还揭示了一种基于容器的微服务应用开发平台,包括:平台数据库、可视化界面组件、后配置组件和协调组件。本发明的基于容器的微服务应用开发方法和开发平台可以统一管理微服务应用的开发、部署、日志收集等动作。针对不同开发语言和开发方式的微服务应用,平台的管理流程可以利用容器化技术手段,对该过程进行抽象和统一。开发环节中由于各个步骤会使用到业内通用的第三方软件,为了降低学习相对复杂的第三方软件所增加的额外的学习成本,平台还进行了集成,解决复杂性问题,简化使用。

Description

基于容器的微服务应用开发方法及开发平台
技术领域
本发明涉及软件技术领域,更具体地说,涉及Paas技术领域。
背景技术
随着SaaS(Software as a Service)模式的快速发展,作为SaaS开发支持的PaaS(Platform as a Service)也随之获得了快速发展。因为SaaS微服务应用会在各种不同的操作系统、运行环境下工作,因此开发过程也会随之存在很多差异。对于软件开发企业来说,在不同的操作系统、运行环境下开发SaaS需要研发人员付出额外的学习成本,这就使得开发成本增加,开发周期变长。
通过PaaS的应用可以改善这个问题,提供统一的开发平台,在开发平台上以统一的语言和数据格式进行开发,然后再针对不同操作系统、运行环境进行微调之后部署,可以有效降低开发成本、缩短开发周期。
发明内容
根据本发明的一实施例,提出一种基于容器的微服务应用开发方法,包括如下的步骤:
代码编译步骤,使用代码仓库为微服务应用管理代码;
镜像构建步骤,以可视化界面根据设定的镜像构建流程为代码构建镜像,并将构建的镜像推送到镜像仓库,镜像是适用于容器集群的容器镜像;
镜像部署步骤,以可视化界面接受部署指令,依据部署指令产生期望部署配置,将容器镜像部署到容器集群并跟踪部署状态,以可视化界面跟踪部署状态并进行调整,使得部署状态与期望部署配置相一致;
应用监控步骤,在容器镜像部署完毕,微服务应用启动工作后,追踪微服务应用的运行过程。
在一个实施例中,该基于容器的微服务应用开发方法还包括:
应用创建步骤,在平台数据库中创建微服务应用并为该应用关联对应的代码仓库,应用创建步骤在代码编译步骤之前执行。
在一个实施例中,该基于容器的微服务应用开发方法还包括:镜像构建配置步骤,镜像构建配置步骤创建镜像构建流水线,镜像构建流水线定义镜像构建流程,包括:
代码拉取步骤,从代码仓库拉取新的代码;
本地程序构建步骤,识别代码所使用的语言,使用本地语言构建本地程序;
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下;
本地镜像构建步骤,基于本地程序构建本地镜像,所述本地镜像是适用于容器集群的容器镜像;
镜像推送步骤,将本地镜像推送到镜像仓库;
其中,镜像构建配置步骤中生成可视化界面引导镜像构建流水线的创建。
在一个实施例中,镜像部署步骤包括:
当次部署接受步骤,生成可视化界面并接受当次部署,产生当次部署配置;
期望部署计算步骤,基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置;
容器集群部署步骤,根据期望部署配置生成容器集群能够识别的部署数据,将容器镜像部署到容器集群;
部署调整步骤,获取容器集群在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,其中,部署调整的过程生成可视化界面。
在一个实施例中,该基于容器的微服务应用开发方法还包括:镜像部署配置步骤,镜像部署配置步骤中生成可视化界面,设置微服务应用的运行环境的环境变量和启动参数。
在一个实施例中,应用监控步骤包括收集容器日志,包括如下的步骤:
部署并配置日志客户端;
微服务应用启用日志收集并配置关键环境变量;
日志客户端基于关键环境变量发现相应的微服务应用;
日志客户端为微服务应用收集日志。
根据本发明的一实施例,提出一种基于容器的微服务应用开发平台,包括:平台数据库、可视化界面组件、后配置组件和协调组件。平台数据库以YAML格式存储数据。可视化界面组件生成可视化界面,通过可视化界面接收指令并呈现进度。后端配置组件依据可视化界面接收的指令生成配置文件,配置文件为YAML格式。协调组件与第三方组件对接,协调组件依据配置文件与第三方组件进行数据交换和格式转换,并根据配置文件调整第三方组件的运行状态,其中第三方组件包括:代码仓库、镜像构建工具和镜像仓库、容器集群和应用监控组件。代码仓库用于为微服务应用管理代码。可视化界面组件通过交互确定镜像构建流程,后端配置组件生成镜像构建流程的配置文件,协调组件将镜像构建流程的配置文件推送给镜像构建工具,镜像构建工具根据镜像构建流程为所述代码构建镜像,并将构建的镜像推送到镜像仓库,镜像是适用于容器集群的容器镜像。可视化界面组件接受部署指令,后端配置组件部署指令产生期望部署配置,协调组件将容器镜像部署到容器集群并跟踪部署状态,协调组件对部署状态进行调整,使得部署状态与期望部署配置相一致,可视化组件呈现部署状态的调整过程。在容器镜像部署完毕,微服务应用启动工作后,应用监控组件追踪微服务应用的运行过程并反馈给协调组件。
在一个实施例中,代码仓库是Gitlab,在平台数据库中创建微服务应用时为该应用关联常用Git分支。
在一个实施例中,镜像构建工具为Jenkins,镜像构建流水线为Jenkins流水线,可视化界面组件以可视化界面引导镜像构建流水线的创建,镜像构建流水线定义镜像构建流程,包括:
代码拉取步骤,从代码仓库拉取新的代码;
本地程序构建步骤,基于代码使用本地语言构建本地程序;
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下;
本地镜像构建步骤,基于本地程序构建本地镜像,所述本地镜像是适用于容器集群的容器镜像;
镜像推送步骤,将本地镜像推送到镜像仓库;
后端配置组件按照所创建的镜像构建流水线生成镜像构建流程的配置文件,协调组件将镜像构建流程的配置文件推送给Jenkins,Jenkins生成Jenkins流水线实现镜像构建流水线的功能。
在一个实施例中,协调组件将镜像构建流程的配置文件推送给Jenkins以生成Jenkins流水线包括:
YAML构建检查,检查YAML各项配置;
载入YAML配置,协调组件加载各YAML配置文件;
判断是否使用模板生成Jenkins流水线;
如果使用模板生成Jenkins流水线,则加载模板并配置,基于模板产生Jenkins流水线,将Jenkins流水线推送到Jenkins;
如果不使用模板,则直接对Jenkins进行配置以生成Jenkins流水线;
记录并更新该Jenkins流水线的名称。
在一个实施例中,可视化界面组件生成可视化界面以接受当次部署,后端配置组件产生当次部署配置;
后端配置组件基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置;
协调组件根据期望部署配置生成容器集群能够识别的部署数据,并将容器镜像部署到容器集群,协调组件获取容器集群在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,部署调整的过程反馈给可视化界面组件在可视化界面上呈现,所述容器集群是Kubernetes。
在一个实施例中,可视化界面组件生成可视化界面以设置微服务应用的运行环境的环境变量和启动参数,后端配置组件将环境变量和启动参数加载到期望部署配置中。
在一个实施例中,应用监控组件包括日志客户端LogTail,LogTail收集容器日志,包括:
部署并配置日志客户端LogTail;
微服务应用启用日志收集并配置关键环境变量;
日志客户端LogTail基于关键环境变量发现相应的微服务应用;
日志客户端LogTail为微服务应用收集日志并反馈给协调组件。
本发明的基于容器的微服务应用开发方法和开发平台可以统一管理微服务应用的开发、部署、日志收集等动作。针对不同开发语言和开发方式的微服务应用,平台的管理流程可以利用容器化技术手段,对该过程进行抽象和统一。开发环节中由于各个步骤会使用到业内通用的第三方软件,为了降低学习相对复杂的第三方软件所增加的额外的学习成本,平台还进行了集成,解决复杂性问题,简化使用。
附图说明
图1揭示了根据本发明的一实施例的基于容器的微服务应用开发方法的流程图。
图2揭示了根据本发明的一实施例的基于容器的微服务应用开发平台的结构框图。
图3揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中应用创建步骤的执行过程。
图4揭示了本发明在应用创建步骤所提供的可视化界面。
图5a和图5b揭示了本发明在镜像构建配置步骤所提供的可视化界面。
图6揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中协调组件将创建Jenkins流水线的执行过程。
图7揭示了本发明在镜像构建步骤所提供的可视化界面。
图8揭示了本发明在镜像部署配置步骤所提供的可视化界面。
图9揭示了本发明在镜像部署步骤所提供的可视化界面。
图10揭示了根据本发明的一实施例的基于容器的微服务应用开发平台在镜像部署过程中的运行模式。
图11揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中收集容器日志的执行过程。
具体实施方式
图1揭示了根据本发明的一实施例的基于容器的微服务应用开发方法的流程图。参考图1所示,该基于容器的微服务应用开发方法包括如下的几个步骤,这些步骤中部分为主线步骤,还有部分为配置的或者辅助的步骤:
S1、应用创建步骤。应用创建步骤S1是首次创建微服务应用时会用到的步骤。应用创建步骤S1在平台数据库中创建微服务应用并为该应用关联对应的代码仓库。在一个实施例中,应用创建步骤S1以可视化界面的方式呈现。图3揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中应用创建步骤的执行过程。图4揭示了本发明在应用创建步骤所提供的可视化界面。参考图3所示,应用创建步骤S1的执行过程如下:
填写信息;
判断是否需要创建新的代码仓库,在一个实施例中,代码仓库使用第三方组件Gitlab。
如果判断结果不需要创建新的代码仓库而是使用已有的Git及分支,则会绑定已有的Git及分支。
如果判断结果是需要创建新的代码仓库,则提示创建新的代码仓库。
参考图4所示,在应用创建步骤所提供的可视化界面中:
名称、负责人、开发语言和应用描述为所需要填写的信息。
Gitlab Project接口为与代码仓库Gitlab关联的接口,通过Gitlab Project接口将代码仓库关联到平台。
如果使用已有的Git及分支,将Git地址复制到Gitlab Project,以绑定已有的Git及分支。
如果是创建新的代码仓库,则点击Gitlab Project接口右侧的“新建”按钮,创建新的代码仓库,完成创建后点击“提交”按钮。
可视化界面收集的信息将被平台的后端配置组件维护为如下所描述数据结构,这个数据结构作为基础信息在后续所有的步骤中都会被使用到:
Figure BDA0002964458920000061
需要说明的是,图4所示的可视化界面是实际产生的可视化界面的截图,因此保留了界面原貌,其中的部分内容存在灰度显示,是一种视觉显示的效果。
S2、代码编译步骤。代码编译步骤S2使用代码仓库为微服务应用管理代码。代码编译步骤S2是主线步骤。在一个实施例中,代码编译步骤S2使用代码仓库Gitlab进行代码生成。代码生成是根据微服务应用的具体需求由开发人员完成。
S3、镜像构建步骤。镜像构建步骤S3以可视化界面根据设定的镜像构建流程为代码构建镜像,并将构建的镜像推送到镜像仓库,其中构建的镜像是适用于容器集群的容器镜像。镜像构建步骤S3是主线步骤,参考图1所示,本发明还包括镜像构建配置步骤S31,镜像构建配置步骤S31是为镜像构建步骤配置参数的辅助步骤。在一个实施例中,镜像构建步骤是基于Jenkins流水线完成,本发明的平台支持直接由运维人员编写Jenkins流水线或者由平台提供的模板自动创建流水线。通过平台创建的流水线能完成基本的镜像构建动作,通过运维人员编写的流水线可以提供更专业多样的能力。镜像构建配置步骤S31创建镜像构建流水线,镜像构建流水线定义镜像构建流程,镜像构建流程包括如下几个步骤:
代码拉取步骤,从代码仓库Gitlab拉取新的代码,比如最新的分支代码或者常用Git分支。
本地程序构建步骤,基于代码所使用的语言,重新使用本地语言构建本地程序。在一个实施例中,平台本地程序和数据格式都使用YAML格式。
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下。在一个是实例中,镜像工具使用Docker。
本地镜像构建步骤,基于本地程序构建本地镜像,在一个实施例中,使用DockerBuild完成本地镜像的构建。所构建的本地镜像是适用于容器集群的容器镜像。
镜像推送步骤,将本地镜像推送到镜像仓库。在一个实施例中,镜像仓库使用阿里云镜像仓库。
上面所定义的镜像构建流水线需要被实现为Jenkins流水线,编写Jenkins流水线具有一定的学习成本,通常Jenkins流水线代码如下:
Figure BDA0002964458920000081
为了简化开发人员的工作,降低学习成本,本发明在镜像构建配置步骤S31中生成可视化界面引导镜像构建流水线的创建。可视化界面对Jenkins做了概念抽象,提供了一系列的模板,基于模板的创建方式可以降低相应的Jenkins学习成本。图5a和图5b揭示了本发明在镜像构建配置步骤所提供的可视化界面。参考图5a所示,本发明提供了引导流程“选择构建模板”、“配置模板参数”。还提供了“SpringBoot构建模板”、“Python构建模板”、“前端Node.js模板”、“使用已有Jenkins任务”等几个模块来进行抽象。图5b继续以“SpringBoot构建模板”为例,在“SpringBoot构建模板”中,本发明提供了带有操作开关的“配置选项”和“必填参数”,来对“SpringBoot构建模板”的配置和参数进行抽象和引导,以简化配置的过程。类似的,图5a和图5b所示的可视化界面是实际产生的可视化界面的截图,因此保留了界面原貌,其中的部分内容存在灰度显示,是一种视觉显示的效果。
在完成镜像构建配置步骤S31构建镜像构建流程后,在镜像构建步骤S3中镜像构建流程被推送给Jenkins以生成Jenkins流水线。图6揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中协调组件将创建Jenkins流水线的执行过程,参考图6所示,Jenkins以生成Jenkins流水线包括:
YAML构建检查,检查YAML各项配置。
载入YAML配置,协调组件加载各YAML配置文件,比如基本信息YAML、Jenkins服务器配置YAML等。
判断是否使用模板生成Jenkins流水线。
如果使用模板生成Jenkins流水线,则加载模板并配置,基于模板产生Jenkins流水线,将Jenkins流水线推送到Jenkins。
如果不使用模板,则直接对Jenkins进行配置以生成Jenkins流水线,在图6中这种情况被标识为“外部配置”。
记录并更新该Jenkins流水线的名称。
如果选择基于模板进行配置,那么协调组件PaaSOperator将基于配置参数,产生正确的Jenkins流水线,并将模板化生成的流水线代码复制到Jenkins中。这样可以确保后续镜像构建是正确的。PaaSOperator产生Jenkins流水线并应用到Jenkins的核心代码如下:
Figure BDA0002964458920000091
同样的,本发明在镜像构建步骤中同样提供了可视化界面来进行引导和辅助。图7揭示了本发明在镜像构建步骤所提供的可视化界面。图7所示的界面展示了镜像构建的过程和进度。图7所示的可视化界面是实际产生的可视化界面的截图,因此保留了界面原貌,其中的细节内容与本发明关联不大,所以不进行详细描述,其中的英文缩写是镜像或者流水线的代号,没有技术上的意义,仅是一种名称标识。此外,图7的部分内容存在灰度显示,是一种视觉显示的效果。
S4、镜像部署步骤。镜像部署步骤S4以可视化界面接受部署指令,依据部署指令产生期望部署配置,将容器镜像部署到容器集群并跟踪部署状态,以可视化界面跟踪部署状态并进行调整,使得部署状态与期望部署配置相一致。镜像部署步骤S4是主线步骤,参考图1所示,本发明还包括镜像部署配置步骤S41,镜像部署配置步骤S41是为镜像部署步骤配置参数的辅助步骤。镜像部署配置步骤S41中生成可视化界面,设置微服务应用的运行环境的环境变量和启动参数。在一个实施例中,使用的容器集群是Kubernetes,最终所开发的微服务应用的容器镜像会被部署到Kubernetes的各个系统上。在不同的应用运行环境,应用的启动会有不同的启动参数,包括环境变量等等。这些参数的配置有些比较简单,有些比较专业。而这些参数映射到实际的部署过程需要配置Kubernetes的Deployment资源等文件。由于Kubernetes相关的使用与配置具有较高的学习成本,并且配置项很多,容易出错,而常见实用配置项并不是很多。所以本发明平台也对这部分过程进行了抽象,提供了相应简化的可视化配置版本。图8揭示了本发明在镜像部署配置步骤所提供的可视化界面。界面中提供的配置项都是绝大部分开发人员可以理解的配置。镜像部署步骤S4会基于镜像部署配置步骤S41中的配置,翻译为真正的Kubernetes容器集群能够理解的语言并进行部署。图8所示的界面展示了镜像部署的常用参数和配置项。图8所示的可视化界面是实际产生的可视化界面的截图,因此保留了界面原貌,其中的细节内容与本发明关联不大,所以不进行详细描述,其中的常用参数和配置项的名称和选项都是示例,与本发明的技术方案没有直接的联系。此外,图8的部分内容存在灰度显示,是一种视觉显示的效果。
在一个实施例中,镜像部署步骤S4包括下述的步骤:
当次部署接受步骤,生成可视化界面并接受当次部署,产生当次部署配置。
期望部署计算步骤,基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置。
容器集群部署步骤,根据期望部署配置生成容器集群能够识别的部署数据,将容器镜像部署到容器集群。
部署调整步骤,获取容器集群在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,其中,部署调整的过程生成可视化界面。
本发明在镜像部署构建步骤中同样提供了可视化界面来进行引导和辅助。图9揭示了本发明在镜像部署步骤所提供的可视化界面。图9所示的界面展示了镜像部署的过程和进度。图9所示的可视化界面是实际产生的可视化界面的截图,因此保留了界面原貌,其中的细节内容与本发明关联不大,所以不进行详细描述,其中的英文缩写是镜像或者流水线的代号,没有技术上的意义,仅是一种名称标识。此外,图9的部分内容存在灰度显示,是一种视觉显示的效果。
S5、应用监控步骤。应用监控步骤S5在容器镜像部署完毕,微服务应用启动工作后,追踪微服务应用的运行过程。在一个实施例中,应用监控步骤包括收集容器日志,使用阿里云SLS和LogTail来进行日志收集。图11揭示了根据本发明的一实施例的基于容器的微服务应用开发方法中收集容器日志的执行过程。参考图11所示,包括如下的步骤:
部署并配置日志客户端LogTail。其中包括两个阶段:部署阿里云LogTail和进行LogTail配置。
微服务应用启用日志收集并配置关键环境变量。也包括两个阶段:微服务应用申明启用日志收集,部署时配置关键环境变量。
日志客户端LogTail基于关键环境变量发现相应的微服务应用。
日志客户端LogTail为微服务应用收集日志。
查看日志。
本发明还提出一种基于容器的微服务应用开发平台,图2揭示了根据本发明的一实施例的基于容器的微服务应用开发平台的结构框图。参考图2所示,该基于容器的微服务应用开发平台包括:
平台数据库(图中未示出),平台数据库以YAML格式存储数据。
可视化界面组件101,可视化界面组件101生成可视化界面,通过可视化界面接收指令并呈现进度。
后端配置组件102,后端配置组件102依据可视化界面接收的指令生成配置文件,配置文件为YAML格式。在一个实施例中,后端配置组件102以后端服务器Api Server的方式实现。
协调组件103。协调组件103与第三方组件对接,协调组件103依据配置文件与第三方组件进行数据交换和格式转换,并根据配置文件调整第三方组件的运行状态。在一个实施例中,协调组件103以PaaS Operator的方式实现。继续参考图2所示,与协调组件103进行数据交换的第三方组件包括:
代码仓库Gtilab,代码仓库用于为微服务应用管理代码。在一个实施例中代码仓库是Gitlab,在平台数据库中创建微服务应用时为该应用关联常用的Git分支。也可以关联对应的Git分支或者最新的Git分支。
镜像构建工具Jenkins和镜像仓库。可视化界面组件101通过交互确定镜像构建流程,后端配置组件102生成镜像构建流程的配置文件,协调组件103将镜像构建流程的配置文件推送给镜像构建工具Jenkins,镜像构建工具Jenkins根据镜像构建流程为代码构建镜像,并将构建的镜像推送到镜像仓库,镜像是适用于容器集群的容器镜像。在一个实施例中,,镜像构建工具是Jenkins,镜像仓库是阿里云镜像仓库。
容器集群Kubernetes,可视化界面组件101接受部署指令,后端配置组件102部署指令产生期望部署配置,协调组件103将容器镜像部署到容器集群Kubernetes并跟踪部署状态,协调组件103对部署状态进行调整,使得部署状态与期望部署配置相一致,可视化组件呈现部署状态的调整过程。
应用监控组件SLS,在容器镜像部署完毕,微服务应用启动工作后,应用监控组件追踪微服务应用的运行过程并反馈给协调组件。
代码仓库Gtilab与微服务应用进行关联,关联的过程参考前面对于应用创建步骤S1的描述。使用代码仓库Gitlab进行代码生成的过程可参考前面对于代码编译步骤S2的描述。
镜像构建工具为Jenkins,镜像构建流水线为Jenkins流水线,可视化界面组件以可视化界面引导镜像构建流水线的创建,镜像构建流水线定义镜像构建流程,包括:
代码拉取步骤,从代码仓库拉取新的代码;
本地程序构建步骤,基于代码所使用的语言,重新使用本地语言构建本地程序;
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下;
本地镜像构建步骤,基于本地程序构建本地镜像,所述本地镜像是适用于容器集群的容器镜像;
镜像推送步骤,将本地镜像推送到镜像仓库,比如阿里云镜像仓库。
后端配置组件102按照所创建的镜像构建流水线生成镜像构建流程的配置文件,协调组件103将镜像构建流程的配置文件推送给Jenkins,Jenkins生成Jenkins流水线实现镜像构建流水线的功能。协调组件将镜像构建流程的配置文件推送给Jenkins以生成Jenkins流水线包括:
YAML构建检查,检查YAML各项配置;
载入YAML配置,协调组件加载各YAML配置文件;
判断是否使用模板生成Jenkins流水线;
如果使用模板生成Jenkins流水线,则加载模板并配置,基于模板产生Jenkins流水线,将Jenkins流水线推送到Jenkins;
如果不使用模板,则直接对Jenkins进行配置以生成Jenkins流水线;
记录并更新该Jenkins流水线的名称。
配置和构建镜像的过程可参考前面对于镜像构建步骤S3和镜像构建配置步骤S31的描述。
图10揭示了根据本发明的一实施例的基于容器的微服务应用开发平台在镜像部署过程中的运行模式。即从组件的角度描述了镜像部署步骤S4的执行过程,参考图10所示,镜像部署的过程如下:
可视化界面组件101生成可视化界面以接受当次部署,后端配置组件102产生当次部署配置,当次部署配置是YAML格式文件,图中标记为当次部署配置YAML。
后端配置组件102基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置。微服务应用的运行环境包括各种格式配置信息,均为YAML格式文件,在图中示例性地列举了运行环境的格式配置文件:基本信息YAML、环境YAML和部署配置YAML。运行环境的格式配置文件结合当次部署配置YAML,获得期望的最终部署配置信息,即期望部署配置。
协调组件103根据期望的最终部署配置信息生成容器集群能够识别的部署数据,在图中表示为通过格式转换生成Kubernetes格式的YAML信息。然后并将容器镜像部署到容器集群Kubernetes。协调组件103获取容器集群Kubernetes在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,部署调整的过程反馈给可视化界面组件在可视化界面上呈现。在一个实施例中,协调组件103由PaaSOperator实现,PaaSOperator采用和Kubernetes类似的实现逻辑,通过对Kubernetes进行扩展,基于期望状态和实际状态差异的比对,持续的控制容器集群状态向着期望状态靠近,直到尽可能完成期望部署,这种方式相对于一般的只是发出一条部署动作的方式可以更好的保证部署的成功。如果因为擅自修改Kubernetes配置、部署失败等各种原因导致容器集群的实际状态最终和平台不一致,PaaSOperator也将基于状态事件和周期性的对比自动发现不一致,并自动纠正。Kubernetes本身是没有界面的,并不方便使用,本发明的平台提供了基本的可视化流程管理。并且平台将背后复杂的逻辑进行了包装处理,在提供了简单易用的界面的情况下,尽可能的利用Kubernetes提供了安全可靠的部署过程。这里的外部依赖是Kubernetes容器集群、阿里云镜像仓库。平台的PaaSOperator负责进行背后的流程控制和状态追踪。
在进行部署之前,可视化界面组件101生成可视化界面以设置微服务应用的运行环境的环境变量和启动参数,后端配置组件102将环境变量和启动参数加载到期望部署配置中。进行镜像部署配置的过程可以参考前面对于镜像部署配置步骤S41的描述。
在一个实施例中,应用监控组件是阿里云SLS,还使用日志客户端LogTail,LogTail收集容器日志,包括:部署并配置日志客户端LogTail;微服务应用启用日志收集并配置关键环境变量;日志客户端LogTail基于关键环境变量发现相应的微服务应用;日志客户端LogTail为微服务应用收集日志并反馈给协调组件。
在一个具体实现中,应用监控的过程如下:运维人员在Kubernetes容器集群维护的过程中,提前按阿里云官方说明完成LogTail收集程序的部署与配置。平台管理的微服务应用可以配置是否启用SLS日志收集,对于启用了SLS日志收集功能的应用,相当于在部署配置Yaml中记录了日志收集相关的参数。PaaSOperator作为协调程序,将发现参数被配置,那么在应用到Kubernetes容器集群的部署文件中将配置相应的环境变量。LogTail程序将自动有对应环境变量的应用,然后完成日志的收集动作。LogTail的这种能力参考了阿里云的官方描述。收集容器日志的过程也可以参考前面对于应用监控步骤S5的描述。
本发明的基于容器的微服务应用开发方法和开发平台可以统一管理微服务应用的开发、部署、日志收集等动作。针对不同开发语言和开发方式的微服务应用,平台的管理流程可以利用容器化技术手段,对该过程进行抽象和统一。开发环节中由于各个步骤会使用到业内通用的第三方软件,为了降低学习相对复杂的第三方软件所增加的额外的学习成本,平台还进行了集成,解决复杂性问题,简化使用。
还需要注意的是,以上所列举的实施例仅为本发明的具体实施例。显然本发明不局限于以上实施例,随之做出的类似变化或变形是本领域技术人员能从本发明公开的内容直接得出或者很容易便联想到的,均应属于本发明的保护范围。上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (9)

1.一种基于容器的微服务应用开发方法,其特征在于,包括:
代码编译步骤,使用代码仓库为微服务应用管理代码;
镜像构建步骤,以可视化界面根据设定的镜像构建流程为所述代码构建镜像,并将构建的镜像推送到镜像仓库,所述镜像是适用于容器集群的容器镜像;
镜像构建配置步骤,镜像构建配置步骤创建镜像构建流水线,镜像构建流水线定义镜像构建流程,在所述镜像构建配置步骤中生成可视化界面引导镜像构建流水线的创建;
镜像部署步骤,以可视化界面接受部署指令,依据部署指令产生期望部署配置,将容器镜像部署到容器集群并跟踪部署状态,以可视化界面跟踪部署状态并进行调整,使得部署状态与期望部署配置相一致;所述镜像部署步骤具体包括:当次部署接受步骤,生成可视化界面并接受当次部署,产生当次部署配置;期望部署计算步骤,基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置;容器集群部署步骤,根据期望部署配置生成容器集群能够识别的部署数据,将容器镜像部署到容器集群;部署调整步骤,获取容器集群在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,其中,部署调整的过程生成可视化界面;
镜像部署配置步骤,镜像部署配置步骤中生成可视化界面,设置微服务应用的运行环境的环境变量和启动参数;
应用监控步骤,在容器镜像部署完毕,微服务应用启动工作后,追踪微服务应用的运行过程。
2.如权利要求1所述的基于容器的微服务应用开发方法,其特征在于,还包括:
应用创建步骤,在平台数据库中创建微服务应用并为该应用关联对应的代码仓库,应用创建步骤在代码编译步骤之前执行。
3.如权利要求1所述的基于容器的微服务应用开发方法,其特征在于,镜像构建配置步骤,镜像构建配置步骤创建镜像构建流水线,镜像构建流水线定义镜像构建流程,包括:
代码拉取步骤,从代码仓库拉取新的代码;
本地程序构建步骤,识别代码所使用的语言,使用本地语言构建本地程序;
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下;
本地镜像构建步骤,基于本地程序构建本地镜像,所述本地镜像是适用于容器集群的容器镜像;
镜像推送步骤,将本地镜像推送到镜像仓库;
其中,镜像构建配置步骤中生成可视化界面引导镜像构建流水线的创建。
4.如权利要求1所述的基于容器的微服务应用开发方法,其特征在于,应用监控步骤包括收集容器日志,包括如下的步骤:
部署并配置日志客户端;
微服务应用启用日志收集并配置关键环境变量;
日志客户端基于关键环境变量发现相应的微服务应用;
日志客户端为微服务应用收集日志。
5.一种基于容器的微服务应用开发平台,其特征在于,包括:
平台数据库,平台数据库以YAML格式存储数据;
可视化界面组件,可视化界面组件生成可视化界面,通过可视化界面接收指令并呈现进度,可视化界面组件生成可视化界面以设置微服务应用的运行环境的环境变量和启动参数,可视化界面组件生成可视化界面以接受当次部署;
后端配置组件,后端配置组件依据可视化界面接收的指令生成配置文件,配置文件为YAML格式,后端配置组件将环境变量和启动参数加载到期望部署配置中,后端配置组件产生当次部署配置,后端配置组件基于微服务应用的运行环境和当次部署配置,计算得到期望部署配置;
协调组件,协调组件与第三方组件对接,协调组件依据配置文件与第三方组件进行数据交换和格式转换,并根据配置文件调整第三方组件的运行状态,其中第三方组件包括:
代码仓库,代码仓库用于为微服务应用管理代码;
镜像构建工具和镜像仓库,可视化界面组件通过交互确定镜像构建流程,后端配置组件生成镜像构建流程的配置文件,协调组件将镜像构建流程的配置文件推送给镜像构建工具,镜像构建工具根据镜像构建流程为所述代码构建镜像,并将构建的镜像推送到镜像仓库,所述镜像是适用于容器集群的容器镜像;
容器集群,可视化界面组件接受部署指令,后端配置组件部署指令产生期望部署配置,协调组件将容器镜像部署到容器集群并跟踪部署状态,协调组件对部署状态进行调整,使得部署状态与期望部署配置相一致,可视化组件呈现部署状态的调整过程;以及
协调组件根据期望部署配置生成容器集群能够识别的部署数据,并将容器镜像部署到容器集群,协调组件获取容器集群在部署容器镜像时的实际状态,将实际状态与期望部署配置相比较,按照实际状态趋向期望部署配置的方向对部署进行调整,直至容器集群在部署容器镜像的实际状态与期望部署配置相一致,部署调整的过程反馈给可视化界面组件在可视化界面上呈现,所述容器集群是Kubernetes;
应用监控组件,在容器镜像部署完毕,微服务应用启动工作后,应用监控组件追踪微服务应用的运行过程并反馈给协调组件。
6.如权利要求5所述的基于容器的微服务应用开发平台,其特征在于,
所述代码仓库是Gitlab,在平台数据库中创建微服务应用时为该应用关联常用Git分支。
7.如权利要求5所述的基于容器的微服务应用开发平台,其特征在于,
镜像构建工具为Jenkins,镜像构建流水线为Jenkins流水线,可视化界面组件以可视化界面引导镜像构建流水线的创建,镜像构建流水线定义镜像构建流程,包括:
代码拉取步骤,从代码仓库拉取新的代码;
本地程序构建步骤,基于代码使用本地语言构建本地程序;
本地程序复制步骤,将所构建的本地程序复制到镜像工作目录下;
本地镜像构建步骤,基于本地程序构建本地镜像,所述本地镜像是适用于容器集群的容器镜像;
镜像推送步骤,将本地镜像推送到镜像仓库;
后端配置组件按照所创建的镜像构建流水线生成镜像构建流程的配置文件,协调组件将镜像构建流程的配置文件推送给Jenkins,Jenkins生成Jenkins流水线实现镜像构建流水线的功能。
8.如权利要求7所述的基于容器的微服务应用开发平台,其特征在于,协调组件将镜像构建流程的配置文件推送给Jenkins以生成Jenkins流水线包括:
YAML构建检查,检查YAML各项配置;
载入YAML配置,协调组件加载各YAML配置文件;
判断是否使用模板生成Jenkins流水线;
如果使用模板生成Jenkins流水线,则加载模板并配置,基于模板产生Jenkins流水线,将Jenkins流水线推送到Jenkins;
如果不使用模板,则直接对Jenkins进行配置以生成Jenkins流水线;
记录并更新该Jenkins流水线的名称。
9.如权利要求5所述的基于容器的微服务应用开发平台,其特征在于,应用监控组件包括日志客户端LogTail,LogTail收集容器日志,包括:
部署并配置日志客户端LogTail;
微服务应用启用日志收集并配置关键环境变量;
日志客户端LogTail基于关键环境变量发现相应的微服务应用;
日志客户端LogTail为微服务应用收集日志并反馈给协调组件。
CN202110247037.4A 2021-03-05 2021-03-05 基于容器的微服务应用开发方法及开发平台 Active CN112965785B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110247037.4A CN112965785B (zh) 2021-03-05 2021-03-05 基于容器的微服务应用开发方法及开发平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110247037.4A CN112965785B (zh) 2021-03-05 2021-03-05 基于容器的微服务应用开发方法及开发平台

Publications (2)

Publication Number Publication Date
CN112965785A CN112965785A (zh) 2021-06-15
CN112965785B true CN112965785B (zh) 2023-06-13

Family

ID=76276719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110247037.4A Active CN112965785B (zh) 2021-03-05 2021-03-05 基于容器的微服务应用开发方法及开发平台

Country Status (1)

Country Link
CN (1) CN112965785B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656010B (zh) * 2021-08-31 2024-01-30 浪潮通用软件有限公司 一种微服务自动创建代码仓库的方法、系统、设备和介质
CN114024951A (zh) * 2021-09-30 2022-02-08 威胜信息技术股份有限公司 一种基于云边协同的电力边缘异构部署方法
KR102667058B1 (ko) * 2021-10-19 2024-05-17 숭실대학교산학협력단 쿠버네티스용 yaml 파일 관리 방법 및 장치
CN114827177B (zh) * 2022-04-22 2024-03-08 杭州萤石软件有限公司 一种分布式文件系统的部署方法、装置及电子设备
CN114924833B (zh) * 2022-05-06 2024-05-17 华东师范大学 一种用户无感的微服务容器部署方法及其部署装置
CN115113909A (zh) * 2022-06-29 2022-09-27 北京永信至诚科技股份有限公司 一种项目自动化运维方法、系统、电子设备及存储介质
CN115016781A (zh) * 2022-07-14 2022-09-06 北京智芯半导体科技有限公司 嵌入式软件开发方法、装置、电子设备及可读存储介质
CN116028038B (zh) * 2023-03-28 2023-06-09 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件
CN116523077B (zh) * 2023-06-27 2023-09-15 国网汇通金财(北京)信息科技有限公司 一种基于容器技术的预警方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106997297A (zh) * 2017-03-31 2017-08-01 广东亿迅科技有限公司 一种基于DevOps的软件开发管理平台及方法
KR101826498B1 (ko) * 2017-05-02 2018-02-07 나무기술 주식회사 클라우드 플랫폼 시스템
CN109597644A (zh) * 2018-12-05 2019-04-09 江苏风云科技服务有限公司 项目部署方法及装置
CN110321152A (zh) * 2019-07-04 2019-10-11 青岛华正信息技术股份有限公司 一种软件开发平台
CN111309441A (zh) * 2020-02-19 2020-06-19 北京中数智汇科技股份有限公司 一种基于Jenkins实现DevOps的微服务部署方法
CN111352653A (zh) * 2020-03-06 2020-06-30 中国工商银行股份有限公司 基于PaaS云平台服务器的系统开发方法及服务器
CN111399897A (zh) * 2020-02-21 2020-07-10 北京值得买科技股份有限公司 基于kubernetes的应用发布方法以及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106997297A (zh) * 2017-03-31 2017-08-01 广东亿迅科技有限公司 一种基于DevOps的软件开发管理平台及方法
KR101826498B1 (ko) * 2017-05-02 2018-02-07 나무기술 주식회사 클라우드 플랫폼 시스템
CN109597644A (zh) * 2018-12-05 2019-04-09 江苏风云科技服务有限公司 项目部署方法及装置
CN110321152A (zh) * 2019-07-04 2019-10-11 青岛华正信息技术股份有限公司 一种软件开发平台
CN111309441A (zh) * 2020-02-19 2020-06-19 北京中数智汇科技股份有限公司 一种基于Jenkins实现DevOps的微服务部署方法
CN111399897A (zh) * 2020-02-21 2020-07-10 北京值得买科技股份有限公司 基于kubernetes的应用发布方法以及系统
CN111352653A (zh) * 2020-03-06 2020-06-30 中国工商银行股份有限公司 基于PaaS云平台服务器的系统开发方法及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
云原生应用实现规范-初识Operator;阿里巴巴云原生;《阿里巴巴云开发者社区》;20200907;全文 *

Also Published As

Publication number Publication date
CN112965785A (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
CN112965785B (zh) 基于容器的微服务应用开发方法及开发平台
CN111142879B (zh) 软件集成发布方法及自动运维平台
US7620885B2 (en) Automatic generation of documentation for component-based computing solution
US8656346B2 (en) Converting command units into workflow activities
EP2245532B1 (en) Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using the platform
CN101937336B (zh) 软件资产打包和消费方法和系统
US20100077386A1 (en) System and a method for cross-platform porting of business applications and making them contexually-aware on target platforms
US20060112383A1 (en) Method and apparatus for solution-template based deployment and management of an integration solution
CN107885551A (zh) 一种服务部署方法、装置、可读介质及存储控制器
US20060230314A1 (en) Automatic generation of solution deployment descriptors
WO2009140154A1 (en) Methods and systems for developing, debugging, and executing data integration applications
EP1292886A1 (en) Methods and systems for supporting and deploying distributed computing components
EP2697715A1 (en) System and method for mobile application development
CN113505082B (zh) 应用程序测试方法及装置
CN114461182A (zh) 流水线构建的方法、装置、电子设备及计算机可读存储介质
CN114461269A (zh) 软件开发发布管理方法、装置、设备及存储介质
CN113946323A (zh) 基于微服务体系的在线开发方法、装置、设备及存储介质
CN115658496A (zh) 可扩展的Web自动化测试方法、系统、设备及存储介质
EP4365731A1 (en) Device deployment method for ai model, system, and storage medium
CN114265595B (zh) 一种基于智能合约的云原生应用开发与部署系统和方法
CN113110872B (zh) 一种Android自动化配置构建平台及操作方法
CN114115890A (zh) 微服务开发方法及系统
Friese et al. GDT: A toolkit for grid service development
CN114428621A (zh) 一种作业自动化部署方法
CN113791977A (zh) 代码开发的处理方法、装置、电子设备与存储介质

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
GR01 Patent grant
GR01 Patent grant