チュートリアル - Azure Kubernetes Service (AKS) 用のアプリケーションを準備する

7 つのパートのうちの 1 番目であるこのチュートリアルでは、複数コンテナー アプリケーションを Kubernetes で使用する準備をします。 Docker Compose などの既存の開発ツールを使用して、アプリケーションをローカルでビルドしてテストします。 以下の方法について説明します。

  • GitHub からサンプル アプリケーション ソースを複製する。
  • サンプル アプリケーション ソースからコンテナー イメージを作成します。
  • ローカル Docker 環境でマルチコンテナー アプリケーションをテストします。

完了後、次のアプリケーションがローカル開発環境で実行されます。

ローカル Web ブラウザーで開かれた、ローカルで実行されている Azure Store Front アプリを示すスクリーンショット。

後続のチュートリアルでは、コンテナー イメージを Azure Container Registry (ACR) にアップロードしてから、AKS クラスターにデプロイします。

開始する前に

このチュートリアルの前提として、コンテナー、コンテナー イメージ、docker コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker の入門に関するドキュメントでコンテナーの基礎についての入門情報を参照してください。

このチュートリアルを完了するには、Linux コンテナーを実行するローカルの Docker 開発環境が必要です。 Docker では、MacWindows、または Linux システム上に Docker を構成するパッケージが提供されています。

Note

Azure Cloud Shell には、これらのチュートリアルのすべてのステップを完了するために必要な Docker コンポーネントは含まれていません。 そのため、完全な Docker 開発環境の使用をお勧めします。


アプリケーションのコードを入手する

このチュートリアルで使用される サンプル アプリケーション は、次の Kubernetes デプロイとサービスを含む基本的なストア フロント アプリです:

Azure Store サンプル アーキテクチャのスクリーンショット。

  • ネットショップ: 顧客が製品を見て注文するための 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-quickstartYAML ファイルを使用します。

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
    

    次の要約された出力例は、実行中の 4 つのコンテナーを示しています:

    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
    

ローカルでアプリケーションをテストする

実行中のアプリケーションを表示するには、ローカルの Web ブラウザーで http://localhost:8080 に移動します。 次の例で示すように、サンプル アプリケーションが読み込まれます。

ローカル ブラウザーで開かれた、Azure Store Front アプリを示すスクリーンショット。

このページでは、製品を表示し、カートに追加して注文することができます。

リソースをクリーンアップする

アプリケーションの機能を検証したので、実行中のコンテナーを停止および削除できます。 コンテナー イメージ を削除しないでください。次のチュートリアルで使用します。

  • docker-compose down コマンドを使用して、コンテナー インスタンスとリソースを停止して削除します。

    docker compose down
    

次のステップ

このチュートリアルでは、サンプル アプリケーションを作成し、アプリケーションのコンテナー イメージを作成してから、アプリケーションをテストしました。 以下の方法を学習しました。

  • GitHub からサンプル アプリケーション ソースを複製する。
  • サンプル アプリケーション ソースからコンテナー イメージを作成します。
  • ローカル Docker 環境でマルチコンテナー アプリケーションをテストします。

次のチュートリアルでは、ACR にコンテナー イメージを保存する方法について説明します。