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

前提条件

创建Kubernetes托管版集群

部署Jenkins

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择市场 > 应用目录
  3. 阿里云应用页签中,选择ack-jenkins
  4. 单击参数页签。
  5. 修改AdminPassword字段。
    说明 为确保密码生效,您需要删除AdminPassword字段前的#
    如果您未设置登录密码,即未修改AdminPassword字段,Jenkins部署成功后系统会自动生成密码,您可以通过以下命令进行查看:
    printf $(kubectl get secret --namespace ci jenkins-ci-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
  6. 选择Kubernetes集群以及命名空间,填写发布名称,并单击创建
    命名空间
    说明 建议选择自定义命名空间或default命名空间。本示例中选择自定义命名空间ci。
  7. 在控制台左侧导航栏中,单击集群
  8. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  9. 在集群管理页左侧导航栏中,单击服务
  10. 选择部署了Jenkins的集群以及相应的命名空间,然后单击Jenkins服务的外部端点,访问并登录Jenkins。

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

  1. 创建Kubernetes集群证书。
    1. 在Jenkins的左侧导航栏中,选择Manage Jenkins
    2. 在右侧的Manage Jenkins页面,单击Configure System
    3. Cloud区域中找到Credentials,在其右侧选择Add > Jenkins
      Credentials
      在添加凭据前,先在Kubernetes集群的基本信息页面,找到配置集群凭据中提供的KubeConfig。有关更多详情,请参见配置集群凭据配置集群凭据
    4. 在弹出的添加凭据对话框中,完成以下配置。
      添加凭据
      • Kind:选择Docker Host Certificate Authentication
      • Client Key:填写KubeConfig中client-key-data对应的内容。
      • Client Certificate:填写KubeConfig中client-certificate-data对应的内容。
      • ID:填写证书ID。本示例中填写k8sCertAuth。
      • Description:填写描述。
    5. 单击Add
    6. 测试连通性。

      Credentials下拉框中选择上一步添加的凭据,单击Test Connection

    7. Kubernetes集群动态分配构建Pod,其配置如下图所示。
      构建pod
    8. 配置Kubernetes Pod Template。

      slave-pipeline使用了4个Container分别完成流水线中各个Stage的构建。

      • Container jnlp的配置如下图所示。Container jnlp
        使用jenkins-slave-jnlp作为Docker镜像。jenkins-slave-jnlp用于构建节点jnlp连接master。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-jnlp:3.14-1
      • Container kaniko的配置如下图所示。
        使用jenkins-slave-kaniko作为Docker镜像。jenkins-slave-kaniko用于构建和推送应用的镜像。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-kaniko:0.6.0
      • Container kubectl的配置如下图所示。Container kubectl
        使用jenkins-slave-kubectl作为Dokcer镜像。jenkins-slave-kubectl 用于kubectl部署应用。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-kubectl:1.11.5
      • Container maven的配置如下图所示。Container maven
        使用jenkins-slave-maven作为Docker镜像。jenkins-slave-maven用于mvn打包构建。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-maven:3.3.9-jdk-8-alpine
    9. kaniko需要配置镜像仓库权限。具体配置如下图所示。
    10. 单击Save保存配置。
  2. 通过kubectl在Kubernetes集群中创建jenkins-docker-cfg secret,用于设置镜像仓库权限。
    本示例中使用阿里云镜像服务提供的北京区域镜像仓库:
    docker login -u xxx -p xxx registry.cn-beijing.aliyuncs.com
    kubectl create secret generic jenkins-docker-cfg -n ci --from-file=/root/.docker/config.json
  3. 构建demo-pipeline并访问应用服务。
    1. 在Jenkins首页,单击demo-pipeline
      demo-pipeline
    2. 在左侧导航栏中,选择Build with Parameters
    3. 根据自己的镜像仓库信息修改构建参数。本示例中源码仓库分支为master,镜像为registry.cn-beijing.aliyuncs.com/haoshuwei:stable。
      构建参数
    4. 单击Build
    5. 查看Build History。下图表示构建成功。
      Build History