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

反转基因福娃  金牌会员 | 2024-7-3 08:36:37 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 918|帖子 918|积分 2754

本文分享自华为云社区《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集群,执行如下代码:
  1. yum install git -y
  2. kubectl create secret docker-registry swr-secret  \
  3. --docker-server=https://swr.cn-******.com \
  4. --docker-username=***** --docker-password=****** \
  5. --dry-run=client -o json |jq -r  \
  6. '.data.".dockerconfigjson"' |base64 -d > /tmp/config.json
  7. kubectl create secret generic swr-secret --from-file=config.json
复制代码
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
  1. def repository_url = "swr.******.com"
  2. def git_repo = "https://******.git"
  3. def app_git_branch = "master"
  4. podTemplate(
  5. inheritFrom: 'agent',
  6. cloud: 'test'
  7. ) {
  8.   node(POD_LABEL) {
  9.       stage('拉取代码'){‘
  10.         echo "pull clone"'
  11.         git branch: "${app_git_branch}", url: "${git_repo}"
  12.     }
  13.   container('maven'){
  14.       stage('编译打包'){
  15.         echo "build package"
  16.         sh "mvn clean package -DskipTests"
  17.     }
  18.   }
  19.   
  20.   container('build'){
  21.       stage('镜像构建'){
  22.         echo "build images and push images"
  23.         sh "/kaniko/executor -f Dockerfile -c . -d  ${repository_url}/tomcat:${BUILD_ID} --force"
  24.     }
  25.   }
  26.   }
  27. }
复制代码
四 效果展示

jenkins agent 运行在autopilot 集群中

推送镜像到SWR镜像堆栈中

jenkins CI阶段视图如下

点击关注,第一时间了解华为云新鲜技术~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表