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

前提条件

您已经成功创建了一个Serverless Kubernetes集群。有关详细信息,请参见创建 Serverless Kubernetes 集群

部署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. 单击Jenkins服务的外部端点登录Jenkins。

    4. 在Jenkins登录页面,输入用户名和密码。默认用户名和密码均为admin,请于登录后进行修改。

创建集群证书和镜像仓库证书,构建和部署示例应用

  1. 配置Kubernetes Cloud,动态创建slave pod。
    1. 在左侧导航栏中,选择系统管理
    2. 在右侧的Manage Jenkins页面,单击系统设置
    3. Cloud区域中,填写KubeConfig中的API server URL作为Kubernetes URL

    4. 单击凭证右侧的Add

      在添加凭据前,先在Serverless Kubernetes集群的 基本信息页面,找到 配置集群凭据中提供的 KubeConfig

      在弹出的 添加凭据对话框中,完成以下配置:

      • 类型:选择Docker Host Certificate Authentication
      • Client Key: 填写KubeConfig中client-key-data对应的内容。
      • Client Certificate: 填写KubeConfig中client-certificate-data对应的内容。
      • ID:填写证书ID。本示例中填写k8sCertAuth。
      • 描述:填写描述。
    5. 单击添加
    6. 测试连通性。
      Credentials下拉框中选择上一步添加的凭据,单击 Test Connection

    7. 填写jenkins服务的外部端点作为Jenkins URL,jenkins-agent的外部端点作为Jenkins tunnel

    8. 单击Save保存配置。
  2. 通过kubectl在Serverless Kubernetes集群中创建jenkins-docker-cfg secret,用于设置镜像仓库权限。
    本示例中使用阿里云镜像服务提供的北京区域镜像仓库:
    $ docker login -u xxx -p xxx registry.cn-beijing.aliyuncs.com
    Login Succeeded
    $ kubectl create secret generic jenkins-docker-cfg  --from-file=/root/.docker/config.json
  3. 构建demo-pipeline并访问应用服务。
    1. 在Jenkins首页,单击demo-pipeline
    2. 在左侧导航栏中,选择Build with Parameters
    3. 根据自己的镜像仓库信息修改构建参数,并填写KubeConfig中的API server URL作为api_server_url。本示例中源码仓库分支为serverless,镜像为registry.cn-beijing.aliyuncs.com/haoshuwei/jenkins-java-demo:serverless, 请根据提示信息进行替换。

    4. 单击Build
    5. 查看Build History。下图表示构建成功。

    6. 构建成功后,登录容器服务管理控制台,查看应用的服务地址。

点击这里获取示例项目中使用的源码仓库。