本文主要演示如何在阿里云Serverless Kubernetes服务(ASK)上快速搭建Jenkins持续集成环境,并基于提供的应用示例快速完成应用源码编译、镜像构建和推送以及应用部署的流水线。

前提条件

部署Jenkins

  1. 执行以下命令下载部署文件。
    git clone https://github.com/AliyunContainerService/jenkins-on-serverless.git
    cd jenkins-on-serverless
  2. 完成jenkins_home持久化配置。
    Serverless Kubernetes目前不支持云盘,如需持久化jenkins_home,您可以挂载nfs volume,修改serverless-k8s-jenkins-deploy.yaml文件,取消以下字段注释并配置您的NFS信息:
    #volumeMounts:
            #  - mountPath: /var/jenkins_home
            #    name: jenkins-home
          .....
          #volumes:
          #  - name: jenkins-home
          #    nfs:
          #      path: /
          #      server:
  3. 执行以下命令部署Jenkins。
    kubectl apply -f serverless-k8s-jenkins-deploy.yaml
  4. 登录Jenkins。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 单击Jenkins服务的外部端点登录Jenkins。
      外部端点
    5. 在Jenkins登录页面,输入用户名和密码。默认用户名和密码均为admin
      注意 为了保证Jenkins系统安全,请登录后修改密码。
  5. 配置Jenkins的新手入门
    1. 新手入门配置页面,单击安装推荐的插件
    2. 插件安装完成后,在新手入门实例配置页面,单击保存并完成
    3. 实例配置保存完成后,单击开始使用Jenkins
  6. 获取Token的Secret。
    1. 执行以下命令查看Token。
      kubectl get secret

      预期输出:

      NAME                         TYPE                                  DATA   AGE
      ack-jenkins-sa-token-q****   kubernetes.io/service-account-token   3      28m
      default-token-b****          kubernetes.io/service-account-token   3      27h
    2. 执行以下命令获取ack-jenkins-sa-token-q****的Secret。
      kubectl get secret ack-jenkins-sa-token-q**** -o jsonpath={.data.token} |base64 -d

      预期输出:

      sdgdrh****
  7. 创建Secret Text类型凭证。
    1. 在Jenkins系统左侧导航栏,选择系统管理
    2. 管理Jenkins页面,系统配置下单击节点管理
    3. 节点列表页面左侧导航栏,选择Configure Clouds
    4. 配置集群页面,单击Kubernetes Cloud details...
    5. 凭据字段,选择添加 > Jenkins
    6. Jenkins 凭据提供者: Jenkins对话框,添加Secret Text类型的凭证。
      凭证的参数说明如下所示:
      参数 说明
      Domain 表示凭据的域。默认为全局凭据(unrestricted)
      类型 表示凭据的类型。本示例选择Secret Text
      范围 表示凭据的范围,可选择全局或系统。本示例选择全局(Jenkins,nodes,items,all child items,etc)
      Secret 表示凭据的Secret。本示例输入上个步骤获取的Secret。
      ID 表示凭据的名称。本示例为ask-jenkins-token
      描述 表示凭据的补充说明。
    7. 单击添加
  8. 配置集群页面配置相关参数。更多信息,请参见Kubernetes Cloud的配置说明
    1. 配置Kubernetes地址凭据选择为ask-jenkins-token,单击连接测试验证连接是否正常。
    2. 配置Jenkins地址Jenkins通道
    3. 单击Save
  9. 构建demo-pipeline并访问应用服务。
    1. 在Jenkins首页,单击demo-pipeline构建图标。
      demo-pipeline
    2. 根据您的镜像仓库信息修改构建参数。本示例中源码仓库分支为master,镜像为registry.cn-beijing.aliyuncs.com/ack-cicd/ack-jenkins-demo:latest
      构建参数
    3. 单击开始构建
      测试Kubernetes集群动态分配的Jenkins Slave Pod与Jenkins Master是否连接正常。

      执行构建后,Jenkins从Kubernetes集群动态创建一个Slave Pod运行本次构建任务。关于示例应用代码,请参见jenkins-demo-GitHubjenkins-demo-haoshuwei

    4. 查看状态,若构建成功则表示Jenkins on Kubernetes运行正常。
      Build History

后续步骤