Share via


教學課程:透過 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 服務匯流排命名空間和佇列

  1. 使用 az servicebus namespace create 命令建立 Azure 服務匯流排命名空間。

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    
  2. 使用 az servicebus queue create 命令建立 Azure 服務匯流排佇列。

    az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
    
  3. 使用 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
    
  4. 取得 Azure 服務匯流排認證,以供稍後使用 az servicebus namespace showaz 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 資訊清單檔

  1. 使用 az aks get-credentials 命令,設定 kubectl 以連線到您的叢集。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. 在文字編輯器中開啟 aks-store-quickstart.yaml 檔案。

  3. 移除現有的 rabbitmq StatefulSet、ConfigMap 和服務區段,並將現有的 order-service 部署區段取代為下列內容:

    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 中。

  4. 儲存並關閉更新的 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
    

測試應用程式

放置範例訂單

  1. 使用 kubectl get service 命令,取得 store-front 服務的外部 IP 位址。

    kubectl get service store-front
    
  2. 瀏覽至瀏覽器中 store-front 服務的外部IP位址。

  3. 選擇產品並選取 [新增至購物車] 來下訂單。

  4. 選取 [購物車] 以檢視您的訂單,然後選取 [結帳]。

在 Azure 服務匯流排佇列中檢視訂單

  1. 瀏覽至 Azure 入口網站,然後開啟您稍早建立的 Azure 服務匯流排命名空間。
  2. 在 [實體] 下,選取 [佇列],然後選取訂單佇列。
  3. 訂單佇列中,選取 [Service Bus Explorer]
  4. 選擇 [從開始瞄核],以檢視您提交的訂單。

下一步

在本教學課程中,您已使用 Azure 服務匯流排來更新及測試範例應用程式。 您已了解如何︰

  • 建立 Azure 服務匯流排命名空間及佇列。
  • 更新 Kubernetes 資訊清單檔以使用 Azure 服務匯流排佇列。
  • 藉由下訂單來測試更新的應用程式。

您會在下一個教學課程中了解如何在 AKS 裡調整應用程式。