このクイック スタートでは、Java コンポーネントを使用して構成管理、サービス検出、正常性とメトリックを処理するアプリケーションを Azure Container Apps にデプロイする方法について説明します。 この例で使用するサンプル アプリケーションは、マイクロサービス アーキテクチャ パターンを採用した Java PetClinic です。 次の図は、Azure Container Apps 上の PetClinic アプリケーションのアーキテクチャを示しています。
PetClinic アプリケーションには、次の機能が含まれています。
- フロントエンドは、API ゲートウェイ アプリでホストされているスタンドアロンの Node.js Web アプリです。
- API ゲートウェイは、バックエンド サービス アプリに要求をルーティングします。
- バックエンド アプリは Spring Boot を使用して構築されています。
- 各バックエンド アプリでは、永続ストアとして HyperSQL データベースを使用します。
- このアプリは、サービス レジストリ、構成サーバー、管理サーバーなど、Azure Container Apps 上のマネージド Java コンポーネントを使用しています。
- 構成サーバーは、Git リポジトリからデータを読み取ります。
- Log Analytics ワークスペースは、サーバー データをログに記録します。
このチュートリアルでは、次の作業を行いました。
- 構成サーバー、Eureka サーバー、管理サーバー、および管理コンポーネントを作成する
- 一連のマイクロサービス アプリを作成する
- サーバー コンポーネントをマイクロサービス アプリにバインドする
- アプリのコレクションをデプロイする
- デプロイされたアプリを確認する
この記事を読み終えると、3 つの異なる Java コンポーネントと連携するように構成された、1 つの Web アプリケーションと 3 つのバックエンド アプリケーションをデプロイできるようになります。 その後、Azure portal を使用して各コンポーネントを管理できます。
前提条件
- Azure アカウント: Azure アカウントがない場合は、無料で作成できます。 このクイックスタートを使用するには、Azure サブスクリプションの共同作成者または所有者のアクセス許可が必要です。 詳細については、 Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。
- Azure CLI: Azure CLI をインストールします。
- Container Apps CLI 拡張機能。 Version 0.3.47 以降を使用します。
az extension add --name containerapp --upgrade --allow-preview
コマンドを使用して最新バージョンをインストールします。
セットアップ
環境変数、リソース グループ、および Azure Container Apps 環境を作成するには、次の手順に従います。
環境変数にはカスタム値が含まれているため、次のコマンドを実行する前に、
<>
で囲まれたプレースホルダーの値を自身の値に置き換えてください。export RESOURCE_GROUP=<RESOURCE_GROUP> export LOCATION=<LOCATION> export CONTAINER_APP_ENVIRONMENT=<CONTAINER_APPS_ENVIRONMENT>
次に、マイクロサービス アプリの設定を含む環境変数をさらに作成します。 これらの値は、マイクロサービスをデプロイするために使用する Java コンポーネントと Azure Container Apps の名前と構成を定義するために使用されます。 次のコマンドを使用して、これらの環境変数を作成します。
export CONFIG_SERVER_COMPONENT=configserver export ADMIN_SERVER_COMPONENT=admin export EUREKA_SERVER_COMPONENT=eureka export CONFIG_SERVER_URI=https://github.com/spring-petclinic/spring-petclinic-microservices-config.git export CUSTOMERS_SERVICE=customers-service export VETS_SERVICE=vets-service export VISITS_SERVICE=visits-service export API_GATEWAY=api-gateway export CUSTOMERS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-customers-service export VETS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-vets-service export VISITS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-visits-service export API_GATEWAY_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-api-gateway
次のコマンドを使用して、Azure CLI にサインインし、アクティブなサブスクリプションを選択します。
az login
次のコマンドを使用して、Azure サービスを整理するためのリソース グループを作成します。
az group create \ --name $RESOURCE_GROUP \ --___location $LOCATION
次のコマンドを使用して、Java コンポーネントとコンテナー アプリの両方をホストする Azure Container Apps 環境を作成します。
az containerapp env create \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_ENVIRONMENT \ --___location $LOCATION
Java コンポーネントを作成する
次に、アプリをサポートする次の Java コンポーネントを作成します。
- 構成サーバー。 マイクロサービス アプリの構成設定を管理するために使用されます。
- Eureka サーバー。 サービスのレジストリと検出を管理するために使用されます。
- 管理サーバー。 マイクロサービス アプリの正常性とメトリックを監視および管理するために使用されます。
これらのサーバー コンポーネントを作成するには、次の手順に従います。
次のコマンドを使用して、Java コンポーネントの構成サーバーを作成します。
az containerapp env java-component config-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $CONFIG_SERVER_COMPONENT \ --environment $CONTAINER_APP_ENVIRONMENT \ --configuration spring.cloud.config.server.git.uri=$CONFIG_SERVER_URI
次のコマンドを使用して、Java コンポーネントの Eureka サーバーを作成します。
az containerapp env java-component eureka-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \
次のコマンドを使用して、Java コンポーネントの管理サーバーを作成します。
az containerapp env java-component admin-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \
マイクロサービス アプリをデプロイする
事前構築済みのコンテナー イメージを使用して Java マイクロサービス アプリを Azure Container Apps にデプロイするには、次の手順に従います。
注
この記事では、Spring Petclinic マイクロサービス アプリ用の一連の構築済みイメージを使用します。 また、サンプル コードをカスタマイズし、独自のイメージを使用することもできます。 詳細については、「azure-container-apps-java-samples GitHub リポジトリ」を参照してください。
次のコマンドを使用して、顧客データ アプリを作成します。
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $CUSTOMERS_SERVICE_IMAGE
次のコマンドを使用して、獣医アプリを作成します。
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VETS_SERVICE_IMAGE
次のコマンドを使用して、訪問アプリを作成します。
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VISITS_SERVICE_IMAGE
次のコマンドを使用して、API ゲートウェイ アプリを作成します。
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $API_GATEWAY_IMAGE \ --ingress external \ --target-port 8080 \ --query properties.configuration.ingress.fqdn
コンテナー アプリを Java コンポーネントにバインドする
次に、Java コンポーネントをコンテナー アプリにバインドします。 このセクションで作成するバインディングは、次の機能を提供します。
- 起動時にマネージド構成サーバーから各アプリに構成データを注入します。
- サービス検出用にマネージド Eureka サーバーにアプリを登録します。
- 管理者サーバーがアプリを監視できるようにします。
containerapp update
コマンドを使用して、次の手順に従って各アプリのバインディングを作成します。
次のコマンドを使用して、顧客データ アプリにバインディングを追加します。
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
次のコマンドを使用して、vet サービスにバインディングを追加します。
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
次のコマンドを使用して、アクセス サービスにバインディングを追加します。
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
API ゲートウェイにバインディングを追加します。 次のコマンドを使用してフロントエンド アプリケーションの URL を取得し、その後、ブラウザーでこの場所を開きます。
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT \ --query properties.configuration.ingress.fqdn
アプリの状態を確認する
以下の手順に従って、アプリの状態を確認します。
API ゲートウェイの
az containerapp update
コマンドから返された URL を使用して、ブラウザーでフロントエンド アプリケーションを表示します。 アプリケーションは次のスクリーンショットのようになります。次の手順に従って、Eureka サーバー ダッシュボードを表示します。
重要
Eureka Server ダッシュボードと Spring の管理者ダッシュボードを表示するには、少なくとも
Microsoft.App/managedEnvironments/write
ロールがマネージド環境リソースのアカウントに割り当てられている必要があります。 リソースにOwner
ロールまたはContributor
ロールを明示的に割り当てられます。 また、手順に従ってカスタム ロール定義を作成し、アカウントに割り当てることもできます。次の手順に従って、Spring の管理者ダッシュボードを表示します。
省略可能: Java コンポーネントを構成する
このクイック スタートで作成した Java コンポーネントは、[構成] セクションを使用して Azure portal から構成できます。
このクイック スタートで作成した 3 つの Java コンポーネントの構成の詳細については、次のリンクを参照してください。
リソースをクリーンアップする
このクイックスタートで作成したリソースは、Azure の請求書に影響します。 これらのサービスを長期間使用しない場合は、次のコマンドを使用して、このクイックスタートで作成したすべてのものを削除してください。
az group delete --resource-group $RESOURCE_GROUP