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