共用方式為


教學課程:在 Azure Arc 啟用的 AKS 中更新應用程式

適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

使用 Arc 啟用的 AKS 在 Kubernetes 中部署應用程式之後,您可以藉由指定新的容器映射或映射版本來更新它。 您應分段進行更新,讓系統僅針對一部份的部署作業來同時更新。 此分段更新方式可讓應用程式在更新期間保持運作, 此外也能當作部署失敗時的復原機制。

本教學課程 (6/7 部分) 會說明範例 Azure 投票應用程式的更新方式。 您將了解如何:

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

開始之前

在先前的教學課程中,您已瞭解如何:

  • 將應用程式封裝到容器映像,並將映像上傳至 Azure Container Registry。
  • 在 Azure Stack HCI 上建立 Kubernetes 叢集,並將應用程式部署至叢集。
  • 複製應用程式存放庫,其中包括應用程式原始程式碼,以及您可在本教學課程使用的預先建立 Docker Compose 檔案。

確認您已建立存放庫的複本,並將目錄變更為複製的目錄。 如果您尚未完成這些步驟,請從教學課程 1 – 建立容器映像開始。

本教學課程需要您執行 Azure CLI 2.0.53 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

更新應用程式

本節說明如何變更範例應用程式,然後更新已部署至 AKS 叢集的版本。 請確定您位於複製的 azure-voting-app-redis 目錄。 您接著可在 azure-vote 目錄中找到範例應用程式的原始程式碼。 使用編輯器開啟 config_file.cfg 檔案,例如 [記事本]:

notepad azure-vote/azure-vote/config_file.cfg

將 和 VOTE2VALUE 的值VOTE1VALUE變更為不同的值,例如色彩。 下列範例顯示已更新的值:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

儲存並關閉檔案。

更新容器映像

若要重新建立前端映像並測試已更新的應用程式,請使用 docker-compose。 自 --build 變數用來重新建立應用程式映像:

docker-compose up --build -d

在本機測試應用程式

若要確認更新的容器映像已顯示您的變更,請開啟本機網頁瀏覽器並進入 http://localhost:8080

螢幕擷取畫面,顯示已使用本機網頁瀏覽器開啟在本機執行的已更新容器映像 Azure 投票應用程式的範例

config_file.cfg 中提供的更新值會顯示在執行中的應用程式中。

標記並推送映像

若要正確使用更新的映像,請使用 Azure Container Registry 實例的登入伺服器名稱標記 azure-vote-front 映像。 使用 az acr list 命令取得登入伺服器名稱:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

使用 docker tag 來標記映像。 將 取代 <acrLoginServer> 為您的容器登錄登入伺服器名稱或公用登錄主機名,並將映射版本更新為 v2,如下所示:

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

現在,使用 docker push 將映像上傳至您的登錄。 以您的 Azure Container Registry 登入伺服器名稱取代 <acrLoginServer>

注意

如果您遇到推送至容器登錄的問題,請確定您仍已登入。 使用 建立 Azure Container Registry 步驟中建立的 Azure Container Registry 名稱,執行 az acr login 命令。 例如: az acr login --name <azure container registry name>

docker push <acrLoginServer>/azure-vote-front:v2

部署已更新的應用程式

若要提供最大執行時間,您必須執行多個應用程式 Pod 的執行個體。 使用 kubectl get pods 命令確認執行中的前端執行個體數目:

$ kubectl get pods

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

如果您沒有多個前端 Pod,請調整 azure-vote-front 部署,如下所示:

kubectl scale --replicas=3 deployment/azure-vote-front

若要更新應用程式,請使用 kubectl set 命令。 以容器登錄的登入伺服器或主機名稱來更新 <acrLoginServer>,並指定 v2 應用程式版本:

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2

若要監視部署,請使用 kubectl get pod 命令。 部署更新的應用程式時,您的 Pod 會終止,並使用新的容器映像重新建立:

kubectl get pods

下列範例輸出顯示在部署進行期間正在終止的 Pod 和執行中的新執行個體:

$ kubectl get pods

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

測試已更新的應用程式

若要檢視更新應用程式,請先取得 azure-vote-front 服務的外部 IP 位址:

kubectl get service azure-vote-front

接著,開啟網頁瀏覽器並前往您服務的 IP 位址:

此螢幕快照顯示已在本機網頁瀏覽器中開啟的 Kubernetes 叢集中執行的已更新映像 Azure 投票應用程式範例。

下一步

在本教學課程中,您已更新應用程式,並將此更新推出至 Kubernetes 叢集。 您已了解如何︰

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

請前進到下一個教學課程,以瞭解如何將叢集升級至新版本的 Kubernetes。