練習 - 在 Azure Kubernetes Service 叢集上部署應用程式

已完成

在此練習中,您會將公司的後端訊息服務當作測試應用程式部署到 Azure Kubernetes Service (AKS)。 此服務會連線到上一個練習中建立的 Redis PaaS 服務。

注意

服務的程式碼可在 GitHub 存放庫中取得。

在 Redis 中建立清單

您必須在 Redis 中建立清單,並填入一些隨機元素,以模擬接收資料的佇列。 佇列中的每個項目都代表微服務將處理的內容。 在此練習中,您會新增固定數目的項目。 稍後在練習中,您會將微服務調整為佇列中的項目數目。

  1. 請確定 Docker 正在您的電腦上執行。

  2. 在本機建立 Redis 容器,以使用 docker run 命令連線到 Azure Cache for Redis:

    docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
    

    您的輸出看起來應類似下列範例輸出:

    redis-contoso-video.redis.cache.windows.net:6379>
    
  3. 使用 lpush keda 命令建立清單並填入隨機元素:

    lpush keda Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eget interdum felis, ac ultricies nulla. Fusce vehicula mattis laoreet. Quisque facilisis bibendum dui, at scelerisque nulla hendrerit sed. Sed rutrum augue arcu, id maximus felis sollicitudin eget. Curabitur non libero rhoncus, pellentesque orci a, tincidunt sapien. Suspendisse laoreet vulputate sagittis. Vivamus ac magna lacus. Etiam sagittis facilisis dictum. Phasellus faucibus sagittis libero, ac semper lorem commodo in. Quisque tortor lorem, sollicitudin non odio sit amet, finibus molestie eros. Proin aliquam laoreet eros, sed dapibus tortor euismod quis. Maecenas sed viverra sem, at porta sapien. Sed sollicitudin arcu leo, vitae elementum
    
  4. 使用 llen keda 命令確認清單的長度:

    llen keda
    
  5. 輸入 exit 以結束 Redis 殼層。

建立部署資訊清單

您可以建立部署資訊清單檔來部署應用程式。 資訊清單檔可供定義所要部署的資源類型,以及與工作負載有關的詳細資料。

Kubernetes 會將容器分組成稱為 Pod 的邏輯結構,其中不包含任何情報。 部署會新增遺漏的情報以建立應用程式。

  1. 在 Cloud Shell 中,使用 touch 命令,為 Kubernetes 部署建立稱為 deployment.yaml 的資訊清單檔:

    touch deployment.yaml
    
  2. 輸入 code .,在 Cloud Shell 中開啟整合式編輯器

  3. 開啟 deployment.yaml 檔案並貼上下列資訊清單程式碼。 請務必將 Redis 環境變數取代為您自己的值。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-microservice
    spec:
      replicas: 1                   # Tells K8S the number of containers to process the Redis list items
      selector:                     # Define the wrapping strategy
        matchLabels:                # Match all pods with the defined labels
          app: contoso-microservice # Labels follow the `name: value` template
      template:                     # Template of the pod inside the Deployment
        metadata:
          labels:
            app: contoso-microservice
        spec:
          containers:
            - image: mcr.microsoft.com/mslearn/samples/redis-client:latest
              name: contoso-microservice
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 100m
                  memory: 128Mi
              env:
                - name: REDIS_HOST
                  value: "redis-contoso-video.redis.cache.windows.net" # *** REPLACE with your value ***
                - name: REDIS_PORT
                  value: "6379"                                        # *** REPLACE with your value ***
                - name: REDIS_LIST
                  value: "keda"                                        # *** REPLACE with your value ***
                - name: REDIS_KEY
                  value: "******************************************"  # *** REPLACE with your value ***
    
  4. 儲存資訊清單檔 (CTRL + S) 並關閉編輯器 (CTRL + Q)。

套用資訊清單

  1. 使用 kubectl apply 命令將資訊清單部署至叢集:

    kubectl apply -f ./deployment.yaml
    

    您的輸出看起來應類似下列範例輸出:

    deployment.apps/contoso-microservice created
    
  2. 使用 kubectl get deployment 命令確認部署是否成功:

    kubectl get deployment contoso-microservice
    

    您的輸出看起來應類似下列範例輸出:

    NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-microservice   1/1     1            0           16s
    
  3. 使用 kubectl get pods 命令確認 Pod 正在執行:

    kubectl get pods
    

    您的輸出看起來應類似下列的範例輸出:

    NAME                                    READY   STATUS    RESTARTS   AGE
    contoso-microservice-7c58c5f699-r79mv   1/1     Running   0          63s