チュートリアル: Azure Container Apps で Spring 用管理と Spring 用 Eureka サーバーを統合する
このチュートリアルでは、Azure Container Apps 内で、Spring 用マネージド管理と Spring 用 Eureka サーバーを統合するプロセスについて説明します。
この記事には、「Azure Container Apps で Spring 用マネージド管理に接続する」チュートリアルに似た内容が含まれていますが、Spring 用 Eureka サーバーでは、Spring 用管理を Spring 用 Eureka サーバーにバインドして、個々のアプリケーションを Spring 用管理にバインドする代わりに、Eureka を介してアプリケーション情報を取得できるようにします。
このガイドに従うことで、サービス検出用に Eureka サーバーを設定し、Spring 用管理を作成して、Eureka サーバーに登録されている Spring アプリケーションを管理および監視します。 このセットアップにより、他のアプリケーションは Eureka サーバーにバインドするだけで済み、マイクロサービスの管理が簡素化されます。
このチュートリアルで学習する内容は次のとおりです。
- Spring 用 Eureka サーバーを作成します。
- Spring 用管理を作成し、Eureka サーバーにリンクします。
- 合理化されたサービスの検出と管理のために、他のアプリケーションを Eureka サーバーにバインドします。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 まだお持ちでない場合は、無料で作成できます。
- Azure CLI。
- 既存の Spring 用 Eureka サーバーの Java コンポーネント。 お持ちでない場合は、「Spring 用 Eureka サーバーを作成する」を参照してください。
考慮事項
Azure Container Apps でマネージド Java コンポーネントを実行する場合は、次の詳細に注意してください。
項目 | 説明 |
---|---|
範囲 | コンポーネントは、接続されているコンテナー アプリと同じ環境で実行されます。 |
スケーリング | コンポーネントのスケーリングはできません。 スケーリング プロパティ minReplicas と maxReplicas は両方とも 1 に設定されています。 |
リソース | コンポーネントのコンテナー リソースの割り当ては固定されています。 CPU コア数は 0.5、メモリ サイズは 1 Gi です。 |
価格 | コンポーネント課金は消費ベースの価格設定によります。 マネージド コンポーネントによって消費されるリソースは、アクティブ/アイドル レートで課金されます。 課金を停止するために、使用しなくなったコンポーネントを削除できます。 |
バインド | コンテナー アプリは、バインドを使用してコンポーネントに接続します。 バインドは、コンテナー アプリの環境変数に構成を注入します。 バインドが確立されると、コンテナー アプリは環境変数から構成値を読み取ってコンポーネントに接続できます。 |
セットアップ
開始する前に、次のコマンドを実行して必要なリソースを作成します。
アプリケーション構成をサポートする変数を作成します。 これらの値は、このレッスンのために提供されています。
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export ADMIN_COMPONENT_NAME=admin export CLIENT_APP_NAME=sample-service-eureka-client export CLIENT_IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
変数 説明 LOCATION
コンテナー アプリと Java コンポーネントを作成する Azure リージョンの場所。 RESOURCE_GROUP
デモ アプリケーションの Azure リソース グループ名。 ENVIRONMENT
デモ アプリケーションの Azure Container Apps 環境名。 EUREKA_COMPONENT_NAME
Eureka サーバー Java コンポーネントの名前。 ADMIN_COMPONENT_NAME
Spring 用管理 Java コンポーネントの名前。 CLIENT_APP_NAME
Eureka サーバーにバインドするコンテナー アプリの名前。 CLIENT_IMAGE
Eureka サーバーのコンテナー アプリで使用されるコンテナー イメージ。 Azure CLI を使用して Azure にログインします。
az login
リソース グループを作成する。
az group create --name $RESOURCE_GROUP --location $LOCATION
コンテナー アプリ環境を作成します。
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
--query
パラメーターを使用すると、応答がフィルター処理され、単純な成功または失敗のメッセージになります。
省略可能: Spring 用の Eureka サーバーを作成する
既存の Spring 用 Eureka サーバーがない場合は、次のコマンドに従って Eureka サーバーの Java コンポーネントを作成します。 詳細については、「Spring 用 Eureka サーバーを作成する」を参照してください。
az containerapp env java-component eureka-server-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $EUREKA_COMPONENT_NAME
コンポーネントをバインドする
Spring 用管理 Java コンポーネントを作成します。
az containerapp env java-component admin-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $ADMIN_COMPONENT_NAME \
--min-replicas 1 \
--max-replicas 1 \
--bind $EUREKA_COMPONENT_NAME
他のアプリを Eureka サーバーにバインドする
Eureka サーバーを設定すると、サービス検出のために他のアプリケーションをバインドできるようになりました。 また、Spring 用管理のダッシュボードでこれらのアプリケーションを監視および管理することもできます。 コンテナー アプリを作成して Eureka サーバーにバインドするには、次の手順を使用します。
コンテナー アプリを作成し、 Spring 用 Eureka サーバーにバインドします。
az containerapp create \
--name $CLIENT_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $CLIENT_IMAGE \
--min-replicas 1 \
--max-replicas 1 \
--ingress external \
--target-port 8080 \
--bind $EUREKA_COMPONENT_NAME
ヒント
前の手順で Spring 用管理コンポーネントを Spring 用 Eureka サーバー コンポーネントにバインドしたので、管理コンポーネントはサービス検出を有効にし、同時に Spring 用管理ダッシュボードを使用して管理できます。
ダッシュボードを表示する
重要
ダッシュボードを表示するには、少なくとも Microsoft.App/managedEnvironments/write
ロールがマネージド環境リソースのアカウントに割り当てられている必要があります。 リソースに Owner
ロールまたは Contributor
ロールを明示的に割り当てるか、手順に従ってカスタム ロール定義を作成し、アカウントに割り当てることができます。
カスタム ロール定義を作成します。
az role definition create --role-definition '{ "Name": "Java Component Dashboard Access", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
AssignableScopes
値の<SUBSCRIPTION_ID>
プレースホルダーは、必ずお持ちのサブスクリプション ID に置き換えてください。マネージド環境リソースのアカウントにカスタム ロールを割り当てます。
マネージド環境のリソース ID を取得します。
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
ユーザー アカウントにそのロールを割り当てます。
このコマンドを実行する前に、
<USER_OR_SERVICE_PRINCIPAL_ID>
プレースホルダーをユーザーまたはサービス プリンシパル ID に置き換えてください。az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID
Spring 用管理ダッシュボードの URL を取得します。
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Spring 用 Eureka サーバー ダッシュボードの URL を取得します。
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
このコマンドは、Spring 用 Eureka サーバー ダッシュボードへのアクセスに使用できる URL を返します。 次のスクリーンショットに示すように、ダッシュボードを通じてコンテナー アプリも表示されます。
リソースをクリーンアップする
このチュートリアルで作成したリソースは、Azure の請求書に影響します。 これらのサービスを長期間使用しない場合は、次のコマンドを実行して、このチュートリアルで作成したすべてのものを削除してください。
az group delete --resource-group $RESOURCE_GROUP