1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上-創(chuàng)新互聯(lián)

資源準備

創(chuàng)新互聯(lián)建站長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為昌吉企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計昌吉網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1. 穩(wěn)定運行的K8S集群一套(沒有可使用Rancher快速部署一個)

2. Jenkins master一臺

3. Jenkins pipeline基礎(chǔ)知識:見   鏈接jenkinspipeline

傳統(tǒng)Jenkins使用中暴露的問題

1. 每個業(yè)務(wù)團隊使用的編譯環(huán)境不統(tǒng)一,需要準備大量的slave節(jié)點

2. Slave很多,空閑期(如夜里)資源浪費

3. 雖然Slave很多,但高峰期隊列等待構(gòu)建任務(wù)依然在排隊,資源搶占嚴重

4. 構(gòu)建任務(wù)多,workspace空間不足

5. 性能瓶頸,偶爾有slave節(jié)點內(nèi)存泄漏問題

將Jenkins的slave節(jié)點部署到K8S的原理

K8S有pod的概念,一個pod內(nèi)可以有多個container。通過每次構(gòu)建時創(chuàng)建一個新的pod,掛載一個容器的slave節(jié)點的方式構(gòu)建。構(gòu)建后將構(gòu)建產(chǎn)物及結(jié)果報告輸出,并在構(gòu)建后銷毀pod。

方案的優(yōu)勢

1. 共享k8s集群資源,按需分配資源,不會出現(xiàn)slave機由于資源限制或者executor限制導(dǎo)致的資源搶占,構(gòu)建任務(wù)排隊現(xiàn)象。

2. 空閑期釋放掉在k8s集群上申請的資源 ,其他團隊可以復(fù)用該資源。如大數(shù)據(jù)團隊、AI團隊可以定時在夜里申請k8s資源計算模型,跑spark任務(wù)等。

3. 每次構(gòu)建都是新環(huán)境,內(nèi)存泄漏等問題不會互相影響,workspace空間不會共享。

4. 可根據(jù)業(yè)務(wù)需求,靈活的啟用不同環(huán)境的鏡像用于構(gòu)建。如jdk版本、maven版本、不同語言的編譯環(huán)境等,都可以做到按需創(chuàng)建。

具體步驟

1. Jenkins master下載插件

點擊系統(tǒng)管理 ——> 插件管理,選擇要安裝的插件Kubernetes plugin安裝

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

2. 配置K8S serverapi地址

在 點擊系統(tǒng)管理 ——> 系統(tǒng)設(shè)置 ——> Add a new cloud ——> 選擇kubernetes,填寫相關(guān)信息

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

為了所有構(gòu)建步驟由pipeline代碼管理比較靈活,所以這里只配置k8s集群地址,不設(shè)置pod模版

3. 創(chuàng)建pipeline任務(wù)

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

podTemplate(label: 'jenkins-slave', cloud: 'kubernetes'){

    node('jenkins-slave') {

        stage('git-checkout') {

                sh 'pwd'

        }

    }

}

4. 簡單功能驗證

執(zhí)行流水線,可以看到j(luò)enkins master自動在k8s集群上拉起一個slave節(jié)點,并執(zhí)行了stage內(nèi)的命令

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

5. 準備構(gòu)建環(huán)境鏡像

因為默認啟動的jenkins slave節(jié)點只具備基礎(chǔ)功能,不具備類似maven這種構(gòu)建環(huán)境。所以我們需要準備不同語言所需要的攜帶不同構(gòu)建環(huán)境的鏡像。

可以通過docker search需要對應(yīng)需求的鏡像

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

也可以自己做鏡像,具體dockerfile寫法參考如下:

https://github.com/jenkinsci/docker-jnlp-slave

6. 編寫構(gòu)建pipeline

語法參見jenkins語法生成器中podTemplate,可自行生成相關(guān)流水線語法

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

7.收集構(gòu)建過程數(shù)據(jù)

由于構(gòu)建環(huán)境鏡像在job執(zhí)行成功后會被銷毀,所以收集過程中的數(shù)據(jù)成為這種方案中最關(guān)鍵的一個步驟。下述三個點是我們一定需要收集的信息:

l   構(gòu)建產(chǎn)物

所有構(gòu)建產(chǎn)物應(yīng)該交給制品庫統(tǒng)一管理,pod中的slave節(jié)點機構(gòu)建后即可將制品傳輸?shù)街破穾熘?,完成后pod銷毀

l   構(gòu)建環(huán)境變量

由于構(gòu)建環(huán)境已經(jīng)銷毀,所以需要通過統(tǒng)一平臺管理每次構(gòu)建時對應(yīng)的構(gòu)建環(huán)境,如jdk版本,maven版本等,所以該環(huán)境最好交由制品庫管理,推薦使用Artifactory記錄構(gòu)建過程。

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

l   構(gòu)建元數(shù)據(jù)

構(gòu)建過程中會執(zhí)行一些如代碼靜態(tài)掃描,單元測試等,我們把這種結(jié)果數(shù)據(jù)稱之為軟件生命周期的元數(shù)據(jù),同樣這些結(jié)果會隨著構(gòu)建環(huán)境的銷毀一起丟失,我們需要通過api收集結(jié)果數(shù)據(jù),并與本次構(gòu)建過程或構(gòu)建產(chǎn)物相關(guān)聯(lián)。建議使用Artifactory管理構(gòu)建過程中的元數(shù)據(jù)。

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

最佳實踐

1.統(tǒng)一管理構(gòu)建環(huán)境

由運維維護K8S及Jenkins服務(wù)穩(wěn)定,并按需求制作攜帶不同構(gòu)建環(huán)境的jenkins slave鏡像。

2.由持續(xù)集成團隊統(tǒng)一編寫、統(tǒng)一管理pipeline模版,將模版存儲在git倉庫中,并提供詳細說明文檔,指導(dǎo)開發(fā)人員如何調(diào)用,如何傳參。

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

3.業(yè)務(wù)部門通過jenkins共享庫特性調(diào)用git倉庫中的構(gòu)建模版,傳入所需的構(gòu)建環(huán)境和源碼路徑以及其他變量進行構(gòu)建任務(wù)設(shè)置

1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上

4. 持續(xù)集成團隊需要在構(gòu)建模版中定義內(nèi)容收集元數(shù)據(jù),收集環(huán)境變量,設(shè)置質(zhì)量關(guān)卡,做到讓開發(fā)無感知的情況下,完成所有信息的收集。這樣就可以做到,開發(fā)人員無需學(xué)習(xí)復(fù)雜的groovy語法編寫pipeline;管理人員可以標準化構(gòu)建流程,并收集所有質(zhì)量關(guān)卡數(shù)據(jù),并會寫到統(tǒng)一制品倉庫管理。

當前文章:1分鐘將你的jenkins構(gòu)建環(huán)境遷移到K8S集群上-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://bm7419.com/article24/cecije.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、網(wǎng)站收錄、建站公司、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作