CN115185542A - 容器化部署方法、装置、***、电子设备及存储介质 - Google Patents

容器化部署方法、装置、***、电子设备及存储介质 Download PDF

Info

Publication number
CN115185542A
CN115185542A CN202210749051.9A CN202210749051A CN115185542A CN 115185542 A CN115185542 A CN 115185542A CN 202210749051 A CN202210749051 A CN 202210749051A CN 115185542 A CN115185542 A CN 115185542A
Authority
CN
China
Prior art keywords
pipeline
container
cpu
deployment
architecture type
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
CN202210749051.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.)
CITIC Aibank Corp Ltd
Original Assignee
CITIC Aibank Corp 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 CITIC Aibank Corp Ltd filed Critical CITIC Aibank Corp Ltd
Priority to CN202210749051.9A priority Critical patent/CN115185542A/zh
Publication of CN115185542A publication Critical patent/CN115185542A/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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

Landscapes

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

Abstract

本公开提供了容器化部署方法、装置、***、电子设备及存储介质。第一方面,根据容器所在节点所使用的CPU的架构类型,构建相应的容器镜像,并使用相应的容器镜像进行部署,从而实现在容器化部署流水线中同时支持部署多种CPU架构类型的容器应用。第二方面,在Kubernetes的容器内支持多用户登录,从而实现容器内部多用户角色的管理。第三方面,在Kubernetes中开发bastion‑register服务与堡垒机进行联动,再通过list‑watch接口实现动态通知堡垒机纳管容器资源。

Description

