Jenkins对接CCE autopilot集群实战

举报
可以交个朋友 发表于 2024/06/22 16:12:54 2024/06/22
【摘要】 考虑Jenkins主从架构的特性,slave节点可以在工作的时候部署在任意平台上执行master节点下发的任务,因此可以基于CCE Autopilot集群为Jenkins的agent节点设置运行平台

一 背景

鉴于日趋流行的serverless技术架构、以及用户经常谈及的降本的需求。考虑Jenkins主从架构的特性,slave节点可以在工作的时候部署在任意平台上执行master节点下发的任务,因此可以基于CCE Autopilot集群为Jenkins的agent节点设置运行平台。


二 简介

  • 以java项目为例,完成java 业务从代码拉取、maven编译、构建镜像、推送镜像、修改yaml文件推送到代码仓库等一系列CI流程。
  • jenkins agent容器使用谷歌提供的Kaniko镜像

三 操作实践

提前安装好jenkis,并配置kubernetes插件。


3.1 配置jenkins连接autopilot集群

  1. 创建autopilot集群的连接凭据
    类型: 选择secret file
    file: 上传autopilot集群的kubeconfig配置文件
    image.png

  2. Clouds中配置连接autopilot集群
    在系统管理中选择clouds,点击新增
    image.png
    Cloud name: 自定义即可
    Type: 选择Kubernetes
    image.png
    Kubernetes地址: 填写autopilot集群的apiserver连接地址
    Kubernetes命名空间: 动态agent运行的命名空间,可自定义
    image.png
    凭据: 选择步骤1创建的凭据,选择完凭据之后点击测试连接,连接正常就能查看集群版本
    jenkins地址: jenkins的访问地址
    jenkins通道: jenkins访问的50000端口,需要创建svc开发该端口
    image.png
    配置完成,最后保存即可。


3.2 配置pod模板

  1. 在Clouds中选择Pod Templates然后点击创建
    image.png
    名称: 可自定义
    命名空间: 选择和Clouds配置一样即可,如:default
    用法: 默认即可。例如: 只允许运行绑定到这台机器的job
    image.png

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

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

  4. 配置build镜像任务
    名称: 填写build,可自定义,写pipeline会用到
    Docker镜像: kaniko镜像,docker pull gcr.io/kaniko-project/executor:v1.23.2-debug,提前推送到SWR
    工作目录: 可以自定义
    运行命令: sleep 100000000
    image.png


3.3 其他配置

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

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

  3. 配置连接swr的secret
    登录ECS服务器,配置连接autopilot集群,执行如下代码:

    yum install git -y 
    kubectl create secret docker-registry swr-secret  \
    --docker-server=https://swr.cn-******.com \
    --docker-username=***** --docker-password=****** \
    --dry-run=client -o json |jq -r  \
    '.data.".dockerconfigjson"' |base64 -d > /tmp/config.json
    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获取长期登录指令。

  4. 配置Secret Volume
    Secret名称: 填写上面生成的secret名字
    挂载路径: kaniko/.docker,固定写法
    image.png


3.4 编写pipeline

def repository_url = "swr.******.com"
def git_repo = "https://******.git"
def app_git_branch = "master"

podTemplate(
inheritFrom: 'agent',
cloud: 'test'
) {
  node(POD_LABEL) {
  	stage('拉取代码'){‘
    	echo "pull clone"'
        git branch: "${app_git_branch}", url: "${git_repo}"
    }
  container('maven'){
  	stage('编译打包'){
    	echo "build package"
        sh "mvn clean package -DskipTests"
    }
  }
  
  container('build'){
  	stage('镜像构建'){
    	echo "build images and push images"
        sh "/kaniko/executor -f Dockerfile -c . -d  ${repository_url}/tomcat:${BUILD_ID} --force"
    }
  }
  }
 }


四 结果展示

  1. jenkins agent 运行在autopilot 集群中
    image.png

  2. 推送镜像到SWR镜像仓库中
    image.png

  3. jenkins CI阶段视图如下
    image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。