教學課程:將應用程式部署至 Azure Kubernetes Service (AKS)
Kubernetes 提供適用於容器化應用程式的分散式系統。 您會建置自己的應用程式和服務,並將其部署至 Kubernetes 叢集,並讓該叢集管理可用性和連線能力。
在本教學課程 (七個章節的第四部分) 中,您會在 Kubernetes 叢集中部署一個應用程式範例。 您將學習如何:
- 更新 Kubernetes 資訊清單檔。
- 在 Kubernetes 中執行應用程式。
- 測試應用程式。
提示
透過 AKS,您可以使用下列方法來進行組態管理:
GitOps:啟用叢集狀態宣告自動套用至叢集。 若要了解如何使用 GitOps 搭配 AKS 叢集部署應用程式,請參閱使用 GitOps 搭配 Flux v2 教學課程中的 Azure Kubernetes Service 叢集的必要條件。
DevOps:可讓您建置、測試及部署持續整合 (CI) 與持續傳遞 (CD)。 若要查看如何使用 DevOps 搭配 AKS 叢集部署應用程式的範例,請參閱 使用 Azure Pipelines 建置並部署至 AKS 或 部署至 Kubernetes 的 GitHub Actions。
開始之前
在上一個教學課程中,您已將應用程式封裝成容器映像、將映像上傳至 Azure Container Registry,並已建立 Kubernetes 叢集。 若要完成本教學課程中的內容,您需要預先建立的 aks-store-quickstart.yaml
Kubernetes 資訊清單檔。 此檔案是從教學課程 1:準備 AKS 的應用程式 (部分機器翻譯) 的應用程式原始程式碼中下載。
本教學課程需要 Azure CLI 2.0.53 版或更新版本。 使用 az --version
檢查版本。 若要安裝或升級,請參閱安裝 Azure CLI。
更新資訊清單檔
在這些教學課程中,您的 Azure Container Registry (ACR) 執行個體會儲存範例應用程式的容器映像。 若要部署應用程式,您必須更新 Kubernetes 資訊清單檔中的映像名稱,以納入您的 ACR 登入伺服器名稱。
使用
az acr list
命令取得登入伺服器位址,並查詢您的登入伺服器。az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
請確定您位於複製的 aks-store-demo 目錄,然後使用文字編輯器開啟
aks-store-quickstart.yaml
資訊清單檔。使用您的 ACR 登入伺服器名稱取代 ghcr.io/azure-samples,以更新容器的
image
屬性。containers: ... - name: order-service image: <acrName>.azurecr.io/aks-store-demo/order-service:latest ... - name: product-service image: <acrName>.azurecr.io/aks-store-demo/product-service:latest ... - name: store-front image: <acrName>.azurecr.io/aks-store-demo/store-front:latest ...
儲存並關閉檔案。
執行應用程式
使用
kubectl apply
命令來部署應用程式,其會剖析資訊清單檔,並建立已定義的 Kubernetes 物件。kubectl apply -f aks-store-quickstart.yaml
下列範例輸出顯示在 AKS 叢集中成功建立的資源:
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
使用
kubectl get pods
命令檢視 Pod 來檢查部署是否成功。kubectl get pods
測試應用程式
當應用程式執行時,Kubernetes 服務會將應用程式前端公開至網際網路。 此程序可能需要幾分鐘才能完成。
命令列
使用
kubectl get service
命令搭配--watch
引數來監視進度。kubectl get service store-front --watch
一開始,
store-front
服務的EXTERNAL-IP
會顯示為<pending>
:store-front LoadBalancer 10.0.34.242 <pending> 80:30676/TCP 5s
當
EXTERNAL-IP
位址從<pending>
變成公用 IP 位址時,請使用CTRL-C
停止kubectl
監看式流程。下列範例輸出顯示指派給服務的有效公用 IP 位址:
store-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s
透過開啟網頁瀏覽器並瀏覽至服務的外部 IP 位址,檢視應用程式的實際運作情況:
http://<external-ip>
。
如果應用程式並未載入,可能是您的映像登錄發生授權問題。 若要檢視容器的狀態,請使用 kubectl get pods
命令。 如果您無法提取容器映像,請參閱從 Azure Kubernetes Service 對 Azure Container Registry 進行驗證。
Azure 入口網站
流覽至 Azure 入口網站 以尋找您的部署資訊。
流覽至您的 AKS 叢集資源。
從 [服務] 功能表的 [Kubernetes 資源] 底下,選取 [服務和輸入]。
複製服務數據列
store-front
中顯示的外部IP。將IP貼到瀏覽器,以瀏覽您的市集頁面。
清除資源
由於您已驗證應用程式的功能,現在可以從應用程式中移除叢集。 我們將於下一個教學課程中再次部署該應用程式。
使用
kubectl delete
命令停止並移除容器執行個體和資源。kubectl delete -f aks-store-quickstart.yaml
檢查已使用
kubectl get pods
命令移除所有應用程式 Pod。kubectl get pods
下一步
在本教學課程中,您已於 AKS 中部署範例 Azure 應用程式至 Kubernetes 叢集。 您已了解如何︰
- 更新 Kubernetes 資訊清單檔。
- 在 Kubernetes 中執行應用程式。
- 測試應用程式。
在下一個教學課程中,您將了解如何在 Kubernetes 中使用 PaaS 服務進行具狀態工作負載。