容器化部署方法、装置、***、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,具体涉及容器化部署方法、装置、***、电子设备及存储介质。
背景技术
目前,容器化部署流水线往往只考虑单一类型的CPU架构,不支持同时部署多种类型的CPU架构的容器应用。
当前物理机和虚拟机的运维管理方式为人们熟悉,将服务器纳管至堡垒机,且服务器内部具备多种用户,然后由堡垒机完成登录的权限划分和登录操作行为的审计。而登录容器内部查看应用信息状态及审计管理是十分必要的,但是目前Kubernetes容器内部不支持多用户登录。容器化与传统服务器部署的最大区别在于POD的名称和IP地址随着每次重启和更新都会改动。如何动态地通知堡垒机POD的上线及销毁没有成熟的解决办法。
因此,有必要提出一种新的技术方案以解决上述至少一个技术问题。
发明内容
本公开提出了容器化部署方法、装置、***、电子设备及存储介质。
第一方面,本公开提供了一种容器化部署方法,该方法包括:
响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;
根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;
根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;
根据所述容器镜像完成容器化部署。
第二方面,本公开提供了一种容器化部署装置,该装置包括:获取单元,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;
确定单元,被配置成根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;
构建单元,被配置成根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;
部署单元,被配置成根据所述容器镜像完成容器化部署。
第三方面,本公开提供了一种容器化部署***,包括请求端和服务端,所述请求端和所述服务端通信连接,其中:
所述请求端,被配置成响应于检测到用户的流水线触发操作,生成流水线触发请求,所述流水线触发请求包括流水线配置信息;
所述服务端,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;根据所述容器镜像完成容器化部署。
在一些可选的实施方式中,所述服务端包括流水线控制器、Jenkins***、Kubernetes***,所述Kubernetes***包括至少两个部署有不同架构类型CPU的节点;以及
所述服务端,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息,根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型,包括:
所述流水线控制器,被配置成响应于接收到请求端发送的流水线触发请求,向所述Kubernetes***发送部署流水线的容器所在节点所使用的CPU的注解字段的获取请求;
所述Kubernetes***,被配置成响应于接收到所述获取请求,向所述流水线控制器发送部署流水线的容器所在节点所使用的CPU的注解字段;
所述流水线控制器,被配置成根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型并发送至所述Jenkins***。
在一些可选的实施方式中,所述根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像,包括:
所述Jenkins***,被配置成响应于接收到所述目标CPU架构类型,向所述Kubernetes***发送jnlp-slave-pod创建请求;
所述Kubernetes***,被配置成响应于接收到所述jnlp-slave-pod创建请求,创建jnlp-slave-pod;
所述jnlp-slave-pod,被配置成执行jenkinsfile流水线,所述执行jenkinsfile流水线包括拉取应用的制品代码,根据所述目标CPU架构类型生成Dockerfile,选择基础镜像,并构建相应的容器镜像上传至镜像仓库。
在一些可选的实施方式中,所述根据所述容器镜像完成容器化部署,包括:
所述jnlp-slave-pod,被配置成通过kubectl命令行工具调用所述Kubernetes***接口完成所述容器化部署。
在一些可选的实施方式中,所述容器内安装有openssh及相关组件,被配置成创建应用用户信息和只读用户信息并制作容器基础镜像,所述应用用户具有对应用进行可读可写可执行操作的权限,所述只读用户具有对应用进行可读操作的权限。
在一些可选的实施方式中,所述***还包括堡垒机,被配置成在所述Kubernetes***中部署堡垒机注册服务,所述堡垒机注册服务具有Kubernetes***的list-watch的RBAC权限;基于Client-go核心工具包Informer,开发bastion-register服务,所述bastion-register服务与所述kube-apiserver之间通过list-watch接口对增量事件和全量资源进行处理,通过触发回调函数以动态通知所述堡垒机纳管容器资源。
第四方面,本公开提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第五方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被一个或多个处理器执行时实现如第一方面中任一实现方式描述的方法。
本公开提供的容器化部署方法、装置、***、电子设备及存储介质,第一方面,根据容器所在节点所使用的CPU的架构类型,构建相应的容器镜像,并使用相应的容器镜像进行部署,从而实现在容器化部署流水线中同时支持部署多种CPU架构类型的容器应用。第二方面,在Kubernetes的容器内支持多用户登录,从而实现容器内部多用户角色的管理。第三方面,在Kubernetes中开发bastion-register服务与堡垒机进行联动,再通过list-watch接口实现动态通知堡垒机纳管容器资源。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开的一个实施例可以应用于其中的示例性***架构图;
图2是根据本公开的容器化部署***的一个实施例的流程图;
图3是根据本公开的容器化部署***中的流水线控制器的一个实施例的流程图;
图4是根据本公开的容器内支持多用户登录的一个实施例的流程图;
图5是根据本公开的POD动态注册堡垒机的一个实施例的流程图;
图6是根据本公开的容器化部署方法的一个实施例的流程图;
图7是根据本公开的容器化部署装置的一个实施例的结构示意图;
图8是适于用来实现本公开的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的容器化部署方法或容器化部署装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、网络102和服务器103。网络102用以在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种容器部署应用、网页浏览器应用等。
终端设备101可以是硬件,也可以是软件。当终端设备101为硬件时,可以是具有显示屏并且支持文本输入的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供容器部署服务),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器103可以是提供各种服务的服务器,例如对终端设备101发送的容器部署服务的后台服务器。
在一些情况下,本公开所提供的容器化部署方法可以由终端设备101和服务器103共同执行,例如,“获取部署流水线的容器所在节点所使用的CPU的注解字段”的步骤可以由终端设备101执行,其余步骤可以由服务器103执行。本公开对此不做限定。相应地,容器化部署装置也可以分别设置于终端设备101和服务器103中。
在一些情况下,本公开所提供的容器化部署方法可以由服务器103执行,相应地,容器化部署装置也可以设置于服务器103中,这时,***架构100也可以不包括终端设备101。
在一些情况下,本公开所提供的容器化部署方法可以由终端设备101执行,相应地,容器化部署装置也可以设置于终端设备101中,这时,***架构100也可以不包括服务器103。
需要说明的是,服务器103可以是硬件,也可以是软件。当服务器103为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器103为软件时,可以实现成多个软件或软件模块(例如用来提供容器部署服务),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本公开的容器化部署***的一个实施例的流程图。该***包括请求端和服务端,请求端和服务端通信连接,其中:
请求端,可以被配置成响应于检测到用户的流水线触发操作,生成流水线触发请求,流水线触发请求包括流水线配置信息。
服务端,可以被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,流水线触发请求包括流水线配置信息;根据CPU的注解字段,确定CPU的架构类型作为容器的目标CPU架构类型;根据流水线配置信息和目标CPU架构类型,构建相应的容器镜像;根据容器镜像完成容器化部署。
具体地,服务端可以包括流水线控制器、Jenkins***、Kubernetes***,Kubernetes***可以包括至少两个部署有不同架构类型CPU的节点。该过程基于Jenkins作为环境基础组件。
这里,Kubernetes(K8S)是一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。POD是K8S集群中所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,POD是它们的逻辑主机,POD包含业务相关的多个应用容器。K8S其他的资源对象大部分都是用来支撑或者扩展POD对象功能的。Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目。
第一步,流水线控制器,可以被配置成响应于接收到请求端发送的流水线触发请求,向Kubernetes***发送部署流水线的容器所在节点所使用的CPU的注解字段的获取请求。
第二步,Kubernetes***,可以被配置成响应于接收到获取请求,向流水线控制器发送部署流水线的容器所在节点所使用的CPU的注解字段。
第三步,流水线控制器,可以被配置成根据CPU的注解字段,确定CPU的架构类型作为容器的目标CPU架构类型并发送至Jenkins***。
从第一步到第三步可以看出,由开发人员触发webhook至流水线控制器,流水线控制器向后端Jenkins发起流水线触发请求。流水线控制器的设计为提高Jenkins处理多并发能力、流水线日志美化打印、判断后端应用的芯片类型。该组件通过后端应用容器的annotations注解字段判断该容器的芯片类型,并将该芯片类型解析信息发送至Jenkins从而触发相对应的流水线。开发流水线控制器组件(cicd-controller),解析事件触发传输参数中对应容器资源的CPU芯片类型,对接Jenkins-api实现传参和流水线触发,将该流水线的日志美化并异步传输给触发流水线的发送方。
继续可以参考图3,图3是根据本公开的容器化部署***中的流水线控制器的一个实施例的流程图。如图4所示的一个场景中,当CPU的注解字段(annotations)为“X86”时,流水线控制器(cicd-controller)可以判断该容器类型为“X86容器”,即该容器采用的CPU的架构类型为X86。当CPU的注解字段(annotations)为“ARM”时,流水线控制器(cicd-controller)可以判断该容器类型为“ARM容器”,即该容器采用的CPU的架构类型为ARM。当CPU的注解字段(annotations)为“ALL”时,流水线控制器(cicd-controller)可以判断该容器类型为“混合容器”,即该容器采用的CPU的架构类型可以包括X86和ARM。
第四步,Jenkins***,可以被配置成响应于接收到目标CPU架构类型,向Kubernetes***发送jnlp-slave-pod创建请求。
具体地,容器化部署Jenkins,对接Kubernetes集群实现jnlp-slave模式,并制作jnlp-slave的基础镜像,安装java、tar、docker、kubectl等命令。
第五步,Kubernetes***,可以被配置成响应于接收到jnlp-slave-pod创建请求,创建jnlp-slave-pod。
这里,该jnlp-slave-pod需要具备流水线基础命令及kubectl操作能力。因此,需要制作该容器镜像支持tar、java、kubectl、docker等命令及相关权限。
第六步,jnlp-slave-pod,可以被配置成执行jenkinsfile流水线,执行jenkinsfile流水线包括拉取应用的制品代码,根据目标CPU架构类型生成Dockerfile,选择基础镜像,并构建相应的容器镜像上传至镜像仓库。
具体地,创建Jenkins pipeline,编写相关Jenkinsfile规则,实现制品拉取、Dockerfile生成、镜像构建、镜像上传、容器部署,其中根据不同的CPU类型选择不同的基础镜像和部署环境,从而实现容器的“一云多芯”部署支持。
作为示例,脱敏后Jenkinsfile具体如下:
Figure BDA0003717639180000081
Figure BDA0003717639180000091
第七步,jnlp-slave-pod,可以被配置成通过kubectl命令行工具调用Kubernetes***接口完成容器化部署。
这里,kubectl是K8S的命令行工具(CLI),提供了大量的子命令,方便管理K8S集群中的各种功能。
图4是根据本公开的容器内支持多用户登录的一个实施例的流程图。如图4所示,容器内可以安装有openssh及相关组件,可以被配置成创建应用用户信息和只读用户信息并制作容器基础镜像,应用用户具有对应用进行可读可写可执行操作的权限,只读用户具有对应用进行可读操作的权限。
这里,SSH(Secure Shell)是一种网络安全协议,通过加密和认证机制实现了设备之间的安全保障。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
具体地,首先容器内安装openssh及相关组件,然后创建应用用户和只读用户,并将以上操作制作为容器基础镜像,最后制定标准要求容器内部应用均为应用用户属主权限,只读用户只有读权限。
作为示例,容器基础镜像中安装openssh及多种权限的用户,Dockerfile具体如下:
FROM centos:7.5
RUN yum install-y openssh-server openssl openssl-devel
RUN useradd user_app
RUN chsh-s/bin/bash user_app
图5是根据本公开的POD动态注册堡垒机的一个实施例的流程图。如图5所示,该***还可以包括堡垒机,可以被配置成在Kubernetes***中部署堡垒机注册服务,堡垒机注册服务具有Kubernetes***的list-watch的RBAC权限;基于Client-go核心工具包Informer,开发bastion-register服务,bastion-register服务与kube-apiserver之间通过list-watch接口对增量事件和全量资源进行处理,通过触发回调函数以动态通知堡垒机纳管容器资源。
这里,堡垒机可以在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维工作人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。list-watch接口可以是K8S***中统一的异步消息传递方式,对***的性能、数据一致性起到关键性的作用。
第一方面,堡垒机提供容器纳管上线、下线、定期检查接口。
第二方面,开发部署堡垒机注册服务包括:第一点,该服务应部署在业务Kubernetes集群中,具备集群的list-watch的RBAC权限。第二点,基于Client-go核心工具包Informer,开发bastion-register服务,该服务与kube-apiserver通过list-watch接口对增量事件和全量资源进行处理,通过触发回调函数AddFunc、DeleteFunc、UpdateFunc实现动态通知堡垒机纳管容器资源。开发堡垒机注册组件bastion-register,该组件功能为list-watch pod的增删事件。第三点,bastion-register具备过滤指定标签的能力,如仅需纳管业务容器而非kubernetes内部控制容器,可在业务容器中增加label(如register-bastion:enable),从而实现仅对带有该标签的容器进行后续处理。
堡垒机侧开发容器纳管接口,可接收并处理容器动态上下线请求,具体处理报文规则如下:
容器上线:
Figure BDA0003717639180000111
以上,结合图2至图5,本公开提供了一种容器化部署***,取得的有益效果包括但不限于:
1、通过集成Jenkins流水线实现全流程自动化流水线,并自动判断容器资源需要支持的CPU架构类型,根据CPU架构类型自动判断构建X86或ARM镜像,并使用该镜像进行部署。在一次流水线部署过程中生成X86和ARM不同CPU架构的镜像。支持同时部署多种CPU架构的容器应用,可实现同时支持X86和ARM两种CPU架构,且可以在不同环境下自动选择对应的镜像进行部署。提高了容器化部署效率、丰富运维管理功能。
2、提供容器基础镜像的构建方式,并提供容器内的高权用户、应用用户和只读用户,实现多用户管理及ssh登录的支持,以实现在容器内部对不同用户的权限管理。
3、通过开发bastion-register服务与堡垒机进行联动,该服务通过Kubernetes的list-watch机制动态通知POD的上线及下线,从而实现容器资源动态注册堡垒机,实现堡垒机对容器应用的精确化管理。
继续参考图6,其示出了根据本公开的容器化部署方法的一个实施例的流程600。该容器化部署方法,包括以下步骤:
步骤601,响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,流水线触发请求包括流水线配置信息。
步骤602,根据CPU的注解字段,确定CPU的架构类型作为容器的目标CPU架构类型。
步骤603,根据流水线配置信息和目标CPU架构类型,构建相应的容器镜像。
步骤604,根据容器镜像完成容器化部署。
在本实施例中,步骤601-步骤604的具体操作及其所产生的技术效果与图2所示的实施例中的相关步骤操作及效果基本相同,在此不再赘述。
进一步参考图7,作为对上述各图所示方法的实现,本公开提供了一种容器化部署装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图7所示,本实施例的容器化部署装置700包括:获取单元701、确定单元702、构建单元703和部署单元704。其中,获取单元701,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,流水线触发请求包括流水线配置信息;确定单元702,被配置成根据CPU的注解字段,确定CPU的架构类型作为容器的目标CPU架构类型;构建单元703,被配置成根据流水线配置信息和目标CPU架构类型,构建相应的容器镜像;部署单元704,被配置成根据容器镜像完成容器化部署。
在本实施例中,容器化部署装置700的获取单元701、确定单元702、构建单元703和部署单元704的具体处理及其所带来的技术效果可分别参考图6对应实施例中步骤601、步骤602、步骤603和步骤604的相关说明,在此不再赘述。
需要说明的是,本公开提供的容器化部署装置中各单元的实现细节和技术效果可以参考本公开中其它实施例的说明,在此不再赘述。
下面参考图8,其示出了适于用来实现本公开的电子设备的计算机***800的结构示意图。图8示出的电子设备仅仅是一个示例,不应对本公开的功能和使用范围带来任何限制。
如图8所示,计算机***800包括中央处理单元(CPU,Central Processing Unit)801,其可以根据存储在只读存储器(ROM,Read Only Memory)802中的程序或者从存储部分806加载到随机访问存储器(RAM,Random Access Memory)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有***800操作所需的各种程序和数据。CPU 801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O,Input/Output)接口805也连接至总线804。
以下部件连接至I/O接口805:包括触控屏、手写板、键盘或鼠标等的输入部分806;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid CrystalDisplay)等以及扬声器等的输出部分807;包括硬盘等的存储部分806;以及包括诸如LAN(局域网,Local Area Network)卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++、Python,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、确定单元、构建单元和部署单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取部署流水线的容器所在节点所使用的CPU的注解字段的单元”。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,流水线触发请求包括流水线配置信息;根据CPU的注解字段,确定CPU的架构类型作为容器的目标CPU架构类型;根据流水线配置信息和目标CPU架构类型,构建相应的容器镜像;根据容器镜像完成容器化部署。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种容器化部署方法,包括:
响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;
根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;
根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;
根据所述容器镜像完成容器化部署。
2.一种容器化部署装置,包括:
获取单元,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;
确定单元,被配置成根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;
构建单元,被配置成根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;
部署单元,被配置成根据所述容器镜像完成容器化部署。
3.一种容器化部署***,包括请求端和服务端,所述请求端和所述服务端通信连接,其中:
所述请求端,被配置成响应于检测到用户的流水线触发操作,生成流水线触发请求,所述流水线触发请求包括流水线配置信息;
所述服务端,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息;根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型;根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像;根据所述容器镜像完成容器化部署。
4.根据权利要求3所述的***,其中,所述服务端包括流水线控制器、Jenkins***、Kubernetes***,所述Kubernetes***包括至少两个部署有不同架构类型CPU的节点;以及
所述服务端,被配置成响应于接收到请求端发送的流水线触发请求,获取部署流水线的容器所在节点所使用的CPU的注解字段,所述流水线触发请求包括流水线配置信息,根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型,包括:
所述流水线控制器,被配置成响应于接收到请求端发送的流水线触发请求,向所述Kubernetes***发送部署流水线的容器所在节点所使用的CPU的注解字段的获取请求;
所述Kubernetes***,被配置成响应于接收到所述获取请求,向所述流水线控制器发送部署流水线的容器所在节点所使用的CPU的注解字段;
所述流水线控制器,被配置成根据所述CPU的注解字段,确定所述CPU的架构类型作为所述容器的目标CPU架构类型并发送至所述Jenkins***。
5.根据权利要求4所述的***,其中,所述根据所述流水线配置信息和所述目标CPU架构类型,构建相应的容器镜像,包括:
所述Jenkins***,被配置成响应于接收到所述目标CPU架构类型,向所述Kubernetes***发送jnlp-slave-pod创建请求;
所述Kubernetes***,被配置成响应于接收到所述jnlp-slave-pod创建请求,创建jnlp-slave-pod;
所述jnlp-slave-pod,被配置成执行jenkinsfile流水线,所述执行jenkinsfile流水线包括拉取应用的制品代码,根据所述目标CPU架构类型生成Dockerfile,选择基础镜像,并构建相应的容器镜像上传至镜像仓库。
6.根据权利要求5所述的***,其中,所述根据所述容器镜像完成容器化部署,包括:
所述jnlp-slave-pod,被配置成通过kubectl命令行工具调用所述Kubernetes***接口完成所述容器化部署。
7.根据权利要求3-6任一项所述的***,其中,所述容器内安装有openssh及相关组件,被配置成创建应用用户信息和只读用户信息并制作容器基础镜像,所述应用用户具有对应用进行可读可写可执行操作的权限,所述只读用户具有对应用进行可读操作的权限。
8.根据权利要求3-6任一项所述的***,其中,所述***还包括堡垒机,被配置成在所述Kubernetes***中部署堡垒机注册服务,所述堡垒机注册服务具有Kubernetes***的list-watch的RBAC权限;基于Client-go核心工具包Informer,开发bastion-register服务,所述bastion-register服务与所述kube-apiserver之间通过list-watch接口对增量事件和全量资源进行处理,通过触发回调函数以动态通知所述堡垒机纳管容器资源。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1所述的方法。
CN202210749051.9A 2022-06-28 2022-06-28 容器化部署方法、装置、***、电子设备及存储介质 Pending CN115185542A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210749051.9A CN115185542A (zh) 2022-06-28 2022-06-28 容器化部署方法、装置、***、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210749051.9A CN115185542A (zh) 2022-06-28 2022-06-28 容器化部署方法、装置、***、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115185542A true CN115185542A (zh) 2022-10-14

