チュートリアル - Azure Kubernetes Service (AKS) 用のアプリケーションを準備する
- [アーティクル]
-
-
7 つのパートのうちの 1 番目であるこのチュートリアルでは、複数コンテナー アプリケーションを Kubernetes で使用する準備をします。 Docker Compose などの既存の開発ツールを使用して、アプリケーションをローカルでビルドしてテストします。 以下の方法について説明します。
- GitHub からサンプル アプリケーション ソースを複製する。
- サンプル アプリケーション ソースからコンテナー イメージを作成します。
- ローカル Docker 環境でマルチコンテナー アプリケーションをテストします。
完了後、次のアプリケーションがローカル開発環境で実行されます。
後続のチュートリアルでは、コンテナー イメージを Azure Container Registry (ACR) にアップロードしてから、AKS クラスターにデプロイします。
このチュートリアルの前提として、コンテナー、コンテナー イメージ、docker
コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker の入門に関するドキュメントでコンテナーの基礎についての入門情報を参照してください。
このチュートリアルを完了するには、Linux コンテナーを実行するローカルの Docker 開発環境が必要です。 Docker では、Mac、Windows、または Linux システム上に Docker を構成するパッケージが提供されています。
注意
Azure Cloud Shell には、これらのチュートリアルのすべてのステップを完了するために必要な Docker コンポーネントは含まれていません。 そのため、完全な Docker 開発環境の使用をお勧めします。
このチュートリアルで使用される サンプル アプリケーション は、次の Kubernetes デプロイとサービスを含む基本的なストア フロント アプリです:
- ネットショップ: 顧客が製品を見て注文するための Web アプリケーション。
- 製品サービス: 製品情報が表示されます。
- 注文サービス: 注文を行います。
- Rabbit MQ: 注文キューのメッセージ キュー。
サンプル アプリケーションを開発環境に複製するには、git を使用します。
git clone https://github.com/Azure-Samples/aks-store-demo.git
クローンされたディレクトリに移動します。
cd aks-store-demo
azd
をローカルで使用している場合は、azd テンプレート ファイルをホストする aks-store-demo
という名前の空のディレクトリを作成します。
mkdir aks-store-demo
azd テンプレートからすべてのファイルを読み込むには、新しいディレクトリに移動します。
cd aks-store-demo
[azd init
][azd-init] コマンドを使用し、--template
フラグを aks-store-demo
に設定して、サンプル アプリケーションを aks-store-demo
ディレクトリに複製します。
azd init --template aks-store-demo
このチュートリアルで作成するサンプル アプリケーションでは、複製したリポジトリの docker-compose-quickstartYAML ファイルを使用します。
services:
rabbitmq:
image: rabbitmq:3.13.2-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
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service: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
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
コンテナー イメージを作成してアプリケーションを実行する
Docker Compose を使用して、コンテナー イメージの構築とマルチコンテナー アプリケーションのデプロイを自動化できます。
コンテナー イメージを作成し、RabbitMQ イメージをダウンロードし、docker compose
コマンドを使用してアプリケーションを起動します:
docker compose -f docker-compose-quickstart.yml up -d
docker images
コマンドを使用して、作成されたイメージを表示します。
docker images
次の要約された出力例は、作成されたイメージを示しています:
REPOSITORY TAG IMAGE ID
aks-store-demo-product-service latest 72f5cd7e6b84
aks-store-demo-order-service latest 54ad5de546f9
aks-store-demo-store-front latest 1125f85632ae
...
docker ps
コマンドを使用して、実行中のコンテナーを表示します。
docker ps
次の要約された出力例は、実行中の 4 つのコンテナーを示しています:
CONTAINER ID IMAGE
f27fe74cfd0a aks-store-demo-product-service
df1eaa137885 aks-store-demo-order-service
b3ce9e496e96 aks-store-demo-store-front
31df28627ffa rabbitmq:3.13.2-management-alpine
実行中のアプリケーションを表示するには、ローカルの Web ブラウザーで http://localhost:8080
に移動します。 次の例で示すように、サンプル アプリケーションが読み込まれます。
このページでは、製品を表示し、カートに追加して注文することができます。
アプリケーションの機能を検証したので、実行中のコンテナーを停止および削除できます。 コンテナー イメージ を削除しないでください。次のチュートリアルで使用します。
azd
を使用する場合、手動のコンテナー イメージの依存関係はありません。 azd
は、Docker と同様に、アプリケーションとクラスターのプロビジョニング、デプロイ、およびクリーンアップを azd up
および azd down
コマンドを使用して処理します。
azure.yaml
の infra
セクション内にクラスターをデプロイする前に、Terraform または Bicep を使用するように準備手順をカスタマイズできます。 既定では、このプロジェクトでは Terraform が使用されます。
infra:
provider: terraform
path: infra/terraform
プロバイダーを Bicep に変更する場合は、azure.yaml
ファイルを以下のように更新します。
infra:
provider: bicep
path: infra/bicep
このチュートリアルでは、サンプル アプリケーションを作成し、アプリケーションのコンテナー イメージを作成してから、アプリケーションをテストしました。 以下の方法を学習しました。
- GitHub からサンプル アプリケーション ソースを複製する。
- サンプル アプリケーション ソースからコンテナー イメージを作成します。
- ローカル Docker 環境でマルチコンテナー アプリケーションをテストします。
次のチュートリアルでは、ACR にコンテナー イメージを保存する方法について説明します。
このチュートリアルでは、azd
を使用してサンプル アプリケーションを複製しました。 以下の方法を学習しました。
- GitHub からサンプルの
azd
テンプレートを複製します。
- サンプル アプリケーション ソースからコンテナー イメージが使用されている場所を表示します。
次のチュートリアルでは、複製した azd
テンプレートを使用してクラスターを作成する方法について説明します。