這是一個將 Django-Nginx-uWSGI-High-Performance-JasperShop Dockerize 以及用 k8s + Jenkins 來部署的專案
詳細過程可以在我的部落格看我是怎麼一步一步做出來的:
- [K8s + Jenkins] 將舊有 Django 專案翻新 (1) - 前言
- [K8s + Jenkins] 將舊有 Django 專案翻新 (2) - Dockerize
- [K8s + Jenkins] 將舊有 Django 專案翻新 (3) - Google Kubernetes Engine (上)
- [K8s + Jenkins] 將舊有 Django 專案翻新 (4) - Google Kubernetes Engine (下)
- [K8s + Jenkins] 將舊有 Django 專案翻新 (5) - Django Static File With Nginx
- [K8s + Jenkins] 將舊有 Django 專案翻新 (6) - Ingress
- [K8s + Jenkins] 將舊有 Django 專案翻新 (7) - Jenkins
- [K8s + Jenkins] 將舊有 Django 專案翻新 (8) - 結語
影片展示了無需停機即可透過 Git Push 來完成自動化部署,一開始可以看到搜尋列的 Placeholder 為 改版測試-3
,後來更新為 改版測試-4
後,就直接 Push 到我的 GitHub Repository,原先就有設定好 Webhook,接下來 Jenkins 就開始執行兩個 Job。
JasperShop-Pipeline
負責拉取 GitHub Repository 上面最新的 Code,並且 Build 和 Push Docker Image 到我的 Docker Hub 上。
JasperShop-Updater
負責執行 k8s-yaml/scripts/update_k8s.sh
腳本檔,Apply 專案的 yaml 檔,並透過 kubectl
來完成滾動更新。
畫面最後可以看到網頁在只有一個新的 Pod 被執行起來時就可以連線,也可以看到搜尋列的 Placeholder 為 改版測試-4,之後也可以看到所有的 Pod 都已經被更新成新的版本且都部署好,完成這次的無停機更新。