CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 CodePipeline。

CodePipeline服务介绍及开通

阿里云CodePipeline是一款提供持续集成/持续交付能力,并完全兼容Jenkins的能力和使用习惯的SAAS化产品。
它的优点在于:
(1)CodePipeline提供构建资源,无需用户运维,开箱即用;
(2)与阿里云产品生态无缝集成;
(3)兼容开源Jenkins使用习惯、轻量;
(4)免费;
更多关于CodePipeline的内容请参考CodePipeline产品帮助文档

使用说明

使用CodePipeline之前,您需要先开通产品:

  1. 登录CodePipeline控制台 并开通服务
  2. 同意RAM的CodePipeline角色授权。
    CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

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

1. 点击 “新建” 并 “输入项目名称”, 选择 “构建一个*风格的项目”, 最后点击 “下一步”进入到项目配置页面

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

2. 配置 “基本信息” 区域, 选择构建节点,本示例中选择 “国内java构建环境(缓存)”

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

3. 配置 “源码管理” 区域, 分别配置源码仓库url以及分支信息,本示例使用源码项目为:
https://code.aliyun.com/CodePipeline/k8s-java-demo.git  

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

4. 配置java-demo项目源码编译命令

在 “构建” 区域 点击 “增加构建步骤” 选择 “执行Shell脚本” 并配置命令:

mvn package -B -DskipTests

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

5. 注入一个环境变量 IMAGE_TAG

(1)再增加一个 “执行Shell脚本” 步骤并配置命令:

TIME=`date +%Y%m%d%H%M%S`
echo IMAGE_TAG=$TIME >> env.properties

(2)增加 “注入环境变量” 步骤并填写变量文件路径
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

6. 配置docker镜像构建并推送至私有镜像仓库

在 “构建” 区域 增加构建步骤 “镜像构建和发布”,填写相关信息,例如我要把新构建的镜像推送至我的私有镜像仓库信息如下:
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

则CodePipeline项目中 “镜像构建和发布” 对应的参数项则为:
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

7. 配置部署Kubernetes

在 “构建” 区域 增加构建步骤 “部署Kubernetes(新)”,填写相关信息。

  • 选择 认证方式
    CodePipeline目前支持 证书认证,用户名密码认证 和 Token认证 三种认证方式。如果是 阿里云容器服务Kubernetes集群,默认都是 证书认证。

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

  • 填写 API服务器地址
    请输入Kubernetes API 服务器地址,您可以在阿里云容器服务控制台查看Kubernetes集群 API Server 公网连接端点,例如,https://1.12.123.134:6443

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

  • 添加 证书
    本示例使用 证书认证 方式。

在集群 基本信息 页面,找到 配置集群凭据 中提供的 KubeConfig
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
添加 Docker授权 类型证书:
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
client-key-data 的内容(冒号后面的字符串)填入 客户端Key 对话框。
client-certificate-data 的内容(冒号后面的字符串)填入 客户端证书 对话框。

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

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

  • 添加 状态检查配置
    支持检验的 Kubernetes Kind: pods,daemonsets,deployments,replicasets,replicationcontrollers,statefulsets。如果检验的不是 default namespace 下的资源,请在首行填写 namespace 名称。请用 “:” 分隔 Kubernetes Kind 和 Kind name, 用 “,” 分隔多个 Kind name。每一行描述一种 Kubernetes Kind。

注意:请严格按照说明填写单词,不要删减字母;请勿填写多余的空格或者换行。
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

  • 添加 变量申明配置
    上文的部署配置文件deployment.yaml中使用变量,请以 ${IMAGE_TAG} 格式严格填写,其他格式插件将忽略。

整个部署Kubernetes应用的配置如下:
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

8. 点击 提交 进行保存

整个项目的完整配置如下:
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇
CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

9. 点击 立即构建并查看构建日志

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

10. 在Kubernetes集群控制台查看服务并访问

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

了解更多CodePipeline内容,请访问https://www.aliyun.com/product/codepipeline
了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservice

上一篇:android中include和merge标记


下一篇:大数据到底是不是“算命”?技术大牛们这样说