以 Java 项目为例,实现 Jenkins 对接 CCE Autopilot 集群
![以Java项目为例,实现Jenkins对接CCE Autopilot集群](https://static001.geekbang.org/infoq/48/48569cc7bd367e2c536a74b54f0e4c32.jpeg)
本文分享自华为云社区《Jenkins对接CCE autopilot集群实战》,作者: 可以交个朋友。
一 背景
鉴于日趋流行的serverless
技术架构、以及用户经常谈及的降本的需求。考虑 Jenkins 主从架构的特性,slave 节点可以在工作的时候部署在任意平台上执行 master 节点下发的任务,因此可以基于 CCE Autopilot 集群为 Jenkins 的 agent 节点设置运行平台。
二 简介
以 java 项目为例,完成 java 业务从代码拉取、maven 编译、构建镜像、推送镜像、修改 yaml 文件推送到代码仓库等一系列 CI 流程。
jenkins agent 容器使用谷歌提供的
Kaniko
镜像
三 操作实践
提前安装好 jenkis,并配置 kubernetes 插件。
3.1 配置 jenkins 连接 autopilot 集群
创建 autopilot 集群的连接凭据
类型
: 选择 secret file
file
: 上传 autopilot 集群的 kubeconfig 配置文件
![](https://static001.geekbang.org/infoq/52/5279a0cad70318e8203164b82115a430.png)
Clouds 中配置连接 autopilot 集群
在系统管理中选择 clouds,点击新增
![](https://static001.geekbang.org/infoq/a2/a2511fab868a0f83bfbf29543ea230df.png)
Cloud name
: 自定义即可
Type
: 选择 Kubernetes
![](https://static001.geekbang.org/infoq/7f/7f6fde87e167a3f9a007f860652630da.png)
Kubernetes地址
: 填写 autopilot 集群的 apiserver 连接地址
Kubernetes命名空间
: 动态 agent 运行的命名空间,可自定义
![](https://static001.geekbang.org/infoq/79/79279209e72f018682cd08774635e7e5.png)
凭据
: 选择步骤 1 创建的凭据,选择完凭据之后点击测试连接,连接正常就能查看集群版本
jenkins地址
: jenkins 的访问地址
jenkins通道
: jenkins 访问的 50000 端口,需要创建 svc 开发该端口
![](https://static001.geekbang.org/infoq/a2/a26bff5bc32e76279a6952875f5eab37.png)
配置完成,最后保存即可。
3.2 配置 pod 模板
在 Clouds 中选择 Pod Templates 然后点击创建
![](https://static001.geekbang.org/infoq/f6/f639b6c51a728c0faa9c91a3251d6d40.png)
名称
: 可自定义
命名空间
: 选择和 Clouds 配置一样即可,如:default
用法
: 默认即可。例如: 只允许运行绑定到这台机器的 job
![](https://static001.geekbang.org/infoq/73/738ed4bc960d0b16c7b8e93bc583537f.png)
配置基础镜像模版
名称
: 填写 jnlp,固定写法
Docker镜像
: inbound 镜像,执行 docker pull jenkins/inbound-agent,然后上传到 swr
工作目录
: 自定义
![](https://static001.geekbang.org/infoq/e6/e6f739ab09712650636fc59c638e1181.png)
配置 Maven 打包镜像
名称
: 填写 maven,可自定义,写 pipeline 时会用到
Docker镜像
: maven 镜像,docker pull maven:3.8.1-jdk-8,然后又推送到 swr 镜像仓库
工作目录
: 自定义
运行命令
: sleep
运行参数
: 9999999
![](https://static001.geekbang.org/infoq/44/44c9b5b23a6cbfc6dbb08cac4083405f.png)
配置 build 镜像任务
名称
: 填写 build,可自定义,写 pipeline 会用到
Docker镜像
: kaniko 镜像,docker pull aiotceo/kaniko-executor,提前推送到 SWR
工作目录
: 可以自定义
运行命令
: /busybox/cat
![](https://static001.geekbang.org/infoq/26/264a86b990d67b68cb366d9268912af1.png)
3.3 其他配置
对 Maven 的打包目录进行缓存
前提
:需要前提创建一个 PVC 存储
申明值
:填写创建的 PVC 存储名称
挂载路径
:固定填写/root/.m2
![](https://static001.geekbang.org/infoq/e8/e8734757a8f9658bea3ab2790372ef9f.png)
配置拉取镜像的 secret
名称
:固定填写 default-secret
![](https://static001.geekbang.org/infoq/79/79e82461376362551cd6c6afd405165a.png)
配置连接 swr 的 secret
登录 ECS 服务器,配置连接 autopilot 集群,执行如下代码:
docker-server
:填写 swr 的接口地址
docker-username
:填写 region@ak,通过 AK,SK 获取长期登录指令。 例如: cn-north-7@HL9SLYV9UDY428M6TAJ5
docker-password
:填写 SK,通过 AK,SK 获取长期登录指令。
配置 Secret Volume
Secret名称
: 填写上面生成的 secret 名字
挂载路径
: kaniko/.docker,固定写法
![](https://static001.geekbang.org/infoq/d9/d9839367cf756e7208925a117838141c.png)
3.4 编写 pipeline
四 结果展示
jenkins agent 运行在 autopilot 集群中
![](https://static001.geekbang.org/infoq/ba/baa3d68dc0ac1311558cfeb98edf4827.png)
推送镜像到 SWR 镜像仓库中
![](https://static001.geekbang.org/infoq/00/008025ea791a6561bfef6bbf6c873d7b.png)
jenkins CI 阶段视图如下
![](https://static001.geekbang.org/infoq/1c/1ce76935de6486cf3325c2e35f0cd015.png)
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/5e14f380c4a39abb3b30263b1】。文章转载请联系作者。
评论