共用方式為


(已淘汰)更新 Kubernetes 中的應用程式

小提示

如需本教學課程使用 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

變更 VOTE1VALUEVOTE2VALUE 的值,然後儲存檔案。

# 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 上的 Kubernetes 叢集映像

標記和上傳映像

使用 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位址以查看更新的應用程式。

Azure 上的 Kubernetes 叢集映像

後續步驟

在本教學課程中,您已更新應用程式,並將此更新推出至 Kubernetes 叢集。 下列工作已完成:

  • 已更新前端應用程式程序代碼
  • 已建立更新的容器映像
  • 將容器映像推送至 Azure Container Registry
  • 已部署更新的應用程式

進入下一個教程,了解如何使用 Log Analytics 監視 Kubernetes。