1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 6015字,需瀏覽 13分鐘

         ·

        2021-03-08 22:00

        作者:湯青松
        來源:SegmentFault 思否社區(qū)




        一、背景


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


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




        二、操作步驟


        1. 讓Rancher能訪問GitLab

        2. 在流水線添加項目

        3. 在倉庫添加必備文件

        4. CICD自動部署調(diào)試




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


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




        接下來打開gitlab,然后打開設(shè)置頁面:

        http://xx.xx.xx.xx/admin/applications/4


        如下圖所示



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


        保存之后,gitlab會生成Application Id和Secret,我們將它復制出來



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



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





        四、在rancher中添加代碼倉庫


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



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





        五、添加部署必備個文件


        接下來就可以開始在代碼中啟用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ū)域所示



        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的同學可能會比較陌生,這里我將每一行都寫了注釋,并將需要修改的地方用紅色標記圈出來了,如下圖所示



        參考配置如下所示


        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: # 匹配標簽
              app: center
          template:           # 模版
            metadata: # 資源的元數(shù)據(jù)/屬性
              labels: # 設(shè)定資源的標簽
                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í)行自動部署流程,如下圖所示



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






        點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

        - END -


        瀏覽 46
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            大鸡吧在线免费视频 | 盗摄偷窥系列7777777 | 美女岔开腿让男生桶动态图 | 女警花A∨毛片一区二区 | 北岛玲日韩一区二区三区 | 日韩人妻精品无码久久 | 美女扒开嫩嫩的尿口让人桶 | 国产成人精品国内自产色情按摩 | 久久久久动漫 | 操小骚逼操小骚逼操小骚逼 |