Jenkins Master安装部署
Jenkins界面中的词条可能因版本不同而存在一些差异,例如中英文不同等,本文中的截图仅供您参考。
镜像选择
在DockerHub上选择1个相对较新的稳定镜像,本次搭建测试用的Jenkins使用的镜像为jenkinsci/blueocean,该镜像捆绑了所有Blue Ocean插件和功能,不需要再单独安装Blue Ocean插件,详情请参见在Docker中下载并运行Jenkins。
准备工作
- 在创建容器工作负载前,您需要购买一个可用集群(集群至少包含1个4核8G的节点,避免资源不足),详情请参照购买CCE集群创建。
本实践需要使用Docker in Docker场景,即在容器中运行Docker命令,节点需要选择Docker容器引擎。
- 若工作负载需要被外网访问,请确保集群中至少有一个节点已绑定弹性IP,或已购买负载均衡实例。
通过CCE安装部署Jenkins
- 在CCE控制台,单击左侧栏目树中的“工作负载 > 无状态负载”,单击右侧“创建负载”按钮进入无状态工作负载创建页面。
- 填写工作负载基本参数。
- 负载名称:jenkins(可自定义)。
- 命名空间:选择Jenkins部署的命名空间,可自行创建。
- 实例数量:1个。
- 填写容器基本信息参数。
- 镜像名称:jenkinsci/blueocean。请根据实际情况进行选择镜像版本,若不设置版本,则默认拉取latest版本。
- CPU配额:本例中CPU配额限制为2 Core
- 内存配额:本例中内存配额限制为2048 MiB
- 特权容器:如果选择使用单Master部署的Jenkins,必须开启“特权容器”,使容器获得操作宿主机的权限,否则Jenkins Master容器中无法执行docker命令。
其他参数默认。图1 容器基本信息参数
- 在“数据存储”页签下,添加持久化存储。
选择“已有存储卷声明 (PVC)”,添加1个云存储卷,并在挂载路径下输入/var/jenkins_home,将云存储挂载到Jenkins容器的/var/jenkins_home目录,供Jenkins保留持久化数据。
云存储类型可选择“云硬盘EVS”或“文件存储SFS”,若没有云存储可单击“创建存储卷声明”创建。
如选择“云硬盘EVS”类型,要求EVS的可用区与节点可用区一致。
图2 添加云存储
- 给Jenkins容器添加权限,让Jenkins容器中可以执行相关命令。
- 确认3中已开启“特权容器”开关。
- 在“数据存储”页签下,选择添加“主机路径 (HostPath)”,将主机路径挂载到容器对应路径。
表1 挂载路径 存储类型
主机路径(HostPath)
挂载路径
主机路径(HostPath)
/var/run/docker.sock
/var/run/docker.sock
主机路径(HostPath)
/usr/bin/docker
/usr/bin/docker
主机路径(HostPath)
/usr/lib64/libltdl.so.7
/usr/lib/x86_64-linux-gnu/libltdl.so.7
主机路径(HostPath)
/usr/bin/kubectl
/usr/local/bin/kubectl
挂载完成后,如图3所示。 - 在“安全设置”中配置“运行用户”为:0(即root用户)。
图4 配置运行用户
- 在“服务配置”中,设置访问方式。
Jenkins容器镜像有两个端口:8080和50000,需要分别配置。其中8080端口供Web登录使用,50000端口供Master和Agent连接使用。
本例中创建了两个Service:
- 负载均衡 ( LoadBalancer ):仅用于提供Web的外部访问,使用8080端口。您也可以选择使用“节点访问 ( NodePort )”类型的Service提供外部访问。
Service名称:jenkins(可自定义),容器端口:8080,访问端口:8080,其他默认。
- 集群内访问(ClusterIP):用于Agent连接Master。Jenkins要求jenkins-web的地址要和jenkins-agent的地址一致,因此包含Web访问的8080端口和Agent访问的50000端口。
Service名称:agent(可自定义),容器端口1:8080,访问端口1:8080,容器端口2:50000,访问端口2:50000,其他默认。
本例中,后续步骤创建的Agent均与Master处于同一集群,因此Agent连接使用ClusterIP类型的Service。
如果Agent需要跨集群或使用公网连接Jenkins Master,请自行选择合适的Service类型。但需要注意的是,Jenkins要求jenkins-web的地址要和jenkins-agent的地址一致,因此Agent连接的地址必须同时开放8080和50000端口,而仅用于Web访问的地址可以只开放8080端口、不开放50000端口。
图5 添加服务
- 负载均衡 ( LoadBalancer ):仅用于提供Web的外部访问,使用8080端口。您也可以选择使用“节点访问 ( NodePort )”类型的Service提供外部访问。
- “高级配置”步骤可以保持默认,直接单击“创建工作负载”,完成工作负载创建。
- 在创建成功页面单击“返回工作负载列表”,查看工作负载状态,若显示为“运行中”则jenkins应用已可以正常访问。
登录并初始化Jenkins
- 在CCE控制台,单击左侧栏目树中的“服务”,在“服务”页签下查看jenkins的访问方式。
图6 访问8080端口对应的访问方式
- 在浏览器中输入负载均衡的“EIP:8080”,即可打开jenkins配置页面。
初次访问时界面会提示获取初始管理员密码,该密码可在jenkins的Pod中获取。在执行下述命令之前您需要先通过kubectl连接集群,具体操作请参见通过kubectl连接集群。
# kubectl get pod -n cicd NAME READY STATUS RESTARTS AGE jenkins-7c69b6947c-5gvlm 1/1 Running 0 17m # kubectl exec -it jenkins-7c69b6947c-5gvlm -n cicd -- /bin/sh # cat /var/jenkins_home/secrets/initialAdminPassword b10eabe29a9f427c9b54c01a9c3383ae
- 首次登录时选择默认推荐的插件即可,并根据页面提示创建一个管理员。完成初始配置后,即可进入Jenkins页面。
修改并发构建数量
- 在Jenkins Dashboard页面,单击左侧“Manage Jenkins”,选择“System Configuration > Manage nodes and clouds”,选择目标节点下拉框里的“Configure”,如下图所示:
- Master和Agent节点均可修改并发构建数量,此处以Master为例。
- 如果使用Master+Agent模式,建议将Master的并发构建数设置为0,即全部使用Agent进行构建。如果使用单Master模式,则无需修改为0。
- 修改执行并发构建的最大数目,示例中修改为2,您可根据实际需求并结合节点性能进行修改该值。