小提示
如需本教學課程使用 Azure Kubernetes Service 的更新版本,請參閱教學課程:在 Azure Kubernetes Service 中更新應用程式(AKS)。
警告
Azure Container Service (ACS) 即將淘汰。 ACS 中不會新增任何新功能。 所有 API、入口網站體驗、CLI 命令和文件都會標示為已被取代。
在 2017 年,我們引進了 Azure Kubernetes Service (AKS),以簡化 Kubernetes 管理、部署和作業。 如果您使用 Kubernetes 協調器,請在 2020 年 1 月 31 日前移轉至 AKS。 若要開始使用,請參閱 遷移至 Azure Kubernetes Service。
如需詳細資訊,請參閱 Azure.com 上的 Azure Container Service 淘汰公告。
在 Kubernetes 中部署應用程式之後,可以藉由指定新的容器映像或映像版本來更新它。 在進行此操作時,更新會被分階段處理,以便僅部分部署能夠同時更新。 此分段更新方式可讓應用程式在更新期間保持運作, 此外也能當作部署失敗時的復原機制。
在本教學課程中,範例 Azure 投票應用程式的第六部分已更新。 您完成的工作包括:
- 更新前端應用程式程序代碼
- 建立更新的容器映像
- 將容器映像推送至 Azure Container Registry
- 部署更新的容器映像
在後續的教學課程中,Log Analytics 會設定為監視 Kubernetes 叢集。
開始之前
在先前的教學課程中,應用程式已封裝成容器映像、上傳至 Azure Container Registry 的映像,以及已建立 Kubernetes 叢集。 應用程式接著會在 Kubernetes 叢集上執行。
應用程式存放庫也已複製,其中包含應用程式原始程式碼,以及本教學課程中使用的預先建立 Docker Compose 檔案。 確認您已建立存放庫的複本,而且您已將目錄變更為複製的目錄。 內部是名為 azure-vote 的目錄,以及名為的 docker-compose.yml檔案。
如果您尚未完成這些步驟,而且想要跟著做,請返回 教學課程 1 – 建立容器映像。
更新應用程式 \(英文\)
在本教學課程中,針對應用程式進行變更,並將更新後的應用程式部署至 Kubernetes 叢集。
您可以在目錄內 azure-vote 找到應用程式原始碼。 使用任何程式碼或文本編輯器開啟config_file.cfg檔案。 範例 vi 中被使用。
vi azure-vote/azure-vote/config_file.cfg
變更 VOTE1VALUE 和 VOTE2VALUE 的值,然後儲存檔案。
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
儲存並關閉檔案。
更新容器映像
使用 docker-compose 重新建立前端映像,並執行更新的應用程式。 自 --build 變數可用來指示 Docker Compose 重新建立應用程式映像。
docker-compose up --build -d
在本機測試應用程式
流覽至 https://localhost:8080 以查看更新的應用程式。
標記和上傳映像
使用 azure-vote-front 容器登錄的loginServer標記映像。
使用 az acr list 命令取得登入伺服器名稱。
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
使用 Docker 標記 來標記映像。 將 <acrLoginServer> 替換為您的 Azure 容器註冊服務的登入伺服器名稱或公用註冊主機名稱。 另請注意,映像版本已更新為 redis-v2。
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v2
使用 docker push 將映射上傳至您的登錄。 將 <acrLoginServer> 取代為您的 Azure Container Registry 登入伺服器名稱。
docker push <acrLoginServer>/azure-vote-front:redis-v2
部署更新應用程式
為了確保最大正常運作時間,應用程式 Pod 的多個實例必須運行。 使用 kubectl get pod 命令來確認此組態。
kubectl get pod
輸出:
NAME READY STATUS RESTARTS AGE
azure-vote-back-217588096-5w632 1/1 Running 0 10m
azure-vote-front-233282510-b5pkz 1/1 Running 0 10m
azure-vote-front-233282510-dhrtr 1/1 Running 0 10m
azure-vote-front-233282510-pqbfk 1/1 Running 0 10m
如果您沒有執行 azure-vote-front 映射的多個 Pod,請調整部署規模 azure-vote-front 。
kubectl scale --replicas=3 deployment/azure-vote-front
若要更新應用程式,請使用 kubectl set 命令。 請使用您的容器映像庫的登入伺服器或主機名稱來更新 <acrLoginServer> 。
kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:redis-v2
若要監視部署,請使用 kubectl get pod 命令。 部署更新的應用程式時,您的 Pod 會終止,並使用新的容器映像重新建立。
kubectl get pod
輸出:
NAME READY STATUS RESTARTS AGE
azure-vote-back-2978095810-gq9g0 1/1 Running 0 5m
azure-vote-front-1297194256-tpjlg 1/1 Running 0 1m
azure-vote-front-1297194256-tptnx 1/1 Running 0 5m
azure-vote-front-1297194256-zktw9 1/1 Terminating 0 1m
測試更新的應用程式
取得服務的外部IP位址 azure-vote-front 。
kubectl get service azure-vote-front
流覽至IP位址以查看更新的應用程式。
後續步驟
在本教學課程中,您已更新應用程式,並將此更新推出至 Kubernetes 叢集。 下列工作已完成:
- 已更新前端應用程式程序代碼
- 已建立更新的容器映像
- 將容器映像推送至 Azure Container Registry
- 已部署更新的應用程式
進入下一個教程,了解如何使用 Log Analytics 監視 Kubernetes。