使用CCE集群安裝部署Jenkins
Jenkins是一個(gè)開(kāi)源的、提供友好操作界面的持續(xù)集成(CI)工具,屬于DevOps一環(huán),主要用于持續(xù)、自動(dòng)的構(gòu)建/測(cè)試軟件項(xiàng)目、監(jiān)控外部任務(wù)的運(yùn)行。
Jenkins用Java語(yǔ)言編寫(xiě),可在Tomcat等流行的servlet容器中運(yùn)行,也可獨(dú)立運(yùn)行。通常與版本管理工具(SCM)、構(gòu)建工具結(jié)合使用。Jenkins可以很好的支持各種語(yǔ)言的項(xiàng)目構(gòu)建,也完全兼容Maven、Ant、Gradle等多種第三方構(gòu)建工具,同時(shí)跟SVN、GIT等常用的版本控制工具無(wú)縫集成,也支持直接對(duì)接GitHub等源代碼托管網(wǎng)站。
方案架構(gòu)
Jenkins部署分為以下兩種模式:
- 一種是直接使用單Master安裝Jenkins,直接進(jìn)行任務(wù)管理和業(yè)務(wù)構(gòu)建發(fā)布,但可能存在一定的生產(chǎn)安全風(fēng)險(xiǎn)。
- 一種是Master加Agent模式。Master節(jié)點(diǎn)主要是處理調(diào)度構(gòu)建作業(yè),把構(gòu)建分發(fā)到Agent實(shí)際執(zhí)行,監(jiān)視Agent的狀態(tài)。業(yè)務(wù)構(gòu)建發(fā)布的工作交給Agent進(jìn)行,即執(zhí)行Master分配的任務(wù),并返回任務(wù)的進(jìn)度和結(jié)果。
本實(shí)踐采用Master加Agent模式,Master和Agent均為容器化安裝的方案,并使用在K8s集群實(shí)現(xiàn)動(dòng)態(tài)Agent。
- Jenkins Master負(fù)責(zé)管理任務(wù)(Job),為了能夠利用Kubernetes平臺(tái)上的資源,需要在Master上安裝Kubernetes的插件。
- Kubernetes平臺(tái)負(fù)責(zé)產(chǎn)生Pod,用作Jenkins Agent執(zhí)行Job任務(wù)。當(dāng)Jenkins Master上有Job被調(diào)度時(shí),Jenkins Master通過(guò)Kubernetes插件向Kubernetes平臺(tái)發(fā)起請(qǐng)求,請(qǐng)Kubernetes根據(jù)Pod模板產(chǎn)生對(duì)應(yīng)的Pod對(duì)象,Pod對(duì)象會(huì)向Jenkins Master發(fā)起請(qǐng)求,Master連接成功后,就可以在Pod上面執(zhí)行Job了。
Jenkins Master安裝部署
Jenkins Master采用容器化安裝的方案,負(fù)責(zé)管理任務(wù)(Job)。在CCE集群中創(chuàng)建Jenkins工作負(fù)載,并通過(guò)負(fù)載均衡的方式進(jìn)行訪問(wèn)。完成初始配置后,即可進(jìn)入Jenkins頁(yè)面。
Jenkins Agent配置
Jenkins可以在集群中創(chuàng)建固定Agent,也可以使用pipeline與CCE的對(duì)接,動(dòng)態(tài)提供容器化的Agent。其中動(dòng)態(tài)Agent還需要使用Kubernetes相關(guān)插件配置集群認(rèn)證信息及用戶權(quán)限。
- 固定Agent:Agent容器一直運(yùn)行,任務(wù)構(gòu)建完成后不會(huì)銷毀,創(chuàng)建完成后將一直占用集群資源,配置過(guò)程較簡(jiǎn)單。
- 動(dòng)態(tài)Agent:構(gòu)建任務(wù)時(shí)動(dòng)態(tài)創(chuàng)建Agent容器,并在任務(wù)構(gòu)建完成后銷毀容器,可實(shí)現(xiàn)資源動(dòng)態(tài)分配,資源利用率高,但是配置過(guò)程較為復(fù)雜。
使用Jenkins構(gòu)建流水線
Jenkins流水線與SWR對(duì)接,在Agent中調(diào)用docker build/login/push相關(guān)的命令,實(shí)現(xiàn)自動(dòng)化的容器鏡像打包、推送。
您也可以通過(guò)流水線實(shí)現(xiàn)Kubernetes資源(deployment/service/ingress/job等)的部署、升級(jí)等能力。