本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 CodePipeline。
CodePipeline服务介绍及开通
阿里云CodePipeline是一款提供持续集成/持续交付能力,并完全兼容Jenkins的能力和使用习惯的SAAS化产品。
它的优点在于:
(1)CodePipeline提供构建资源,无需用户运维,开箱即用;
(2)与阿里云产品生态无缝集成;
(3)兼容开源Jenkins使用习惯、轻量;
(4)免费;
更多关于CodePipeline的内容请参考CodePipeline产品帮助文档
使用说明
使用CodePipeline之前,您需要先开通产品:
- 登录CodePipeline控制台 并开通服务
- 同意RAM的CodePipeline角色授权。
构建java-demo项目并部署到Kubernetes
1. 点击 “新建” 并 “输入项目名称”, 选择 “构建一个*风格的项目”, 最后点击 “下一步”进入到项目配置页面
2. 配置 “基本信息” 区域, 选择构建节点,本示例中选择 “国内java构建环境(缓存)”
3. 配置 “源码管理” 区域, 分别配置源码仓库url以及分支信息,本示例使用源码项目为:
https://code.aliyun.com/CodePipeline/k8s-java-demo.git
4. 配置java-demo项目源码编译命令
在 “构建” 区域 点击 “增加构建步骤” 选择 “执行Shell脚本” 并配置命令:
mvn package -B -DskipTests
5. 注入一个环境变量 IMAGE_TAG
(1)再增加一个 “执行Shell脚本” 步骤并配置命令:
TIME=`date +%Y%m%d%H%M%S`
echo IMAGE_TAG=$TIME >> env.properties
(2)增加 “注入环境变量” 步骤并填写变量文件路径
6. 配置docker镜像构建并推送至私有镜像仓库
在 “构建” 区域 增加构建步骤 “镜像构建和发布”,填写相关信息,例如我要把新构建的镜像推送至我的私有镜像仓库信息如下:
则CodePipeline项目中 “镜像构建和发布” 对应的参数项则为:
7. 配置部署Kubernetes
在 “构建” 区域 增加构建步骤 “部署Kubernetes(新)”,填写相关信息。
- 选择 认证方式
CodePipeline目前支持 证书认证,用户名密码认证 和 Token认证 三种认证方式。如果是 阿里云容器服务Kubernetes集群,默认都是 证书认证。
- 填写 API服务器地址
请输入Kubernetes API 服务器地址,您可以在阿里云容器服务控制台查看Kubernetes集群 API Server 公网连接端点,例如,https://1.12.123.134:6443。
- 添加 证书
本示例使用 证书认证 方式。
在集群 基本信息 页面,找到 配置集群凭据 中提供的 KubeConfig 。
添加 Docker授权 类型证书:
把 client-key-data 的内容(冒号后面的字符串)填入 客户端Key 对话框。
把 client-certificate-data 的内容(冒号后面的字符串)填入 客户端证书 对话框。
- 添加 部署配置文件
输入yaml格式的Kubernetes部署配置文件。如果文件在当前项目的workspace下,请直接输入文件名,如果在项目workspace的子目录中,请输入 ..子目录/文件名。不支持位于当前项目的workspace之外的文件。
- 添加 状态检查配置
支持检验的 Kubernetes Kind: pods,daemonsets,deployments,replicasets,replicationcontrollers,statefulsets。如果检验的不是 default namespace 下的资源,请在首行填写 namespace 名称。请用 “:” 分隔 Kubernetes Kind 和 Kind name, 用 “,” 分隔多个 Kind name。每一行描述一种 Kubernetes Kind。
注意:请严格按照说明填写单词,不要删减字母;请勿填写多余的空格或者换行。
- 添加 变量申明配置
上文的部署配置文件deployment.yaml中使用变量,请以 ${IMAGE_TAG} 格式严格填写,其他格式插件将忽略。
整个部署Kubernetes应用的配置如下:
8. 点击 提交 进行保存
整个项目的完整配置如下:
9. 点击 立即构建并查看构建日志
10. 在Kubernetes集群控制台查看服务并访问
了解更多CodePipeline内容,请访问https://www.aliyun.com/product/codepipeline;
了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservice