RHEL8安裝Jenkins串接K8S為Agent2

RHEL8安裝Jenkins串接K8S為Agent — 實作

ZONGRU Li
Jun 26, 2022

接著實作部分其實是參考YT的介紹來跑:

首先要先取得OCPAPI ServerURL位置,後面會用到:

#直接在OCP的堡壘機拿到該資訊,執行以下指令:
oc cluster-info
#亦或是用kubectl:
kubectl cluster-info

或是在前面拿到的config檔內看到位置:

#展開SA(ServiceAccount)的身分檔,看到該內容,例如在Jenkins Container內:
cat ~/.kube/config

往下會看到:

總之拿到上面紅框的URL位置,等等會用到!

Jenkins安裝kubernetes插件:

我這邊順便嘗試安裝並且重啟:

該插件的doc(LINK)

畫面會立刻看到:

這邊赫然發現這樣安排重啟後,上面的畫面不會重載,就卡在那邊

仔細查看然後發現Jenkins Container會直接消失:

一樣重啟該Container:

#執行以下指令重新建立Jenkins的Container:
sudo podman run -p 8080:8080 -p 50000:50000 -d \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts

在上面重建完Jenkins後,Web才會自己載入:

登入後確認:

接著就是做相關的設置用以串接K8S平台(這邊用的是OCP)

首先要先把Jenkins本身Controller設置成不要跑任何Job:

預設會看到:

改成:

其實就是設定成要指定標籤Label才可以把Jenkins本身Controller來跑Job

接著才是設置讓K8S平台來當agent,來跑Jenkins的Job設置:

然後會見到:

這邊就做一些名稱調整,不叫做kubernetes了,然後細部設定展開來設置

把上面畫面中的details點開來填:

往下拉還有很多項目,其中有一個測試:

可以跑跑看:

這邊看起來是成功了,歸功於我前一篇已經把SA/Role/RoleBindings都搞定

不然還滿建議看看上面YT影片中會出現哪些錯誤訊息,都提示得很清楚

很推薦自行看看!

甚至如果是用Token來跑oc/kubectl指令

還需要把身分Token設置成Jenkins憑證(Secret TXT形式的Jekins憑證)

可能會用到的指令整理如下:

#參考YT影片整理的內容:
kubectl create namespace jenkins
kubectl create serviceaccount jenkins --namespace=jenkins#拿到上述SA的Token,要拿來設置Jenkins的Secret TXT憑證:
kubectl describe secret $(kubectl describe serviceaccount jenkins --namespace=jenkins | grep Token | awk '{print $2}') --namespace=jenkins
#給予上述SA權限:
kubectl create rolebinding jenkins-admin-binding --clusterrole=admin --serviceaccount=jenkins:jenkins --namespace=jenkins

但是我用OCPWeb Console介面大概都搞定上面要幹的事了

接著特別要注意的是:

這邊可以先如YT大佬的介紹,使用看看WebSocket方式

儘管上面勾的是WebSocket,他還是會使用到下面寫的Jenkins URL位置!

如果系統上有設置一些轉繞,則那一行下面的"Jenkins URL"就要另外填!

實際建立Job,並以OCP的Pod來當作Agent運行:

接著就要見證可不可以運作了!

建立pipeline Job:

使用YT大佬給的pipeline範本,稍微調整:

注意到上面的agent下一層我改為OCP(呼應剛剛的設置名稱)

就這樣跑看看:

所以改回來:

調整:

監看一下OCP那邊狀況:

執行後立馬看到:

放大...

Jenkins Log看到:

然後過一段時間發現怪怪的:

不過離開監控模式後觀察是看到正常沒有pod:

Containeragent運行:

接著試試以下這個pipeline:

如上可以看到會用到兩個Container(一個Maven,一個Node)

執行後來細細觀看Jenkins運行的log:

這邊YT解說有一個重點是,即便是不同的Container

他其實都是共用同一個workspace空間

簡單做個實驗:

改成:

也就是以下:

在跑看看能否正常看到那個echo txt結果:

可以!

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet