GitLab Runner部署(kubernetes環(huán)境)

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker稽屏、Kubernetes欠动、DevOPS等昼窗;

關于GitLab CI

如下圖所示,開發(fā)者將代碼提交到GitLab后岖常,可以觸發(fā)CI腳本在GitLab Runner上執(zhí)行髓绽,通過編寫CI腳本我們可以完成很多使用的功能:編譯、構建叽赊、生成docker鏡像恋沃、推送到私有倉庫等:


在這里插入圖片描述

本次實戰(zhàn)內容

今天咱們會一起完成以下操作:

  1. 部署minio,pipeline腳本中的cache功能由minio來實現(xiàn)必指;
  2. 配置和部署GitLab Runner囊咏;
  3. 編寫和運行pipeline腳本;

環(huán)境和版本信息

本次實戰(zhàn)涉及到多個服務取劫,下面給出它們的版本信息供您參考:

  1. GitLab:Community Edition 13.0.6
  2. GilLab Runner:13.1.0
  3. kubernetes:1.15.3
  4. Harbor:1.1.3
  5. Minio:2020-06-18T02:23:35Z
  6. Helm:2.16.1

需要提前準備好的服務

以下服務需要您在實戰(zhàn)前提前準備好:

  1. 部署好GitLab匆笤,參考《群暉DS218+部署GitLab》
  2. 部署好Harbor,參考《群暉DS218+部署Harbor(1.10.3)》
  3. 部署好Helm谱邪,參考《部署和體驗Helm(2.16.1版本)》

準備完畢后開始實戰(zhàn)炮捧;

部署minio

minio作為一個獨立的服務部署,我將用docker部署在服務器:<font color="blue">192.168.50.43</font>

  1. 在宿主機準備兩個目錄惦银,分別存儲minio的配置和文件咆课,執(zhí)行以下命令:
mkdir -p /var/services/homes/zq2599/minio/gitlab_runner \
&& chmod -R 777 /var/services/homes/zq2599/minio/gitlab_runner \
&& mkdir -p /var/services/homes/zq2599/minio/config \
&& chmod -R 777 /var/services/homes/zq2599/minio/config
  1. 執(zhí)行docker命令創(chuàng)建minio服務末誓,指定服務端口是9000,并且指定了access key(最短三位)和secret key(最短八位):
sudo docker run -p 9000:9000 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=access" \
-e "MINIO_SECRET_KEY=secret123456" \
-v /var/services/homes/zq2599/minio/gitlab_runner:/gitlab_runner \
-v /var/services/homes/zq2599/minio/config:/root/.minio \
minio/minio server /gitlab_runner
  1. 瀏覽器訪問书蚪,輸入access key和secret key后登錄成功:


    在這里插入圖片描述
  2. 如下圖喇澡,點擊紅框中的圖標,創(chuàng)建一個bucket殊校,名為<font color="blue">runner</font>:


    在這里插入圖片描述
  3. 至此晴玖,minio已備好,接下來在kubernetes環(huán)境部署GitLab Runner为流;

GitLab Runner的類型

從使用者的維度來看呕屎,GitLab Runner的類型分為<font color="blue">shared</font>和<font color="blue">specific</font>兩種:

  1. 如果您想創(chuàng)建的GitLab Runner給所有GitLab倉庫使用,就要創(chuàng)建<font color="blue">shared</font>類型敬察;
  2. 如果您的GitLab Runner只用于給某個固定的Gitlab倉庫秀睛,就要創(chuàng)建<font color="blue">specific</font>類型;

今天的實戰(zhàn)莲祸,我們創(chuàng)建的是<font color="red">specific</font>類型蹂安,即先有GitLab代碼倉庫,然后創(chuàng)建該倉庫專用的runner锐帜,所以請您提前準備好GitLab倉庫田盈;

準備GitLab配置信息(specific)

在部署GitLab Runner之前,要準備兩個關鍵的配置信息抹估,以便GitLab Runner啟動后可以順利連接上GitLab:

  1. 瀏覽器訪問GitLab缠黍,打開用來做CI的代碼倉庫弄兜,點擊Settings -> CI/CD -> Runners -> Expand:


    在這里插入圖片描述
  2. 如下圖药蜻,紅框1中是<font color="blue">gitlab url</font>,紅框2中是<font color="blue">registration token</font>替饿,記好這兩個參數语泽,稍后會用到:


    在這里插入圖片描述

準備GitLab配置信息(shared)

本次實戰(zhàn)不會創(chuàng)建shared類型的runner,如果您要創(chuàng)建該類型runner视卢,只需按照以下方法準備信息即可踱卵,創(chuàng)建出來的runner就是所有倉庫都能使用的了:

  1. 以管理員身份登錄GitLab;
  2. 按照下圖紅框的順序取得<font color="blue">gitlab url</font>和<font color="blue">registration token</font>:


    在這里插入圖片描述

部署RitLab Runner

  1. 請確保當前可以通過<font color="blue">kubectl</font>命令在kubernetes進行常規(guī)操作据过;
  2. 創(chuàng)建名為<font color="blue">gitlab-runner</font>的namespace:
kubectl create namespace gitlab-runner
  1. 創(chuàng)建一個secret惋砂,把minio的access key和secret key存進去,在后面配置cache的時候會用到:
kubectl create secret generic s3access \
--from-literal=accesskey="access" \
--from-literal=secretkey="secret123456" -n gitlab-runner
  1. 用helm部署GitLab Runner之前绳锅,先把chart的倉庫添加到helm的倉庫列表中:
helm repo add gitlab https://charts.gitlab.io
  1. 下載GitLab Runner的chart:
helm fetch gitlab/gitlab-runner
  1. 當前目錄會多出一個文件gitlab-runner-0.18.0.tgz西饵,解壓:
tar -zxvf gitlab-runner-0.18.0.tgz
  1. 解壓后是名為gitlab-runner的文件夾,內容如下圖所示鳞芙,接下來要修改里面的三個文件:
在這里插入圖片描述
  1. 打開values.yaml眷柔,里面有四處需要修改:
  2. 第一處期虾,找到已被注釋掉的<font color="blue">gitlabUrl</font>參數位置,添加gitlabUrl的配置驯嘱,其值就是前面在GitLab網頁取得的<font color="red">gitlab url</font>參數镶苞,如下圖紅框:
在這里插入圖片描述
  1. 第二處,找到已被注釋掉的<font color="blue">runnerRegistrationToken</font>參數位置鞠评,添加<font color="red">runnerRegistrationToken</font>的配置茂蚓,其值就是前面在GitLab網頁取得的<font color="blue">registration token</font>參數,如下圖紅框:
在這里插入圖片描述
  1. 找到<font color="blue">rbac</font>的配置剃幌,將<font color="blue">create</font>和<font color="blue">clusterWideAccess</font>的值都改成<font color="red">true</font>(創(chuàng)建RBAC煌贴、創(chuàng)建容器gitlab-bastion用于管理job的容器):
在這里插入圖片描述
  1. 設置此GitLab Runner的<font color="blue">tag</font>為<font color="red">k8s</font>,在pipeline腳本中可以通過指定tag為<font color="red">k8s</font>锥忿,這樣pipeline就會在這個Gitlab Runner上允許:
在這里插入圖片描述
  1. 找到<font color="blue">cache</font>的配置牛郑,在修改之前,cache的配置如下圖敬鬓,可見值為空內容的大括號淹朋,其余信息全部被注釋了:
在這里插入圖片描述
  1. 修改后的<font color="blue">cache</font>配置如下圖,紅框1中原先的大括號已去掉钉答,紅框2中的是去掉了注釋符號础芍,內容不變,紅框3中填寫的是<font color="blue">minio</font>的訪問地址数尿,紅框4中的是去掉了注釋符號仑性,內容不變:
在這里插入圖片描述
  1. 上圖紅框4中的<font color="blue">s3CacheInsecure</font>參數等于<font color="blue">false</font>表示對minio的請求為http(如果是true就是https),但實際證明右蹦,<font color="red">當前版本的chart中該配置是無效的</font>诊杆,等到運行時還是會以https協(xié)議訪問,解決此問題的方法是修改templates目錄下的<font color="blue">_cache.tpl</font>文件何陆,打開此文件晨汹,找到下圖紅框中的內容:
在這里插入圖片描述
  1. 將上圖紅框中的內容替換成下面紅框中的樣子,即刪除原先的<font color="blue">if判斷和對應的end</font>這兩行贷盲,直接給<font color="red">CACHE_S3_INSECURE</font>賦值:


    在這里插入圖片描述
  2. 接下來要修改的是<font color="blue">templates/configmap.yaml</font>文件淘这,在這里面將宿主機的docker的sock映射給runner executor,這樣job中的docker命令就會發(fā)到宿主機的docker daemon上巩剖,由宿主機來執(zhí)行铝穷,打開<font color="blue">templates/configmap.yaml</font>,找到下圖位置佳魔,我們要在紅框1和紅框2之間添加一段內容:
在這里插入圖片描述
  1. 要在上圖紅框1和紅框2之間添加的內容如下:
cat >>/home/gitlab-runner/.gitlab-runner/config.toml <<EOF
            [[runners.kubernetes.volumes.host_path]]
              name = "docker"
              mount_path = "/var/run/docker.sock"
              read_only = true
              host_path = "/var/run/docker.sock"
    EOF
  1. 添加上述內容后曙聂,整體效果如下,紅框中就是新增內容:
在這里插入圖片描述
  1. 修改完畢吃引,回到<font color="blue">values.yam</font>所在目錄筹陵,執(zhí)行以下命令即可創(chuàng)建GitLab Runner:
helm install \
--name-template gitlab-runner \
-f values.yaml . \
--namespace gitlab-runner
  1. 檢查pod是否正常:
在這里插入圖片描述
  1. 看pod日志也并未發(fā)現(xiàn)異常:
在這里插入圖片描述
  1. 回到GitLab的runner頁面刽锤,可見新增一個runner:
在這里插入圖片描述

至此,整個GitLab CI環(huán)境已部署完畢朦佩,接下來簡單的驗證環(huán)境是否OK并思;

驗證

  1. 在GitLab倉庫中,增加名為<font color="blue">.gitlab-ci.yml</font>的文件语稠,內容如下:
# 設置執(zhí)行鏡像
image: busybox:latest

# 整個pipeline有兩個stage
stages:
- build
- test

# 定義全局緩存宋彼,緩存的key來自分支信息,緩存位置是vendor文件夾
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
  - vendor/

before_script:
  - echo "Before script section"

after_script:
  - echo "After script section"

build1:
  stage: build
    tags:
  - k8s
  script:
    - echo "將內容寫入緩存"
    - echo "build" > vendor/hello.txt

test1:
  stage: test
  script:
    - echo "從緩存讀取內容"
    - cat vendor/hello.txt
  1. 提交上述腳本到GitLab仙畦,如下圖输涕,可見pipeline會被觸發(fā),狀態(tài)為pending是因為正在等待runner創(chuàng)建executor pod:
在這里插入圖片描述
  1. 稍后就會執(zhí)行成功慨畸,點開看結果:
在這里插入圖片描述
  1. 點開<font color="blue">build1</font>的圖標莱坎,可見此job的輸出信息:
在這里插入圖片描述
  1. 點開<font color="blue">test1</font>的圖標,可見對應的控制臺輸出寸士,上一個job寫入的數據被成功讀乳苁病:
在這里插入圖片描述

至此,GitLab Runner已經成功在kubernetes環(huán)境部署和運行弱卡,接下來的文章乃正,我們會一起實戰(zhàn)將SpringBoot應用構建成docker鏡像并推送到Harbor;

你不孤單婶博,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數據庫+中間件系列
  6. DevOps系列

歡迎關注公眾號:程序員欣宸

微信搜索「程序員欣宸」瓮具,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末凡人,一起剝皮案震驚了整個濱河市名党,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌划栓,老刑警劉巖兑巾,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忠荞,居然都是意外死亡,警方通過查閱死者的電腦和手機帅掘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門委煤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人修档,你說我怎么就攤上這事碧绞。” “怎么了吱窝?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵讥邻,是天一觀的道長迫靖。 經常有香客問我,道長兴使,這世上最難降的妖魔是什么系宜? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮发魄,結果婚禮上盹牧,老公的妹妹穿的比我還像新娘。我一直安慰自己励幼,他們只是感情好汰寓,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苹粟,像睡著了一般有滑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嵌削,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天俺孙,我揣著相機與錄音,去河邊找鬼掷贾。 笑死睛榄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的想帅。 我是一名探鬼主播场靴,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼港准!你這毒婦竟也來了旨剥?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤浅缸,失蹤者是張志新(化名)和其女友劉穎轨帜,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體衩椒,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蚌父,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毛萌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苟弛。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阁将,靈堂內的尸體忽然破棺而出膏秫,到底是詐尸還是另有隱情,我是刑警寧澤做盅,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布缤削,位于F島的核電站窘哈,受9級特大地震影響,放射性物質發(fā)生泄漏亭敢。R本人自食惡果不足惜滚婉,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吨拗。 院中可真熱鬧满哪,春花似錦、人聲如沸劝篷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娇妓。三九已至像鸡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哈恰,已是汗流浹背只估。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留着绷,地道東北人蛔钙。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像荠医,于是被迫代替她去往敵國和親吁脱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容