您可以通过CodePipeline,构建代码工作流模板、编译应用、构建与推送容器镜像、发布Kubernetes应用,从而实现利用代码发布应用的全过程自动化。本文以构建一个Java软件项目并将其部署到Kubernetes集群为例,说明如何使用CodePipeline。

CodePipeline简介

阿里云CodePipeline提供持续集成/持续交付的能力,并完全兼容Jenkins的能力与使用习惯,是一款SAAS化的产品。

其优点在于:

  • 提供构建资源,无需用户运维,开箱即用;
  • 与阿里云产品生态无缝集成;
  • 兼容开源Jenkins使用习惯、轻量;
  • 免费。

了解更多关于CodePipeline的内容,请参见CodePipeline产品帮助文档

前提条件

使用CodePipeline之前,您需要先开通服务:

  1. 登录CodePipeline管理控制台并开通服务。
  2. 同意RAM的CodePipeline角色授权。

实施步骤

构建java-demo项目并部署到Kubernetes集群。

  1. 登录CodePipeline管理控制台
  2. 单击右上角的新建
  3. 新建项目页面,输入项目名称,选择构建一个自由风格的软件项目,并单击下一步

  4. 基本信息区域,选择构建节点。本示例中选择国内节点java构建环境(缓存)

  5. 源码管理区域,配置源码仓库URL以及分支信息。本示例选择Git,并且使用源码项目https://code.aliyun.com/CodePipeline/k8s-java-demo.git

    说明 如果是私有仓库,您需要添加用户名密码类型证书。
  6. 配置java-demo项目源码编译命令。
    构建区域的 增加构建步骤下拉框中,选择 执行Shell脚本,并输入以下构建命令:
    mvn package -B -DskipTests


  7. 注入环境变量IMAGE_TAG。
    1. 增加构建步骤下拉框中选择执行Shell脚本,并配置以下命令。通过该命令,您可以生成变量文件并写入变量的键值对。
      TIME=`date +%Y%m%d%H%M%S`
      echo IMAGE_TAG=$TIME >> env.properties


    2. 增加构建步骤下拉框中选择注入环境变量,并填写变量文件路径。

  8. 配置Docker镜像构建并推送至私有镜像仓库。

    增加构建步骤下拉框中选择镜像构建和发布,并填写相关信息。

    如果您需要把新构建的镜像推送至下图所示的私有镜像仓库,请完成以下参数配置。



    • 镜像仓库名称:填写镜像仓库名称,格式为命名空间/仓库名称。本示例中,填写haoshuwei/java-demo。
    • 镜像版本号:填写镜像版本号,例如$IMAGE_TAG。
    • Registry地址:填写Registry地址,例如杭州区域的Registry地址https://registry.cn-hangzhou.aliyuncs.com/v2/
    • Registry证书:创建Registry类型的证书。
    • Dockerfile路径:填写Dockerfile路径。该路径必须位于源码项目的根目录下。
  9. 配置部署Kubernetes应用。

    增加构建步骤下拉框中选择部署Kubernetes(新),并填写相关信息。

    1. 选择认证方式

      CodePipeline目前支持证书认证、用户名密码认证和Token认证三种认证方式。Kubernetes集群默认选择证书认证。



    2. 填写API服务器地址

      填写Kubernetes集群的API服务器地址。您可以在容器服务管理控制台查看Kubernetes集群的API Server公网连接端点,例如https://1.12.123.134:6443



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

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

      • 类型:选择Docker授权
      • 客户端Key(key.pem):填写KubeConfig中client-key-data对应的内容。
      • 客户端证书(cert.pem):填写KubeConfig中client-certificate-data对应的内容。

      单击添加添加该证书。

    4. 添加部署配置文件
      添加yaml格式的Kubernetes部署配置文件。如果该文件位于当前项目的workspace下,请直接输入文件名。如果位于当前项目workspace的子目录中,请输入 ..子目录/文件名。不支持添加位于当前项目workspace之外的文件。

    5. 添加状态检查配置

      支持检验的Kubernetes资源对象种类有:pods、daemonsets、deployments、replicasets、replicationcontrollers、statefulsets。如果检验的不是default命名空间下的资源,请在首行填写命名空间名称。请用“:”分隔资源对象种类与资源对象名称。如果一种资源对象有多个名称,请用“,”分隔。每一行描述一种资源对象。



      说明 请严格按照说明填写单词,不要删减字母。请勿填写多余的空格或者换行。
    6. 添加变量申明配置,声明需要使用的变量。

      您可以在上文的部署配置文件deployment.yaml中使用变量。请以${IMAGE_TAG}的格式严格填写,其他格式插件会被忽略。

  10. 单击提交保存配置。
  11. 在左侧导航栏中,选择立即构建 > 开始构建,并查看构建日志。


  12. 在Kubernetes集群控制台查看并访问服务。
    1. 登录容器服务管理控制台
    2. 单击集群右侧的控制台,进入 Kubernetes集群控制台页面。
    3. 在左侧导航栏中,选择服务发现与负载均衡 > 服务
    4. 查看并访问部署了Java软件项目的服务。


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

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