
# Jenkins Master安装部署
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
Jenkins界面中的词条可能因版本不同而存在一些差异，例如中英文不同等，本文中的截图仅供您参考。
#### 镜像选择
在DockerHub上选择1个相对较新的稳定镜像，本次搭建测试用的Jenkins使用的镜像为**jenkinsci/blueocean** ，该镜像捆绑了所有Blue Ocean插件和功能，不需要再单独安装Blue Ocean插件，详情请参见[在Docker中下载并运行Jenkins](https://www.jenkins.io/zh/doc/book/installing/#在docker中下载并运行jenkins)。
#### 准备工作
- 在创建容器工作负载前，您需要购买一个可用集群（集群至少包含1个4核8G的节点，避免资源不足），详情请参照[购买CCE集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)创建。
  本实践需要使用Docker in Docker场景，即在容器中运行Docker命令，节点需要选择Docker容器运行时。否则，您需要自行在节点上安装Docker命令。
  
- 若工作负载需要被外网访问，请确保集群中至少有一个节点已绑定弹性IP，或已购买负载均衡实例。
 
#### 通过CCE安装部署Jenkins
1. 在[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击左侧栏目树中的"工作负载 \> 无状态负载"，单击右侧"创建负载"按钮进入无状态工作负载创建页面。
2. 填写工作负载基本参数。 
   - 负载名称：jenkins（可自定义）。
   
   - 命名空间：选择Jenkins部署的命名空间，可自行创建。
   
   - 实例数量：1个。
   
   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002018077561.png "点击放大")
   
   
   
3. 填写容器基本信息参数。 
   - 镜像名称：**jenkinsci/blueocean**。请根据实际情况进行选择镜像版本，若不设置版本，则默认拉取latest版本。
   
   - CPU配额：本例中CPU配额限制为2 Core
   
   - 内存配额：本例中内存配额限制为2048 MiB
   
   - 特权容器：如果选择使用单Master部署的Jenkins，必须开启"特权容器"，使容器获得操作宿主机的权限，否则Jenkins Master容器中无法执行docker命令。
   
   
   其他参数默认。
   图1容器基本信息参数   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002017958685.png "点击放大")
   
   
   
4. 在"数据存储"页签下，添加持久化存储。 
   选择"已有存储卷声明 (PVC)"，添加1个云存储卷，并在挂载路径下输入**/var/jenkins_home** ，将云存储挂载到Jenkins容器的**/var/jenkins_home** 目录，供Jenkins保留持久化数据。
   ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
   云存储类型可选择"云硬盘EVS"或"文件存储SFS"，若没有云存储可单击"创建存储卷声明 PVC"创建。
   如选择"云硬盘EVS"类型，要求EVS的可用区与节点可用区一致。
   图2添加云存储   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002017960689.png "点击放大")
   
   
   
5. 给Jenkins容器添加权限，让Jenkins容器中可以执行相关命令。 
   1. 确认[3]中已开启"特权容器"开关。
   
   2. 在"数据存储"页签下，选择添加"主机路径 (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]所示。
      图3挂载主机到容器对应路径   
      ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002018083345.png "点击放大")
      
      
   
   3. 在"安全设置"中配置"运行用户"为：0（即root用户）。
      图4配置运行用户   
      ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001981483830.png "点击放大")
      
      
   
   
   
   
6. 在"服务配置"中，设置访问方式。
   
   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，其他默认。
     ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
     本例中，后续步骤创建的Agent均与Master处于同一集群，因此Agent连接使用ClusterIP类型的Service。
     如果Agent需要跨集群或使用公网连接Jenkins Master，请自行选择合适的Service类型。但需要注意的是，Jenkins要求jenkins-web的地址要和jenkins-agent的地址一致，因此**Agent连接的地址必须同时开放8080和50000端口**，而仅用于Web访问的地址可以只开放8080端口、不开放50000端口。
     
   
   
   图5添加服务   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002018085657.png "点击放大")
   
   
   
7. "高级配置"步骤可以保持默认，直接单击"创建工作负载"，完成工作负载创建。
8. 在创建成功页面单击"返回工作负载列表"，查看工作负载状态，若显示为"运行中"则jenkins应用已可以正常访问。
 
#### 登录并初始化Jenkins
1. 在[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击左侧栏目树中的"服务"，在"服务"页签下查看jenkins的访问方式。
   
   图6访问8080端口对应的访问方式   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001981890814.png "点击放大")
   
   
   
2. 在浏览器中输入负载均衡的"EIP:8080"，即可打开jenkins配置页面。 
   初次访问时界面会提示获取初始管理员密码，该密码可在jenkins的Pod中获取。在执行下述命令之前您需要先通过kubectl连接集群，具体操作请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
   ```
   # 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
   ```
   
   
3. 首次登录时选择默认推荐的插件即可，并根据页面提示创建一个管理员。完成初始配置后，即可进入Jenkins页面。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001465971797.png "点击放大")
   
   
 
 #### 修改并发构建数量
1. 在Jenkins Dashboard页面，单击左侧"Manage Jenkins"，选择"System Configuration \> Manage nodes and clouds"，选择目标节点下拉框里的"Configure"，如下图所示： 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001471311349.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
   - Master和Agent节点均可修改并发构建数量，此处以Master为例。
   
   - 如果使用[Master+Agent模式](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0066.html#cce_bestpractice_0066__li18811913234)，建议将Master的并发构建数设置为0，即全部使用Agent进行构建。如果使用[单Master模式](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0066.html#cce_bestpractice_0066__li15367141115319)，则无需修改为0。
    
   
   
2. 修改执行并发构建的最大数目，示例中修改为2，您可根据实际需求并结合节点性能进行修改该值。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001416531766.png "点击放大")
   
   
 
