以Java專案為例,實現Jenkins對接CCE Autopilot叢集

华为云开发者联盟發表於2024-07-03

本文分享自華為雲社群《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配置檔案

image.png

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模板

在Clouds中選擇Pod Templates然後點選建立

image.png名稱: 可自定義

名稱空間: 選擇和Clouds配置一樣即可,如:default

用法: 預設即可。例如: 只允許執行繫結到這臺機器的job

image.png

配置基礎映象模版

名稱: 填寫jnlp,固定寫法

Docker映象: inbound映象,執行 docker pull jenkins/inbound-agent,然後上傳到swr

工作目錄: 自定義

image.png

配置Maven打包映象

名稱: 填寫maven,可自定義,寫pipeline時會用到

Docker映象: maven映象,docker pull maven:3.8.1-jdk-8,然後又推送到swr映象倉庫

工作目錄: 自定義

執行命令: sleep

執行引數: 9999999

image.png

配置build映象任務

名稱: 填寫build,可自定義,寫pipeline會用到

Docker映象: kaniko映象,docker pull aiotceo/kaniko-executor,提前推送到SWR

工作目錄: 可以自定義

執行命令: /busybox/cat

image.png

3.3 其他配置

對Maven的打包目錄進行快取

前提:需要前提建立一個PVC儲存

申明值:填寫建立的PVC儲存名稱

掛載路徑:固定填寫/root/.m2

image.png

配置拉取映象的secret

名稱:固定填寫default-secret

image.png

配置連線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獲取長期登入指令。

配置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"
    }
  }
  }
 }

四 結果展示

jenkins agent 執行在autopilot 叢集中

image.png

推送映象到SWR映象倉庫中

image.png

jenkins CI階段檢視如下

image.png

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章