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>,記好這兩個參數(shù)趁耗,稍后會用到:


    在這里插入圖片描述

準備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>參數(shù)位置柔昼,添加gitlabUrl的配置,其值就是前面在GitLab網頁取得的<font color="red">gitlab url</font>參數(shù)因惭,如下圖紅框:
在這里插入圖片描述
  1. 第二處岳锁,找到已被注釋掉的<font color="blue">runnerRegistrationToken</font>參數(shù)位置,添加<font color="red">runnerRegistrationToken</font>的配置蹦魔,其值就是前面在GitLab網頁取得的<font color="blue">registration token</font>參數(shù)激率,如下圖紅框:
在這里插入圖片描述
  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>參數(shù)等于<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寫入的數(shù)據被成功讀仁鸹浴:
在這里插入圖片描述

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

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

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

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

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末末捣,一起剝皮案震驚了整個濱河市侠姑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箩做,老刑警劉巖莽红,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡安吁,警方通過查閱死者的電腦和手機醉蚁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鬼店,“玉大人网棍,你說我怎么就攤上這事「局牵” “怎么了滥玷?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巍棱。 經常有香客問我惑畴,道長,這世上最難降的妖魔是什么航徙? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任如贷,我火速辦了婚禮,結果婚禮上到踏,老公的妹妹穿的比我還像新娘杠袱。我一直安慰自己,他們只是感情好夭禽,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布霞掺。 她就那樣靜靜地躺著,像睡著了一般讹躯。 火紅的嫁衣襯著肌膚如雪菩彬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天潮梯,我揣著相機與錄音骗灶,去河邊找鬼。 笑死秉馏,一個胖子當著我的面吹牛耙旦,可吹牛的內容都是我干的。 我是一名探鬼主播萝究,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼免都,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帆竹?” 一聲冷哼從身側響起绕娘,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栽连,沒想到半個月后险领,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侨舆,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年绢陌,在試婚紗的時候發(fā)現(xiàn)自己被綠了挨下。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡脐湾,死狀恐怖臭笆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情秤掌,我是刑警寧澤耗啦,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站机杜,受9級特大地震影響,放射性物質發(fā)生泄漏衅谷。R本人自食惡果不足惜椒拗,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望获黔。 院中可真熱鬧蚀苛,春花似錦、人聲如沸玷氏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盏触。三九已至渗蟹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赞辩,已是汗流浹背雌芽。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辨嗽,地道東北人世落。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像糟需,于是被迫代替她去往敵國和親屉佳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容