教學課程:透過 Azure Kubernetes Service (AKS) 叢集使用 PaaS 服務
透過 Kubernetes,您可以使用 PaaS 服務,例如 Azure 服務匯流排,來開發和執行應用程式。
在本教學課程中,七個部分裡的第五個,您會建立 Azure 服務匯流排命名空間和佇列,以測試您的應用程式。 您將學習如何:
- 建立 Azure 服務匯流排命名空間及佇列。
- 更新 Kubernetes 資訊清單檔以使用 Azure 服務匯流排佇列。
- 藉由下訂單來測試更新的應用程式。
開始之前
在先前的教學課程中,您將應用程式封裝成容器映像、將這些映像上傳至 Azure Container Registry、建立 Kubernetes 叢集以及部署應用程式。 若要完成本教學課程中的內容,您需要預先建立的 aks-store-quickstart.yaml
Kubernetes 資訊清單檔。 在先前的教學課程中,此檔案已連同應用程式原始程式碼一起下載。 請確認您擁有複製的存放庫,而且已將目錄變更為複製的目錄。 如果您尚未完成這些步驟,並且想要跟著做,請從教學課程 1 – 準備 AKS 的應用程式開始。
本教學課程需要 Azure CLI 2.34.1 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
建立環境變數
建立下列環境變數,以用於本教學課程中的命令:
LOC_NAME=eastus RAND=$RANDOM RG_NAME=myResourceGroup AKS_NAME=myAKSCluster SB_NS=sb-store-demo-$RAND
建立 Azure 服務匯流排命名空間及佇列
在先前的教學課程中,您已使用 RabbitMQ 容器來儲存 order-service
所提交的訂單。 在本教學課程中,您會使用 Azure 服務匯流排命名空間,為應用程式內的服務匯流排資源提供範圍容器。 您也可以使用 Azure 服務匯流排佇列在應用程式元件之間傳送和接收訊息。 如需 Azure 服務匯流排的詳細資訊,請參閱 建立 Azure 服務匯流排命名空間和佇列。
使用
az servicebus namespace create
命令建立 Azure 服務匯流排命名空間。az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
使用
az servicebus queue create
命令建立 Azure 服務匯流排佇列。az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
使用
az servicebus queue authorization-rule create
命令建立 Azure 服務匯流排授權規則。az servicebus queue authorization-rule create \ --name sender \ --namespace-name $SB_NS \ --resource-group $RG_NAME \ --queue-name orders \ --rights Send
取得 Azure 服務匯流排認證,以供稍後使用
az servicebus namespace show
和az servicebus queue authorization-rule keys list
命令。az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
更新 Kubernetes 資訊清單檔
使用
az aks get-credentials
命令,設定kubectl
以連線到您的叢集。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
在文字編輯器中開啟
aks-store-quickstart.yaml
檔案。移除現有的
rabbitmq
StatefulSet、ConfigMap 和服務區段,並將現有的order-service
Deployment 區段取代為下列內容:apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.io/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.windows.net - name: ORDER_QUEUE_PORT value: "5671" - name: ORDER_QUEUE_TRANSPORT value: "tls" - name: ORDER_QUEUE_USERNAME value: "sender" - name: ORDER_QUEUE_PASSWORD value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi
注意
將 API 金鑰等敏感性資訊直接新增至 Kubernetes 指令清單檔案並不安全,而且可能會無意中提交至程式碼存放庫。 為了簡單起見,我們在這裡新增。 針對生產工作負載,請使用透過 Azure 服務匯流排來對受控識別進行驗證,或是將秘密儲存在 Azure Key Vault 中。
儲存並關閉更新的
aks-store-quickstart.yaml
檔案。
部署已更新的應用程式
使用
kubectl apply
命令,部署已更新的應用程式。kubectl apply -f aks-store-quickstart.yaml
下列範例輸出顯示已成功更新的資源:
deployment.apps/order-service configured service/order-service unchanged deployment.apps/product-service unchanged service/product-service unchanged deployment.apps/store-front configured service/store-front unchanged
測試應用程式
放置範例訂單
使用
kubectl get service
命令,取得store-front
服務的外部 IP 位址。kubectl get service store-front
使用
http://<external-ip>
瀏覽至瀏覽器中store-front
服務的外部 IP 位址。選擇產品並選取 [新增至購物車] 來下訂單。
選取 [購物車] 以檢視您的訂單,然後選取 [結帳]。
在 Azure 服務匯流排佇列中檢視訂單
- 瀏覽至 Azure 入口網站,然後開啟您稍早建立的 Azure 服務匯流排命名空間。
- 在 [實體] 下,選取 [佇列],然後選取訂單佇列。
- 在訂單佇列中,選取 [Service Bus Explorer]。
- 選擇 [從開始瞄核],以檢視您提交的訂單。
下一步
在本教學課程中,您已使用 Azure 服務匯流排來更新及測試範例應用程式。 您已了解如何︰
- 建立 Azure 服務匯流排命名空間及佇列。
- 更新 Kubernetes 資訊清單檔以使用 Azure 服務匯流排佇列。
- 藉由下訂單來測試更新的應用程式。
您會在下一個教學課程中了解如何在 AKS 裡調整應用程式。