再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

Gitlab runner 快速搭建CICD pipeline

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

背景

日常開發中,相信大家已經做了很多的自動化運維環境,用的最多的想必就是利用Jenkins實現代碼提交到自動化測試再到自動化打包,部署全流水線Jenkins在devops擔任了很重要的角色,但是另一方面相信目前大家的代碼版本管理大多都是交給git來管理,在企業私有部署的大背景下,Gitlab由於豐富的插件和細粒度更高的權限控制被大家所採用。如果只是把Gitlab作為代碼版本管理,那就大大浪費他的附加價值,在Gitlab中自帶CICD功能,此功能就可完全代替Jenkins,這樣一來,我們就不必維護多套系統,簡化開發到運維的複雜度

實踐

由於gitlab資源消耗嚴重,本地沒有搭建,所以使用gitlab官方

第一步註冊gitlab賬戶(企業私有部署可忽略此步驟)

註冊地址:https://gitlab.com/

第二步創建項目並推送至gitlab倉庫

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

並在項目中加入支持Docker容器的Dockerfile文件和支持觸發gitlab CICD功能的 .gitlab-ci.yml腳本文件(此文件必須放在根目錄)最後的目錄是這樣

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

這兩個文件的內容大致是Dockerfile

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三


推送Gitlab後的目錄

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

第三步安裝gitlab Runner。

安裝就簡單幾步再不贅述,安裝教程(https://docs.gitlab.com/runner/install/windows.html),由於使用的gitlab 非企業版官方,所以就只能用它提供的共享runner,企業私有部署的gitlab,一般管理員會給每個開發人員分配一個註冊令牌token用來與runner綁定安裝runner時,將gitlab地址(不包含倉庫)和註冊令牌在需要填入的時填入即可授權此runner與Gitlab交互Runner大致就是用來執行一系列腳本的載體,當gitlab有代碼提交,gitlab會通知與之對應的runner,麻煩runner幫他執行提前寫好的腳本規則(runner可安裝支持一個項目也可共享出來支持多個項目),執行的每一步狀態會通知gitlab,gitlab會在CICD控制面板打印出來

第四步自動觸發CICD

只要當根目錄包含了.gitlab-ci.yml文件的項目提交至Gitlab,就會自動觸發CICD,然後通知對應的Runner執行腳本,並將狀態打印

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

點擊每個JOb可看到內部執行的計劃和輸出,此處和jenkins流程類似

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

由於.gitlab-ci.yml文件包含了推送鏡像到鏡像倉庫,此時我們打開騰訊鏡像倉庫即可看見編譯打包上傳好的鏡像

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

此時有了鏡像,那我們就可以依靠此鏡像創建k8s集群服務

第五步啟用雲廠商k8s容器編排服務

創建k8s服務的大致步驟為:

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

只要在雲廠商控制檯啟用對應步驟並配置即可實現一個k8s集群的容器服務,此過程各平臺略有不同由於考慮到騰訊雲k8s服務按量付費沒有最低餘額限制,阿里雲則需要100餘額的門檻,所以在騰訊雲充值了1.6元來進行實驗

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

騰訊雲各步驟文檔:創建集群 :https://cloud.tencent.com/document/product/457/9091鏡像倉庫 :https://cloud.tencent.com/document/product/457/9117創建服務 :https://cloud.tencent.com/developer/article/1412348以上步驟創建完畢可在應用中心服務一欄可看到當前正在運行的服務,此處我設置為Pod為2個,相當於此服務下兩個站點實例作為一個集群

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

第六步創建鏡像觸發器

現在我們已經依靠gitlab的runner服務推送的鏡像創建了k8s容器服務但每次提交鏡像都得人為去重置服務並選擇新的鏡像,這個重複乏味的勞動過程想必誰都不想去做,這時候就要用到雲廠商提供的觸發器來操作這個重複的過程。提前制定好觸發規則,例如匹配到某tag名稱或者創建時間,即自動進行拉取鏡像創建服務的過程

點擊添加觸發器

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

這裡觸發規則選擇了只要有新版本就觸發,並且選擇被觸發的服務,鏡像提交,即更新服務拉取最新鏡像構建

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

測試

修改任意gitlab倉庫代碼,提交,然後等構建完成後,進入騰訊雲的觸發器頁面顯示觸發成功,此時服務已經使用了最新的docke鏡像版本

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

檢查一下賬戶餘額,發現還有0.87元。。。關閉集群。。待下次繼續使用

再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三

以上是GItlab與騰訊雲實現代碼提交到容器持續交付的過程,其他例如阿里雲流程也類似


原文地址:https://www.cnblogs.com/xiaoliangge/p/11190019.html


分享到:


相關文章: