iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
0
自我挑戰組

DevOps學習之旅系列 第 17

Day 17 Jenkins 整合 Kubernetes 部署

簡介

把 Kubernetes 部署的動作也整合到 Jenkins 步驟,串起整個 CI/CD 到 GCP Kubernetes.以下是整個完整步驟,只是在jenkins 設定腳本裡面加了一行指令,就可以完成者個部署工作,非常的方便.

  1. 開發者上傳程式碼到 bitbucket
  2. Jenkins 每分鐘輪詢發現 bitbucket 有更新
  3. Jenkins 下載最新程式碼,並且執行建置腳本(prepare.sh)
  4. Jenkins 指行測試程式(pytest)
  5. 建置 Docker Image
  6. 上傳Docker Image 到 Google Container Regigstry
  7. 遠端控制Google Kubernetes 更新映像檔(Kubectl)

Jenkins

安裝 Kubectl

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

連結

gcloud container clusters get-credentials ithome --zone asia-east1-a --project tidal-surf-219013

https://ithelp.ithome.com.tw/upload/images/20181018/20072651lx4JYnBVlp.png

修改設定

# 安裝專案環境
bash prepare.sh
# 執行測試
env/bin/py.test --junitxml=pytest_result.xml --cov=ithome_pellok_2018 --cov-report=xml
# 建置 Docker
rm -f ithome_pellok_2018.sqlite
docker build --rm -t ithome_pellok_2018:${BUILD_NUMBER} .
# Doker Image 打標籤
docker tag ithome_pellok_2018:${BUILD_NUMBER} asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}
# 上傳到 google cloud
gcloud docker -- push asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}

# 更新 kubernetes.yaml
kubectl set image deployment/ithome-service-deploy joyi=asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER} --record

結論

Jenkins 可以部署到單台 VM,也可以幫我們部署到 Kubernetes,就看我們需要用到的環境是什麼,主要就是自動化這個過程,當然這只是最基礎的流程,還有很多的細節需要一一克服,但是讓我們在每一個動作都盡量自動化,避免人為疏失.

參考

Install and Set Up kubectl


上一篇
Day 16 部署到 Kubernetes
下一篇
Day 18 專案 Serverless
系列文
DevOps學習之旅30

尚未有邦友留言

立即登入留言