云容器引擎 CCE-方案概述:方案架构

时间:2023-11-01 16:18:15

方案架构

Jenkins部署分为以下两种模式:

  • 一种是直接使用单Master安装Jenkins,直接进行任务管理和业务构建发布,但可能存在一定的生产安全风险。
  • 一种是Master加Agent模式。Master节点主要是处理调度构建作业,把构建分发到Agent实际执行,监视Agent的状态。业务构建发布的工作交给Agent进行,即执行Master分配的任务,并返回任务的进度和结果。

Jenkins的Master和Agent均可安装在虚拟机或容器中,且组合形式可多样,参见表1

表1 Jenkins部署模式

部署模式

Master

Agent

优缺点分析

单Master

虚拟机

-

  • 优点:本地化构建,操作简单。
  • 缺点:任务管理和执行都在同一台虚拟机上,安全风险较高。

单Master

容器

-

  • 优点:利用K8s容器调度机制,拥有一定的自愈能力。
  • 缺点:任务管理和执行没有分离,安全风险问题仍未解决。

Master加Agent

虚拟机

虚拟机

  • 优点:任务管理和执行分离,降低了一定的安全风险。
  • 缺点:只能固定Agent,无法进行资源调度,资源利用率低,且环境维护成本高。

容器(K8s集群)

  • 优点:容器化的Agent可以选择固定Agent,也可以通过K8s实现动态Agent,动态Agent的方式资源利用率高。并且可以根据调度策略均匀分配任务,后期也比较容易维护。
  • 缺点:Jenkins的Master存在小概率的宕机风险,恢复成本较高。

Master加Agent

容器(K8s集群)

容器(K8s集群)

  • 优点:容器化的Agent可以选择固定Agent,也可以通过K8s实现动态Agent,资源利用率高。且Master具有自愈能力,维护成本低。Agent可以选择和Master共集群,也可以分集群。
  • 缺点:系统复杂程度高,环境搭建较困难。

本文采用Master加Agent模式,Master和Agent均为容器化安装的方案,并使用在K8s集群实现动态Agent,具体架构如图1所示。

  • Jenkins Master负责管理任务(Job),为了能够利用Kubernetes平台上的资源,需要在Master上安装Kubernetes的插件。
  • Kubernetes平台负责产生Pod,用作Jenkins Agent执行Job任务。当Jenkins Master上有Job被调度时,Jenkins Master通过Kubernetes插件向Kubernetes平台发起请求,请Kubernetes根据Pod模板产生对应的Pod对象,Pod对象会向Jenkins Master发起请求,Master连接成功后,就可以在Pod上面执行Job了。
图1 K8s安装Jenkins架构
support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0066.html