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

前提条件

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

部署Jenkins

  1. 登录容器服务管理控制台
  2. 在左侧导航栏中,选择容器服务 - Kubernetes > 市场 > 应用目录。选择jenkins

  3. 选择参数页签。
  4. 修改AdminPassword字段。
    说明 为确保密码生效,您需要去掉AdminPassword字段前的#
    如果您未设置登录密码,即未修改AdminPassword字段,Jenkins部署成功后系统会自动生成密码,您可以通过以下命令进行查看:
    $ printf $(kubectl get secret --namespace ci jenkins-ci-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
  5. 选择Kubernetes集群以及命名空间,填写发布名称,并单击创建

    说明 建议选择自定义命名空间或default命名空间。本示例中选择自定义命名空间ci。
  6. 在左侧导航栏中,选择路由与负载均衡 > 服务
  7. 选择部署了Jenkins的集群以及相应的命名空间。
  8. 单击Jenkins服务的外部端点,访问并登录Jenkins。

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

  1. 创建Kubernetes集群证书。
    1. 在Jenkins的左侧导航栏中,选择系统管理
    2. 在右侧的Manage Jenkins页面,单击系统设置
    3. Cloud区域中,单击Credentials右侧的Add

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

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

      • 类型:选择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. Kubernetes集群动态分配构建pod,其配置如下图所示。

    8. 配置Kubernetes Pod Template。

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

      • 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的配置如下图所示。

        使用jenkins-slave-kubectl作为Dokcer镜像。jenkins-slave-kubectl 用于kubectl部署应用。
        registry.cn-beijing.aliyuncs.com/acs-sample/jenkins-slave-kubectl:1.11.5
      • 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
    Login Succeeded
    $ kubectl create secret generic jenkins-docker-cfg -n ci --from-file=/root/.docker/config.json
  3. 构建demo-pipeline并访问应用服务。
    1. 在Jenkins首页,单击demo-pipeline

    2. 在左侧导航栏中,选择Build with Parameters
    3. 根据自己的镜像仓库信息修改构建参数。本示例中源码仓库分支为master,镜像为registry.cn-beijing.aliyuncs.com/haoshuwei:stable。

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

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

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

了解更多容器服务的相关内容,请参见容器服务

了解更多kaniko的相关内容,请参见kaniko