K8s微服務(wù)自動化部署容器(Rancher流水線)

一伏蚊、背景

最近公司上線辦公網(wǎng)零信任安全網(wǎng)關(guān)系統(tǒng),由我負責(zé)部署上線格粪,在部署的時候同時也在想如何保障穩(wěn)定性躏吊,以及后續(xù)部署的簡便性;

想起了k8s微服務(wù)的成熟方案帐萎,不僅可以自動重啟還可以監(jiān)控容器運行狀態(tài)比伏,也可以集成自動化部署,于是找了一些資料將之前接觸過的rancher用了起來疆导,首先要做的就是簡化安裝方式赁项,下面是我的一些過程,同時也可以給大家提供參考澈段。

二悠菜、操作步驟

  1. 讓Rancher能訪問GitLab
  2. 在流水線添加項目
  3. 在倉庫添加必備文件
  4. CICD自動部署調(diào)試

三、gitlab添加oauth授權(quán)

在進入集群的命名空間中败富,可以在菜單欄點擊工具-流水線悔醋,然后就可以看到如下圖所示的界面

image

接下來打開gitlab,然后打開設(shè)置頁面http://xx.xx.xx.xx/admin/applications/4囤耳,如下圖所示

image

在上圖中將所需信息填寫進去,然后點擊保存

保存之后,gitlab會生成Application IdSecret,我們將它復(fù)制出來充择,

image

復(fù)制出來之后德玫,切回rancher系統(tǒng)中,將其一一填寫進來椎麦,如下圖所示

image

點擊完成后宰僧,會有一個彈窗進行授權(quán),授權(quán)完成后rancher就可以訪問到gitlab倉庫了观挎。


image

四琴儿、在rancher中添加代碼倉庫

在確保rancher可以訪問gitlab倉庫之后,在rancher菜單欄點擊工具-流水線嘁捷,將需要自動化部署的項目啟用并保存造成,如下圖所示

image

保存之后,回到CICD列表中雄嚣,可以看到兩個已經(jīng)啟用的項目晒屎,如下圖所示


image

五、添加部署必備個文件

接下來就可以開始在代碼中啟用CICD自動化部署了缓升,需要在項目根目錄添加三個文件鼓鲁,分別是:

  1. .rancher-pipeline.yml
  2. Dockerfile
  3. deployment.yaml

5.1 設(shè)置發(fā)布流程

自動部署首先需要確定部署流程,主要用到文件.rancher-pipeline.yml港谊,這里我是golang 的項目骇吭,使用了三個流程。

首先編譯項目歧寺;接著構(gòu)建鏡像推送到rancher的鏡像倉庫中燥狰,最后使用容器編排文件發(fā)布項目,配置代碼核心關(guān)注點如下圖紅色區(qū)域所示

image
stages:
- name: Build
  steps:
  - runScriptConfig:
      image: golang:1.16
      shellScript: |-
        go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct
        go mod tidy
        pwd
        go build -o ./bin/funfecenter
- name: Publish
  steps:
  - publishImageConfig:
      dockerfilePath: ./Dockerfile
      buildContext: .
      tag: funfecenter:${CICD_EXECUTION_SEQUENCE}
- name: Deploy
  steps:
  - applyYamlConfig:
      path: ./deployment.yaml
timeout: 60
notification: {}

5.2 構(gòu)建鏡像

在上一步中已經(jīng)將項目編譯好成福,接著就需要將編譯好的可執(zhí)行文件放入到鏡像中碾局,這里起作用的主要是Dockerfile文件,配置代碼比較簡單奴艾,如下所示

FROM golang:1.16
EXPOSE 1333
COPY ./bin/funfecenter /data/funfecenter/center
COPY ./init/ /
COPY script.py /root/
RUN  apt update -y
RUN  apt install -y python3
#CMD ["python3","/root/script.py"]
CMD ["/data/funfecenter/center"]

5.3 容器編排

上一步已經(jīng)將需要運行的鏡像推送到rancher的鏡像倉庫之后净当,接下來就需要構(gòu)建pod來運行容器,這里發(fā)揮作用的主要是deployment.yaml 文件蕴潦。

這個文件如果沒有接觸過k8s的同學(xué)可能會比較陌生像啼,這里我將每一行都寫了注釋,并將需要修改的地方用紅色標(biāo)記圈出來了潭苞,如下圖所示

