教學課程:在 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
。
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 Container Registry
- 部署已更新的容器映像
請前進到下一個教學課程,以瞭解如何將叢集升級至新版本的 Kubernetes。