使用CCE集群安装部署Jenkins

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,属于DevOps一环,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。

Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。Jenkins可以很好的支持各种语言的项目构建,也完全兼容Maven、Ant、Gradle等多种第三方构建工具,同时跟SVN、GIT等常用的版本控制工具无缝集成,也支持直接对接GitHub等源代码托管网站。

方案架构

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

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

本实践采用Master加Agent模式,Master和Agent均为容器化安装的方案,并使用在K8s集群实现动态Agent。

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

Jenkins Master安装部署

Jenkins Master采用容器化安装的方案,负责管理任务(Job)。在CCE集群中创建Jenkins工作负载,并通过负载均衡的方式进行访问。完成初始配置后,即可进入Jenkins页面。

Jenkins Agent配置

Jenkins可以在集群中创建固定Agent,也可以使用pipeline与CCE的对接,动态提供容器化的Agent。其中动态Agent还需要使用Kubernetes相关插件配置集群认证信息及用户权限。

  1. 固定Agent:Agent容器一直运行,任务构建完成后不会销毁,创建完成后将一直占用集群资源,配置过程较简单。
  2. 动态Agent:构建任务时动态创建Agent容器,并在任务构建完成后销毁容器,可实现资源动态分配,资源利用率高,但是配置过程较为复杂。

使用Jenkins构建流水线

Jenkins流水线与SWR对接,在Agent中调用docker build/login/push相关的命令,实现自动化的容器镜像打包、推送。

您也可以通过流水线实现Kubernetes资源(deployment/service/ingress/job等)的部署、升级等能力。