以 Java 项目为例,实现 Jenkins 对接 CCE Autopilot 集群

本文分享自华为云社区《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 配置文件

Clouds 中配置连接 autopilot 集群
在系统管理中选择 clouds,点击新增

Cloud name
: 自定义即可
Type
: 选择 Kubernetes

Kubernetes地址
: 填写 autopilot 集群的 apiserver 连接地址
Kubernetes命名空间
: 动态 agent 运行的命名空间,可自定义

凭据
: 选择步骤 1 创建的凭据,选择完凭据之后点击测试连接,连接正常就能查看集群版本
jenkins地址
: jenkins 的访问地址
jenkins通道
: jenkins 访问的 50000 端口,需要创建 svc 开发该端口

配置完成,最后保存即可。
3.2 配置 pod 模板
在 Clouds 中选择 Pod Templates 然后点击创建

名称
: 可自定义
命名空间
: 选择和 Clouds 配置一样即可,如:default
用法
: 默认即可。例如: 只允许运行绑定到这台机器的 job

配置基础镜像模版
名称
: 填写 jnlp,固定写法
Docker镜像
: inbound 镜像,执行 docker pull jenkins/inbound-agent,然后上传到 swr
工作目录
: 自定义

配置 Maven 打包镜像
名称
: 填写 maven,可自定义,写 pipeline 时会用到
Docker镜像
: maven 镜像,docker pull maven:3.8.1-jdk-8,然后又推送到 swr 镜像仓库
工作目录
: 自定义
运行命令
: sleep
运行参数
: 9999999

配置 build 镜像任务
名称
: 填写 build,可自定义,写 pipeline 会用到
Docker镜像
: kaniko 镜像,docker pull aiotceo/kaniko-executor,提前推送到 SWR
工作目录
: 可以自定义
运行命令
: /busybox/cat

3.3 其他配置
对 Maven 的打包目录进行缓存
前提
:需要前提创建一个 PVC 存储
申明值
:填写创建的 PVC 存储名称
挂载路径
:固定填写/root/.m2

配置拉取镜像的 secret
名称
:固定填写 default-secret

配置连接 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,固定写法

3.4 编写 pipeline
四 结果展示
jenkins agent 运行在 autopilot 集群中

推送镜像到 SWR 镜像仓库中

jenkins CI 阶段视图如下

版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/5e14f380c4a39abb3b30263b1】。文章转载请联系作者。
评论