Family

ID=83516345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210749051.9A Pending CN115185542A (zh) 2022-06-28 2022-06-28 容器化部署方法、装置、***、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115185542A (zh)

Similar Documents

Publication Publication Date Title
US11909604B2 (en) Automatic provisioning of monitoring for containerized microservices
Petcu et al. Experiences in building a mOSAIC of clouds
CN112119374A (zh) 使用替代服务器名称选择性地提供相互传输层安全
US9513979B2 (en) Mobile communication device providing interconnectivity between apps based on storage scope
US10742759B2 (en) Workflow-based push notifications
CN109564527A (zh) 云计算节点的安全配置
EP3399698B1 (en) Automated inventory for iot devices
Blackstock et al. FRED: A hosted data flow platform for the IoT
US11818152B2 (en) Modeling topic-based message-oriented middleware within a security system
US9374417B1 (en) Dynamic specification auditing for a distributed system
US11474842B2 (en) Integration application creator design
CN110324209B (zh) 微服务***监控方法、装置、电子设备及计算机可读介质
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
CN115349117B (zh) 用于多租户无服务器环境的多级高速缓存网格***
JP2024508452A (ja) イベントベースのアプリケーションのホスティング
CN115185542A (zh) 容器化部署方法、装置、***、电子设备及存储介质
CN113535544A (zh) 一种待调试子应用运行方法、计算机设备以及装置
Adjepon-Yamoah et al. A reactive architecture for cloud-based system engineering
CN112463616A (zh) 一种面向Kubernetes容器平台的混沌测试方法和装置
CN112905970A (zh) 权限校验方法、装置、计算机可读存储介质及电子设备
CN112559001A (zh) 更新应用的方法和装置
CN115378792B (zh) 告警处理方法、装置及存储介质
US12050690B2 (en) Run-time communications protocol parameter adjustment in containerized applications
US11985051B1 (en) Dynamically visualizing service mesh topologies with event-based messaging
US20220300611A1 (en) Run-time communications protocol parameter adjustment in containerized applications

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