前提條件
安裝KubeSphere,認真閱讀全文可免費領取PetaExpress云服務器一臺。
在KubeSphere中啟用DevOps套件
參考:啟用DevOps https://kubesphere.io/zh/docs/v3.4/pluggable-components/devops/
安裝GitLabCE
我們先這次的演練創(chuàng)建一個名為devops的企業(yè)空間,同時創(chuàng)建一個名為gitlab的項目供GitLabCE部署使用。
通過應用倉庫部署GitLab應用
首先我們還是要先在devops企業(yè)空間中添加GitLab的官方HelmChart倉庫,推薦用這種自管理的方式來保障倉庫內容是得到及時同步的。通過「應用管理」下面的「應用倉庫」來添加如下的GitLab倉庫(倉庫URL:https://charts.gitlab.io/)

2.接下來進入先前創(chuàng)建的gitlab項目,從「應用負載」下面的「應用」頁面創(chuàng)建GitLab應用:選擇「從應用模版」創(chuàng)建即可得到如下界面,注意選擇紅框指示的這個應用。


點擊進入后,點擊安裝

3.下面這一步十分重要,需要配置HelmChart部署應用的參數(shù)。由于GitLab默認的可配置項非常多(有上千行),因此我們這次只挑選可保障基礎業(yè)務使用的最小功能集的相關參數(shù)進行改寫,關于每個參數(shù)具體代表的含義請參見參數(shù)項上一行的注釋(并留意【注意】部分)。其它配置項請大家參見極狐





雖然已經(jīng)是最小功能集部署,但由于部署的服務及其資源開銷較多,部署過程還是比較長的。部署完成后可以在gitlab應用的「工作負載」部分查看到所有負載都在運行中的狀態(tài)。
4.確認所有工作負載運行后,如之前您已經(jīng)配置過集群或項目網(wǎng)關并使能過gitlab.example.com的域名解析,那么您就可以直接訪問該域名來打開GitLab的站點頁面。
在GitLab中創(chuàng)建一個示例項目
首先讓我們來登陸GitLab。GitLab的初始密碼被作為Secret保存,我們可以回到項目首頁,在「配置」下的「保密字典」中搜索initial可以找到gitlab-initial-root-password的條目。點擊該字典條目,并在「數(shù)據(jù)」區(qū)塊中點擊最右側的眼睛圖標來展示password數(shù)據(jù)項的內容。

復制該密碼,并使用root作為用戶名,即可登陸GitLab得到如下圖所示的界面。

點擊「Createaproject」按鈕進入創(chuàng)建項目的頁面,通過「CreatefromTemplate」我們可以來創(chuàng)建一個示例項目用于后面的流水線演練。
讓我們選擇NodeJSExpress這個項目模版來創(chuàng)建應用,所有模版都可以通過Preview按鈕來預覽其中的內容,使用模版后得到如下創(chuàng)建項目界面。

填入您偏好的項目名稱,并在項目可見度這里選擇默認的Private來創(chuàng)建私有項目,以便于后續(xù)演示如何訪問私有項目。完成導入后可以得到如下的項目頁面。

關閉AutoDevOps并創(chuàng)建Jenkinsfile
由于我們后續(xù)要使用KubeSphereDevOps,而GitLab默認開啟了AutoDevOps功能(會為無CI配置的項目自動提供流水線支持),為了避免混亂,我們先暫時關閉AutoDevOps。
找到項目頁面中間部位的文件及功能快捷入口區(qū)域,點擊「AutoDevOpsenabled」按鈕塊,進入配置頁面后取消DefaulttoAutoDevOpspipeline的勾選并「Savechanges」,即可完成AutoDevOps功能的關閉。
接下來,我們還需要為這個項目創(chuàng)建一個Jenkinsfile用于后續(xù)KubeSphereDevOps流水線的構建。在master分支下直接創(chuàng)建一個名為Jenkinsfile的文件,填入以下內容即可。

使用KubeSphereDevOps為GitLab提供流水線
我們首先在devops的企業(yè)空間中創(chuàng)建一個名為demo的DevOps項目,用于后續(xù)演練如何為GitLab創(chuàng)建流水線。
將GitLab與KubeSphereJenkins進行綁定
由于KubeSphereJenkins默認綁定的GitLab服務是官方的gitlab.com,因此在創(chuàng)建流水線前需要先重新綁定到我們創(chuàng)建的私有GitLab服務上。
首先,我們需要打開KubeSphereJenkins的頁面,為了操作方便,我們直接為kubesphere-devops-system命名空間下的devops-jenkins開放NodePort。

使用KubeSphere賬號登陸Jenkins(如果登陸失敗可能是賬號同步問題,可以修改一次KubeSphere的密碼再次嘗試)。通過「系統(tǒng)管理??系統(tǒng)配置」進入系統(tǒng)配置頁面,找到GitLabServers配置區(qū),點擊「AddGitLabServer」開始添加我們的GitLab服務。

如上圖所示,需要填寫或編輯的配置項一共有三項:
ServerURL:這里填入我們剛剛部署完成的GitLab服務的訪問方式(如果是域名訪問,一定需要是Jenkins也可達的域名)
Crendentials:這里選擇或創(chuàng)建一個Jenkins的的憑證項,該憑證需要是GitLab某個用戶的PersonalAccessToken(下面我們會繼續(xù)說明如何創(chuàng)建)
WebHook:這個一定要勾選ManageWebHooks這項,用于我們之后同步JenkinsPipeline的狀態(tài)到我們的GitLab服務中
創(chuàng)建GitLabPersonalAccessToken的JenkinsCrendential
首先,我們回到GitLab中,可以直接通過/-/profile/personal_access_tokens(例如本文可使用[http://gitlab.example.com/-/profile/personal_access_tokens](http://gitlab.example.com:30433/-/profile/personal_access_tokens))來訪問PersonalAccessTokens的創(chuàng)建頁面。按Jenkins的要求,我們創(chuàng)建一個名為jenkins且具備api``read_repository``write_repository權限的令牌,復制令牌字符串備用。

然后我們回到Jenkins首頁,從「系統(tǒng)管理??安全??ManageCrendentials??StoresscopedtoJenkins??Jenkins??全局??全局憑據(jù)(unrestricted)」進入憑證創(chuàng)建頁面。

點擊左側面板的「添加憑據(jù)」即可開始創(chuàng)建憑證,填寫完成后點擊Ok保存即可完成憑證創(chuàng)建:
?Kind選擇GitLab個人令牌
?Scope選擇默認的全局,ID填入任意不產(chǎn)生命名沖突的ID
?Token填入剛剛復制備用的GitLab令牌字符串(可忽略字符串長度的提示)
完成這部分配置之后,KubeSphereDevOps流水線的狀態(tài)也會和我們GitLab中的Pipeline狀態(tài)形成聯(lián)動,大家可以參看視頻中的效果。

使用Jenkinsfile創(chuàng)建KubeSphereDevOps流水線
讓我們進入之前創(chuàng)建的demoDevOps項目,開始「創(chuàng)建」流水線。

在彈出的「創(chuàng)建流水線」對話框中,我們填入一個流水線「名稱」并點擊下方「代碼倉庫(可選)」這個區(qū)域來進行代碼倉庫綁定。

進入到「選擇代碼倉庫」面板后,我們選擇GitLab標簽頁,然后在「GitLab服務器地址」下拉框中選擇我們上一小節(jié)在Jenkins中添加到GitLabCE服務器。由于我們演練的是私有倉庫訪問,下面需要先選擇一個憑證用于訪問私有代碼倉庫。在之前沒有創(chuàng)建的情況下,這里我們點擊綠色的「創(chuàng)建憑證」鏈接開始創(chuàng)建。

在彈出的「創(chuàng)建憑證」對話框中,輸入「名稱」后選定類型為用戶名和密碼;然后在「用戶名」文本框中輸入我們的賬號root,在「密碼/令牌」中輸入之前從保密字典中獲取到的初始密碼(gitlab-initial-root-password)。

通過「確定」按鈕保存憑證后回到「選擇代碼面板」,在「憑證」下拉框中選擇剛剛創(chuàng)建的gitlab-root,然后在「項目組/所有者」文本庫中填入我們的賬號root,點擊「代碼倉庫」下拉框可看到root賬號下所有的代碼倉庫,這里我們可以看到并選擇之前創(chuàng)建的示例項目root/rak-test-express。

通過??按鈕確認并保存配置后會再次回到「創(chuàng)建流水線」面板,此時可以看到「代碼倉庫」已出現(xiàn)我們選擇的root/nodejs-demo項目,點擊「下一步」進入「高級設置」標簽頁,這里我們不做額外的配置,直接點擊「確定」來創(chuàng)建流水線。創(chuàng)建成功后,我們可以看到如下一個「分支數(shù)量」為0并且健康的流水線。

稍后片刻點擊進入新建的pipeline-test流水線,可以看到系統(tǒng)已經(jīng)掃描到帶有Jenkinsfile的master分支并已經(jīng)開始運行流水線。

點擊master分支進入分支詳情頁面,不管運行成功還是失敗都可以進一步點擊「運行ID」一欄中的序號來查看詳細的運行日志及制品等。

等待一段時間后運行成功,進入運行ID為1的運行記錄可以看到如下圖展示的界面。進一步我們可以點擊右上角的「查看日志」按鈕來了解詳細的流水線執(zhí)行情況。

注意:對于多分支流水線,默認會先執(zhí)行checkoutscm步驟,然后再執(zhí)行Jenkinsfile中定義的流水線內容。
使用圖形編輯器創(chuàng)建KubeSphereDevOps流水線
本小節(jié)內容可參考KubeSphere官方文檔:DevOps用戶指南/使用DevOps/使用圖形編輯面板創(chuàng)建流水線。
KubeSphereDevOps流水線也可以通過圖形編輯界面來進行創(chuàng)建,讓我們重新回到demoDevOps項目首頁,「創(chuàng)建」一個新流水線。這次在「創(chuàng)建流水線」面板中我們不綁定代碼倉庫,直接「下一步」再直接「創(chuàng)建」一個名為gui的流水線。
進入流水線詳情頁面后,我們可以在右側面板看到「編輯流水線」的按鈕,點擊后在彈出的「選擇流水線模版」對話框中,我們選擇自定義流水線。


另兩個流水線模版包含了更完整的CI/CD流水線構建示例,但內容相對復雜,歡迎大家線下自行選用進行體驗!
下面我們嘗試用圖形編輯器復現(xiàn)前一小節(jié)的兩個操作步驟,即拉起代碼,并打印一條HelloWorld消息。首先,我們點擊左側面板的+按鈕,然后選中添加出來的一個階段塊。

接著我們點擊左側階段塊上的「+添加步驟」,并在右側刷出的「添加步驟」面板中選則git步驟,在彈出的對話框中填入我們示例代碼倉庫的地址HTTPGit地址(如),憑證選用之前創(chuàng)建的gitlab-root,分支填寫master。

完成后我們依樣畫葫蘆,再次添加一個打印消息步驟并填入HelloWorld!作為內容,最后得到如下圖所示的整體效果。

完成編輯后「確定」再「確定」來保存流水線,回到詳情頁面后,可以通過右上角的「運行」按鈕來執(zhí)行流水線。

運行成功后可以再次查看流水線運行記錄,并查看運行日志,得到如下圖所示結果。

【番外】使用SSH訪問Kubernetes集群中的GitLab代碼倉庫
前文介紹的代碼倉庫的訪問方式都是通過HTTP的形式,但現(xiàn)實工作中我們最常用的還是SSH的訪問方式,那是否可以直接通過gitclonegit@gitlab.example.com:root/nodejs-demo.git這樣的方式來拉取和推送代碼呢?
答案是肯定的:可以!但是這里有一個大坑需要注意——默認SSH用的是22端口,但多了一層Kubernetes網(wǎng)絡之后,不管是否使用這個默認端口都需要處理好GitLab如何對外暴露SSH服務。
假設我們可以接受重新綁定一個端口來使用GitLabSSH,那么可以這樣操作:
首先,我們回到GitLab部署項目中,找到gitlab-shell服務并為它開放NodePort外部訪問端口

基于這個端口,把Git訪問的地址都改為:

憑此文章可以去PetaExpress官網(wǎng)發(fā)工單免費領取2核2G云服務器一臺,數(shù)量有限先到先得。申領步驟:注冊→登錄→控制臺右上角發(fā)工單回復“本文文章網(wǎng)址+文章標題+申請獎勵”
審核編輯 黃宇
-
服務器
+關注
關注
14文章
10253瀏覽量
91482 -
devops
+關注
關注
0文章
130瀏覽量
12878
發(fā)布評論請先 登錄
RA MCU眾測寶典 | 在RA MCU上快速部署LWIP——以CPKCOR-RA8D1為例
創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—Docker容器部署方法說明
本地部署openWebUI + ollama+DeepSeek 打造智能知識庫并實現(xiàn)遠程訪問
Keil 項目在構建目標 software 時,F(xiàn)CARM 工具報錯
國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—Docker容器部署方法說明
Ansible代碼上線項目實戰(zhàn)案例
Helm實現(xiàn)容器化運維高效包管理與應用部署
如何使用Docker部署大模型
從零到一:如何利用非結構化數(shù)據(jù)中臺快速部署AI解決方案
在樹莓派上構建和部署 Node.js 項目
在KubeSphere 容器中快速部署使用 GitLab 并構建 DevOps 項目
評論