image

參考配置如下所示

kind: Service      # 指定創(chuàng)建資源的角色/類型
apiVersion: v1     # 指定api版本忽冻,此值必須在kubectl api-versions中
metadata:          # 資源的元數(shù)據(jù)/屬性
  name: funfe-center    # 資源的名字,在同一個namespace中必須唯一
spec:               # 資源規(guī)范字段
  selector:         # 選擇器
    app: center
  type: NodePort    # 端口類型
  ports:
    - protocol: TCP     # 協(xié)議
      port: 80          # service 端口
      targetPort: 80    # 容器暴露的端口
---
apiVersion: apps/v1   # 指定api版本此疹,此值必須在kubectl api-versions中
kind: Deployment      # 指定創(chuàng)建資源的角色/類型
metadata:             # 資源的元數(shù)據(jù)/屬性
  name: funfe-center    # 資源的名字僧诚,在同一個namespace中必須唯一
  namespace: default    # 資源的名字遮婶,在同一個namespace中必須唯一
spec:                 # 資源規(guī)范字段
  replicas: 1         # 聲明副本數(shù)目
  selector: # 選擇器
    matchLabels: # 匹配標(biāo)簽
      app: center
  template:           # 模版
    metadata: # 資源的元數(shù)據(jù)/屬性
      labels: # 設(shè)定資源的標(biāo)簽
        app: center
    spec:             # 資源規(guī)范字段
      imagePullSecrets:                    # 鏡像倉庫拉取密鑰
        - name: pipeline-docker-registry
      containers:
        - name: funfe                  # 容器的名字
          image: ${CICD_IMAGE}:${CICD_EXECUTION_SEQUENCE}   # 容器使用的鏡像地址
          ports:
            - containerPort: 80               # 容器開發(fā)對外的端口
            

六、修改代碼自動部署

修改代碼后會自動執(zhí)行編譯湖笨、推送到鏡像庫旗扑、拉取代碼部署

現(xiàn)在我修改代碼倉庫的代碼,回到rancher流水線中慈省,就看到有一個任務(wù)在執(zhí)行自動部署流程臀防,如下圖所示

image

執(zhí)行完成周,回到集群的工作負載當(dāng)中边败,就可以看到已經(jīng)有一個服務(wù)自動化部署到K8s中


image

日期:2021-03-04

作者:湯青松

微信:songboy8888

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袱衷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笑窜,更是在濱河造成了極大的恐慌致燥,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怖侦,死亡現(xiàn)場離奇詭異篡悟,居然都是意外死亡谒亦,警方通過查閱死者的電腦和手機续镇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門讥珍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來无蜂,“玉大人付枫,你說我怎么就攤上這事弄兜÷芗罚” “怎么了蹂窖?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵猜年,是天一觀的道長抡锈。 經(jīng)常有香客問我,道長乔外,這世上最難降的妖魔是什么床三? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮杨幼,結(jié)果婚禮上撇簿,老公的妹妹穿的比我還像新娘。我一直安慰自己差购,他們只是感情好四瘫,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欲逃,像睡著了一般找蜜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稳析,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天洗做,我揣著相機與錄音弓叛,去河邊找鬼。 笑死诚纸,一個胖子當(dāng)著我的面吹牛邪码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咬清,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奴潘!你這毒婦竟也來了旧烧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤画髓,失蹤者是張志新(化名)和其女友劉穎掘剪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奈虾,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡夺谁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肉微。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匾鸥。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碉纳,靈堂內(nèi)的尸體忽然破棺而出勿负,到底是詐尸還是另有隱情,我是刑警寧澤劳曹,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布奴愉,位于F島的核電站,受9級特大地震影響铁孵,放射性物質(zhì)發(fā)生泄漏锭硼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一蜕劝、第九天 我趴在偏房一處隱蔽的房頂上張望檀头。 院中可真熱鬧,春花似錦熙宇、人聲如沸鳖擒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋荚。三九已至,卻和暖如春馆蠕,著一層夾襖步出監(jiān)牢的瞬間期升,已是汗流浹背惊奇。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留播赁,地道東北人颂郎。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像容为,于是被迫代替她去往敵國和親乓序。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容