Kubernetes 實踐 第三篇: 基於Gitlab的CI/CD

此係列文章爲團隊內部的實踐總結和培訓資料, 去除敏感信息保留公共部分與你們共享. 首先須要你們對Docker和Kubernetes有必定的基礎瞭解, 文章再也不對容器集羣是什麼的問題進行論述. 着重於怎麼作爲何. 目標是讓有容器相關基礎概念的讀者參考此係列文章, 可以將手上的程序在Kubernetes中以符合雲原生的方式運行起來.html

目錄:前端

  1. Kubernetes 實踐 第一篇: 程序容器化
  2. Kubernetes 實踐 第二篇: 部署應用到集羣上
  3. Kubernetes 實踐 第三篇: 基於Gitlab的CI/CD
  4. Kubernetes 實踐 第四篇: 存儲
  5. Kubernetes 實踐 第五篇: 配置管理
  6. Kubernetes 實踐 第六篇: 日誌管理
  7. Kubernetes 實踐 第七篇: 微服務鏈路追蹤
  8. Kubernetes 實踐 第八篇: Golang 程序完整實現和 Demo
  9. Kubernetes 實踐 第九篇: PHP 程序的完整實現和 Demo

12-factors

12-factorsgit

本篇內容剛好吻合十二要素第五條: 構建,發佈,運行.docker

配置 Gitlab CI 的 Kubernetes ServiceAccount

建立 ServiceAccount

  1. 建立 gitlab-ci 的 ServiceAccount
    kubectl create sa gitlab-ci
    複製代碼
  2. 獲取secrete
    kubectl get sa gitlab-ci -o json | jq -r .secrets[].name
    複製代碼
  3. 獲取 token
    kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -d
    複製代碼
  4. 獲取 ca
    kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -d
    複製代碼

配置 Gitlab CI 的 Variable

在 Gitlab 的 CI 設置中配置相關變量, 在 gitlab ci 任務中調用.json

KUBERNETES_SERVER
KUBE_CA
KUBE_TOKEN
KUBE_SECRETE
複製代碼

構建與發佈

參考第一篇的內容: Kubernetes 實踐 第一篇: 程序容器化. 將程序打包成爲 Docker 鏡像. 對應的 CI 任務中應該包含構建鏡像和推送 registry 鏡像到倉庫兩個工做.後端

build:
  stage: build
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --build-arg APP_ROOT=$APP_ROOT --build-arg APP_NAME=$APP_NAME -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest -f Dockerfile .
    - docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
    - docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
複製代碼

其中 build-arg 中的參數根據 Dockerfile 所需的定義肯定.bash

運行

這一步須要將建立好的程序鏡像更新到集羣的部署上, 咱們使用一個前面配置好的 gitlab 的 ServiceAccount 進行認證操做 Kubernetes. 使用 kubectl set image 命令將新版鏡像更新上去.微服務

deploy:
  stage: deploy
  variables:
    IMAGE_NAME: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
  image: dodocat/kubectl:v1.14.1
  before_script:
    - echo "$KUBE_CA" > ca.crt
    - kubectl config set-cluster development --embed-certs=true --server=$KUBE_URL --certificate-authority=./ca.crt
    - kubectl config set-credentials gitlab --token=$KUBE_TOKEN
    - kubectl config set-context gitlab-development --cluster=development --user=gitlab
    - kubectl config use-context gitlab-development
  script:
    - kubectl set image deployment/$APP_NAME $APP_NAME=$IMAGE_NAME
複製代碼

招聘

讀書郎教育科技是教育電子行業的頭部企業, 當前咱們正在作教育信息化的平臺和在線直播教育兩個巨大前景的事業. 辦公地點在珠海. 如今前端 後端 Android開放招聘, 歡迎志同道合的朋友來和我聊聊.gitlab

招聘主頁地址: www.zhipin.com/gongsir/ad0…post

相關文章
相關標籤/搜索