教學課程 - 準備 Azure Kubernetes Service 的應用程式 (AKS)

在本教學課程中,您會準備多容器應用程式,以在 Kubernetes 中使用。 您可以使用 Docker Compose 等現有開發工具,在本機建置及測試應用程式。 您將學習如何:

  • 從 GitHub 複製範例應用程式來源。
  • 從範例應用程式來源建立容器映像。
  • 在本機 Docker 環境中測試多容器應用程式。

完成後,下列應用程式會在本機開發環境中執行:

此螢幕快照顯示本機執行的 Azure 市集 Front App 在本機網頁瀏覽器中開啟。

在稍後的教學課程中,您會將容器映射上傳至 Azure Container Registry (ACR),然後將它部署到 AKS 叢集。

開始之前

本教學課程假設對核心 Docker 概念有基本瞭解,例如容器、容器映射和 docker 命令。 如需容器基本概念的入門參考資料,請參閱開始使用 Docker

若要完成本教學課程,您需要執行 Linux 容器的本機 Docker 開發環境。 Docker 提供在 MacWindowsLinux 系統上設定 Docker 的套件。

注意

Azure Cloud Shell 不包含完成這些教學課程中每個步驟所需的 Docker 元件。 因此,我們建議使用完整的 Docker 開發環境。


取得應用程式程式碼

本教學課程中使用的範例應用程式是基本的市集前端應用程式,包括下列 Kubernetes 部署和服務:

Azure 市集範例架構的螢幕快照。

  • 市集前端:供客戶檢視產品和下單的 Web 應用程式。
  • 產品服務:顯示產品資訊。
  • 訂單服務:下單。
  • Rabbit MQ:訂單佇列的訊息佇列。
  1. 使用 git 將範例應用程式複製到您的開發環境。

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. 變更為複製的目錄。

    cd aks-store-demo
    

檢閱 Docker Compose 檔案

您在本教學課程中建立的範例應用程式會從您複製的存放庫使用 docker-compose-quickstart YAML 檔案。

version: "3.7"
services:
  rabbitmq:
    image: rabbitmq:3.11.17-management-alpine
    container_name: 'rabbitmq'
    restart: always
    environment:
      - "RABBITMQ_DEFAULT_USER=username"
      - "RABBITMQ_DEFAULT_PASS=password"
    ports:
      - 15672:15672
      - 5672:5672
    healthcheck:
      test: ["CMD", "rabbitmqctl", "status"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
    networks:
      - backend_services
  orderservice:
    build: src/order-service
    container_name: 'orderservice'
    restart: always
    ports:
      - 3000:3000
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://orderservice:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - ORDER_QUEUE_HOSTNAME=rabbitmq
      - ORDER_QUEUE_PORT=5672
      - ORDER_QUEUE_USERNAME=username
      - ORDER_QUEUE_PASSWORD=password
      - ORDER_QUEUE_NAME=orders
      - ORDER_QUEUE_RECONNECT_LIMIT=3
    networks:
      - backend_services
    depends_on:
      rabbitmq:
        condition: service_healthy
  productservice:
    build: src/product-service
    container_name: 'productservice'
    restart: always
    ports:
      - 3002:3002
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://productservice:3002/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    networks:
      - backend_services
  storefront:
    build: src/store-front
    container_name: 'storefront'
    restart: always
    ports:
      - 8080:8080
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://storefront:80/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - VUE_APP_PRODUCT_SERVICE_URL=http://productservice:3002/
      - VUE_APP_ORDER_SERVICE_URL=http://orderservice:3000/
    networks:
      - backend_services
    depends_on:
      - productservice
      - orderservice
networks:
  backend_services:
    driver: bridge

建立容器映像並執行應用程式

您可以使用 Docker Compose 來自動建置容器映像和部署多容器應用程式。

Docker

  1. 建立容器映像、下載 Redis 映像,並使用 命令啟動應用程式 docker compose

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. 使用 命令檢視已建立的 docker images 映像。

    docker images
    

    下列壓縮範例輸出會顯示已建立的影像:

    REPOSITORY                       TAG                          IMAGE ID
    aks-store-demo-productservice    latest                       2b66a7e91eca
    aks-store-demo-orderservice      latest                       54ad5de546f9
    aks-store-demo-storefront        latest                       d9e3ac46a225
    rabbitmq                         3.11.17-management-alpine    79a570297657
    ...
    
  3. 使用 命令檢視執行中的 docker ps 容器。

    docker ps
    

    下列壓縮範例輸出顯示四個執行中的容器:

    CONTAINER ID        IMAGE
    21574cb38c1f        aks-store-demo-productservice
    c30a5ed8d86a        aks-store-demo-orderservice
    d10e5244f237        aks-store-demo-storefront
    94e00b50b86a        rabbitmq:3.11.17-management-alpine
    

在本機測試應用程式

若要檢視執行中的應用程式,請在本機網頁瀏覽器中瀏覽至 http://localhost:8080 。 範例應用程式會載入,如下列範例所示:

顯示 Azure Store Front App 在本機瀏覽器中開啟的螢幕快照。

在此頁面上,您可以檢視產品、將其新增至購物車,然後下訂單。

清除資源

由於您已驗證應用程式的功能,因此您可以停止並移除執行中的容器。 請勿刪除容器映像 - 您會在下一個教學課程中使用它們。

下一步

在本教學課程中,您已建立範例應用程式、建立應用程式的容器映像,然後測試應用程式。 您已了解如何︰

  • 從 GitHub 複製範例應用程式來源。
  • 從範例應用程式來源建立容器映像。
  • 在本機 Docker 環境中測試多容器應用程式。

在下一個教學課程中,您將瞭解如何將容器映像儲存在 ACR 中。