jenkins Redeploy Rancher2.x Workload插件實現CI/CD

1、概述

在上一篇文章,連接以下:html

https://www.cnblogs.com/xiao987334176/p/13074198.htmljava

已經實現了基於Jenkins+Gitlab+Harbor+Rancher+k8s CI/CD,可是有一個問題,須要jenkins ssh登陸到k8s master節點執行kubectl修改鏡像地址。docker

可是因爲安全問題,不容許jenkins  ssh登陸到k8s master節點。這個時候,能夠經過Redeploy Rancher2.x Workload插件來完成修改鏡像地址。shell

這樣就避免了ssh登陸問題。api

 

2、Rancher建立api key

這個是給Jenkins來使用的。安全

點擊用戶右上角-->API & Keys服務器

 

添加keyssh

 

輸入描述,選擇永不過時,這裏不指定做用範圍。測試

請根據實際狀況來原則ui

 

建立成功後,必定要保存。它只會顯示一次 

 

對於Redeploy Rancher2.x Workload Plugin而言,它只須要用到2個參數。

API訪問地址:
https://10.212.82.86/v3

Bearer Token:
token-96p7n:d8sw4vlff68kqspcwnflbwpptt565c5cszltwbhgb4wcz9w6k5fxmj

下面會重點介紹

 

3、jenkins配置

插件安裝

Redeploy Rancher2.x Workload

這個插件是專門針對Rancher2.x版本的,1.x版本的插件爲Rancher

 

Environment Injector

這個插件是用來修改jenkins 環境變量用的。

 

 

添加憑據

點擊憑據

 

點擊進去

 

再點擊

 

 添加憑據

 

 

類型選擇rancher2.x API Keys

 

說明:

ID:  這個是惟一的,隨便填寫。

描述: 隨便填寫

Endpoint:Rancher api地址,上面Rancher api keys裏面的信息

Trust certification:信任證書,這裏必定要勾選。

Bearer Token:不記名token,,上面Rancher api keys裏面的信息

 

填寫完成後,點擊Test Connection按鈕,出現Connect Succeed!,表示鏈接成功。

最後點擊保存。

 

新建job

名稱爲:test_admin_rancher,選擇自由風格。

 

通用配置

 

參數化構建

 

源碼管理

執行shell腳本

 

完整代碼以下:

export HARBOR_PROJECT='10.212.82.86:1180/java/admin-master'

case $Status  in Deploy) echo "Status:$Status" cd ${WORKSPACE} mvn -f pom.xml clean package cp dockerfile target cd target docker build -t ${HARBOR_PROJECT}:${BUILD_NUMBER} . docker push ${HARBOR_PROJECT}:${BUILD_NUMBER} docker rmi ${HARBOR_PROJECT}:${BUILD_NUMBER} echo "BUILD_ID=${BUILD_NUMBER}" > ${WORKSPACE}/env.txt echo "Completing!" ;; Rollback) echo "Status:$Status"
      echo "Version:${BUILD_ID}"
      echo "BUILD_ID=${BUILD_ID}" > ${WORKSPACE}/env.txt ;; *) exit ;; esac

 這裏有2個步驟,分別是發佈和回滾。在最後一步時,寫入了一個env.txt,它就是用來修改jenkins環境的。

 

注入環境變量

 

寫入路徑 ${WORKSPACE}/env.txt

 

從新部署Rancher2.x工做負載

 

內容以下:

說明:

第一行顯示亂碼的,就是上面jenkins建立的憑證

Workload API Path:工做api路徑,注意:必須是以/project開頭的。先來登陸Rancher後臺,查看工做負載

 

先找到我須要發佈的應用admin-master-->api查看

 

 

 

跳轉的url爲:

https://10.212.82.86/v3/project/c-l5nxb:p-dghs7/workloads/statefulset:default:admin-master

 

 

 

那麼Workload API Path的值,就是:以/project/開頭,一直到後面部分。也就是上面我截圖顯示的。

 

Always Pull Image:這裏表示老是拉取鏡像

Update Images:更新的鏡像地址。10.212.82.86:1180/java/admin-master:${BUILD_ID},注意:這裏有一個變量BUILD_ID。發佈和回滾時,都會用到此變量。

表示鏡像的版本!

 

最後點擊保存

 

 

 

4、測試發佈和回滾

發佈

先來看目錄運行的鏡像版本,顯示是32

 

 

 

登陸jenkins,發佈一下。

點擊Build with Parameters

 

 

 

點擊開始構建

 

 

查看控制檯輸出:

+ export HARBOR_PROJECT=10.212.82.86:1180/java/admin-master + HARBOR_PROJECT=10.212.82.86:1180/java/admin-master + case $Status in
+ echo Status:Deploy Status:Deploy + cd /var/lib/jenkins/workspace/test_admin_rancher + mvn -f pom.xml clean package ... + echo BUILD_ID=1
+ echo 'Completing!' Completing! [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties file path '/var/lib/jenkins/workspace/test_admin_rancher/env.txt' [EnvInject] - Variables injected successfully. set image tag from "10.212.82.86:1180/java/admin-master:32" to "10.212.82.86:1180/java/admin-master:1" redeploy Rancher2.x workload succeed! Finished: SUCCESS

能夠看到鏡像更新爲:10.212.82.86:1180/java/admin-master:1

 

登陸jenkins服務器,查看環境變量文件

# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt BUILD_ID=1

注意:此文件定義的環境會覆蓋jenkins的環境變量,所以鏡像版本爲1。

 

刷新Rancher頁面,發現地址已經更改過來了。

 

 

回滾

假設我須要回滾版本到32,請確保harbor倉庫中,此鏡像存在。

 

選擇回滾,輸入32

 

 

查看控制檯輸出:

+ export HARBOR_PROJECT=10.212.82.86:1180/java/admin-master + HARBOR_PROJECT=10.212.82.86:1180/java/admin-master + case $Status in
+ echo Status:Rollback Status:Rollback + echo Version:32 Version:32
+ echo BUILD_ID=32 [EnvInject] - Injecting environment variables from a build step. [EnvInject] - Injecting as environment variables the properties file path '/var/lib/jenkins/workspace/test_admin_rancher/env.txt' [EnvInject] - Variables injected successfully. set image tag from "10.212.82.86:1180/java/admin-master:1" to "10.212.82.86:1180/java/admin-master:32" redeploy Rancher2.x workload succeed! Finished: SUCCESS

能夠看到鏡像更新爲:10.212.82.86:1180/java/admin-master:32

 

登陸jenkins服務器,查看環境變量文件

# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt BUILD_ID=32

注意:此文件定義的環境會覆蓋jenkins的環境變量,所以鏡像版本爲32。

 

刷新Rancher頁面,發現地址已經更改過來了。

 

 

總結

經過jenkins Redeploy Rancher2.x Workload插件,調用Rancher api,修改鏡像地址,完成了應用服務的發佈和回滾。

在上篇文章中,用到了Pipeline。可是這篇文章中,用的是自由風格。

其實我也想用Pipeline,可是我不知道如何在Pipeline中調用Redeploy Rancher2.x Workload插件,因此只能用自由風格了。

相關文章
相關標籤/搜索