helm安装_Helm部署和体验jenkins
運(yùn)行在Kubernetes上的Jenkins
下圖來自rancher官方博客,在kubernetes環(huán)境下,jenkins任務(wù)被交給各個(gè)pod執(zhí)行,這些pod在需要時(shí)被創(chuàng)建,任務(wù)結(jié)束后被銷毀,這樣既能合理利用資源,又能給每個(gè)任務(wù)提供一致的干凈的初始化環(huán)境(也可以保留pod,如查問題的時(shí)候)
如何在kubernetes快速部署jenkins
通過Helm可以快速且簡單的部署多種應(yīng)用,關(guān)于helm的安裝和使用請參考《部署和體驗(yàn)Helm(2.16.1版本)》
環(huán)境信息
本次實(shí)戰(zhàn)的環(huán)境信息如下:
準(zhǔn)備工作
除了提前準(zhǔn)備好kubernetes環(huán)境,還需要做好以下準(zhǔn)備工作:
- 準(zhǔn)備好helm,您可以參考《部署和體驗(yàn)Helm(2.16.1版本)》
- 準(zhǔn)備好NFS服務(wù),這樣就算jenkins的pod被銷毀重建,也不會丟失數(shù)據(jù),NFS服務(wù)的搭建您可以參考《Ubuntu16環(huán)境安裝和使用NFS》
準(zhǔn)備完成后可以開始實(shí)戰(zhàn)了
本次實(shí)戰(zhàn)的namespace
本次實(shí)戰(zhàn)使用名為helm-jenkins的namespace,執(zhí)行以下命令創(chuàng)建:
kubectl create namespace helm-jenkins創(chuàng)建PV
為了后面的jenkins服務(wù)順利啟動,需要預(yù)先部署好pv:
- 新建名為pv-helm-jenkins.yaml的文件,內(nèi)容如下,其中192.168.133.142是NFS服務(wù)器地址,/usr/local/work/test/002是分配給本次實(shí)戰(zhàn)使用的NFS文件夾:
- 執(zhí)行命令kubectl create -f pv-helm-jenkins.yaml,創(chuàng)建pv
- 查看pv是否已經(jīng)就緒:
helm安裝jenkins
- 確保helm2.16.1版本安裝完畢,并且可以正常工作:
- 確保以下helm repo準(zhǔn)備好(如果沒有可以通過helm repo add添加):
- 執(zhí)行以下命令,即可創(chuàng)建jenkins的deployment、service等資源:
- 執(zhí)行完畢后,控制臺輸出以下內(nèi)容:
上述內(nèi)容的第一條給出重要提示:獲取admin賬號密碼的方法,執(zhí)行以下命令即可:
printf $(kubectl get secret --namespace helm-jenkins my-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo如下圖紅框所示,我這里得到了admin密碼為Eq6WxHvJ2V:
- 檢查服務(wù),發(fā)現(xiàn)helm-jenkins這個(gè)namespace下有兩個(gè)服務(wù):my-jenkins和my-jenkins-agent,前者就是jenkins網(wǎng)站,后者用來接收執(zhí)行任務(wù)的jenkins實(shí)例的注冊:
- my-jenkins這個(gè)服務(wù)的類型是LoadBalancer,8080端口被映射到宿主機(jī)的31763端口,因此,使用kubernetes集群中一臺宿主機(jī)的IP,再加上31763端口即可通過瀏覽器訪問,如下圖:
- 至此,jenkins安裝已完成,接下來要做必要的設(shè)置
設(shè)置kubernetes插件
為了讓jenkins在以下模式工作,還需要設(shè)置kubernetes插件
- 點(diǎn)擊下圖紅框中的"Manage Jenkins",進(jìn)入設(shè)置頁面
- 由于很多插件版本較舊,頁面上會有升級提示,這里暫時(shí)用不到,因此直接點(diǎn)擊下圖紅框中的"Configure System"
- 點(diǎn)擊下圖紅框1中的"Test Connection”按鈕,您會見到紅框2中的錯(cuò)誤信息:
- 產(chǎn)生上述錯(cuò)誤的原因,是由于jenkins容器沒有權(quán)限訪問kubernetes的api server,為了解決此問題,要先搞清楚容器的身份,我們知道容器在kubernetes環(huán)境中都有自己的serviceaccount,執(zhí)行命令kubectl get serviceaccount -n helm-jenkins查看當(dāng)前namespace下的serviceaccount:
可見jenkins容器的serviceaccount是default
- 知道了容器的serviceaccount,上述問題就好解決了,我們用RBAC將訪問api server所需權(quán)限綁定給default即可,這里為了省事兒就不將權(quán)限一一列出了,接下來直接給default最高權(quán)限(生產(chǎn)環(huán)境千萬別這么做,必須按需分配);
- 新建名為rbac-helm-jenkins-default.yaml的文件,內(nèi)容如下:
- 執(zhí)行命令kubectl create -f rbac-helm-jenkins-default.yaml使得RBAC生效
- 再次回到之前的頁面點(diǎn)擊"Test Connection"按鈕,如下圖,提示"Connection successful":
- 接下來設(shè)置Pod模板參數(shù),如下圖,namepsace要設(shè)置為helm-jenkins,另外要記下來Labels的值my-jenkins-jenkins-slave,后面會用到:
- 點(diǎn)擊底部的"Save"按鈕,使設(shè)置生效;
- 設(shè)置完畢,接下來創(chuàng)建任務(wù)體驗(yàn)一下kubernetes上的jenkins功能
體驗(yàn)Freestyle project
- 創(chuàng)建一個(gè)Freestyle project,如下圖:
- 如下圖紅框,表單中Label Expression的值是前面記下來的my-jenkins-jenkins-slave:
- 本次任務(wù)的具體內(nèi)容很簡單,執(zhí)行一段shell,輸出"Hello World!",如下圖所示:
- 點(diǎn)擊底部的"Save"按鈕保存
- 點(diǎn)擊下圖紅框中的"Build Now",即可開始構(gòu)建:
- 如果是第一次執(zhí)行,會觸發(fā)jenkins任務(wù)pod的docker鏡像的下載,您需要耐心等候一會兒;
- 此時(shí)去控制臺執(zhí)行命令kubectl get pods -n helm-jenkins查看pod,會發(fā)現(xiàn)有新的pod出現(xiàn),如下所示,這是執(zhí)行jenkins任務(wù)的pod:
- 返回jenkins頁面,可見任務(wù)已經(jīng)執(zhí)行完畢:
- 再去控制臺查看pod,發(fā)現(xiàn)剛剛創(chuàng)建的pod已經(jīng)消失了
- 至此,kubernetes環(huán)境部署和體驗(yàn)jenkins的實(shí)戰(zhàn)就完成了,希望本文帶給您一些參考信息。
歡迎關(guān)注公眾號:程序員欣宸
總結(jié)
以上是生活随笔為你收集整理的helm安装_Helm部署和体验jenkins的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsoup 简单应用
- 下一篇: 西安工程大学计算机科学学院刘宝宝,计算机