Workshop應用發佈實踐手冊(二)

本文主要用於演示如何在阿里雲容器服務Kubernetes集羣中部署一個應用,並將該應用通過Ingress對外暴露提供服務訪問,以及如何通過滾動升級和灰度發佈來更新升級應用版本。

部署應用

1、首先創建一個應用部署,這裏使用鏡像創建
image

2、設置應用部署名稱,這裏取名爲product-page
image

3、填寫應用部署基礎鏡像信息
鏡像:registry.cn-hangzhou.aliyuncs.com/acs-sample/productpage:v1
image

4、然後創建一個對應的應用服務
image

5、待應用服務創建完成後,我們可以在服務列表中看到如下信息
image

6、最後點擊創建,我們可以看到應用部署成功
image

7、查看應用詳情,我們可以看到5個Pod已經成功運行
image

暴露服務

這裏我們需要將product-page應用能夠對外提供訪問

1、創建一個路由(Ingress)
image

2、填寫路由基本信息
這裏我們僅填寫域名前綴爲product
image

3、創建完成後,我們可以看到應用的路由信息
image

4、此時我們可以通過域名訪問應用的/productpage頁面
image

滾動升級

這裏我們通過滾動升級的方式來更新應用到新版本v2,由於控制檯上暫未展示出應用的滾動升級進度,這裏我們通過命令行的方式來操作

1、首先我們查看下前面創建成功的應用部署

  ~ kubectl get deploy
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
product-page   5         5         5            5           20m

2、在滾動升級前我們可以通過如下命令來監控整個滾動升級的過程
注意:這裏不要主動停止該監控命令

  ~ kubectl get rs -w
NAME                      DESIRED   CURRENT   READY     AGE
product-page-6d74f58b46   5         5         5         1m

3、此時我們再新開一個終端,通過下面命令先主動暫停該應用的滾動升級過程,便於我們可以體驗下如何主動暫停和恢復應用的滾動升級

  ~ kubectl rollout pause deploy/product-page
deployment.apps "product-page" paused

4、然後我們通過如下命令來更新應用版本到v2
鏡像:registry.cn-hangzhou.aliyuncs.com/acs-sample/productpage:v2

  ~ kubectl set image deploy/product-page product-page=registry.cn-hangzhou.aliyuncs.com/acs-sample/productpage:v2
deployment.apps "product-page" image updated

5、此時我們可以看到滾動升級並未開始
image

6、然後我們通過下面命令來恢復應用的滾動升級

  ~ kubectl rollout resume deploy/product-page
deployment.apps "product-page" resumed

7、此時我們看到整個的滾動升級過程
image

8、此時我們再訪問應用的域名,可以看到已經是新版本的應用界面
image

9、假若我們希望回滾到老版本v1,我們首先查看下當前該應用的歷史版本記錄,可以看到當前有2個版本記錄

  ~ kubectl rollout history deploy/product-page
deployments "product-page"
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

10、我們通過如下命令來將應用回滾到revision=1的版本(即上一個版本)

  ~ kubectl rollout undo deploy/product-page
deployment.apps "product-page"

通過監控可以看到現在所有的Pod都回滾到了原來老版本
image

11、此時我們再次通過域名訪問應用,看到了已經是老版本的頁面
image

灰度發佈

這裏我們通過灰度發佈的方式來更新應用到新版本v2

1、我們首先部署一個新版本應用v2
image

2、設置新版本應用基本信息
這裏取名爲product-page-v2,同樣設置副本數量爲5
image

3、設置使用新版本鏡像v2
新版本鏡像:registry.cn-hangzhou.aliyuncs.com/acs-sample/productpage:v2
image

4、同樣創建一個新版本對應的服務
image

5、創建後,在服務列表可以看到創建了一個服務
image

6、最終創建完成,我們看到新版本v2的應用部署完成
image

7、此時我們更新路由配置來設置引流規則
image

8、這裏我們設置將請求參數中帶有v=2的請求轉發到新版本服務中
image

9、此時我們再次訪問應用域名
1)不添加請求參數v=2時
image
2)添加請求參數v=2時
image

參考文章

滾動升級:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
灰度發佈:https://yq.aliyun.com/articles/594019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章