再見Jenkins,從Gitlab代碼提交到k8s服務持續交付只需七毛三(走過路過不要錯過)

Gitlab runner 快速搭建CICD pipeline

 

背景

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

實踐


因爲gitlab資源消耗嚴重,本地沒有搭建,因此使用gitlab官方git

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

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

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

 

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

 

 

這兩個文件的內容大體是
Dockerfilegitlab

 

 

 

推送Gitlab後的目錄學習

 


第三步安裝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執行腳本,並將狀態打印阿里雲

 

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

 

因爲.gitlab-ci.yml文件包含了推送鏡像到鏡像倉庫,此時咱們打開騰訊鏡像倉庫便可看見編譯打包上傳好的鏡像3d

 

 

此時有了鏡像,那咱們就能夠依靠此鏡像建立k8s集羣服務


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

建立k8s服務的大體步驟爲:

 

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

 

騰訊雲各步驟文檔:
建立集羣 :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個,至關於此服務下兩個站點實例做爲一個集羣

 

 

第六步建立鏡像觸發器

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

點擊添加觸發器

 

 

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

 

測試

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

 

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

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

這裏不得不誇讚一下騰訊雲,容器服務沒有最低消費限制,幾毛錢就能讓廣大羣衆學習K8S容器服務,對開發者很友好。。強烈安利。。

相關文章
相關標籤/搜索