Azure Container Apps で Eureka サーバーまたは Tanzu Service Registry を Spring 用マネージド Eureka サーバーに移行する
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象:✅ Basic/Standard ✅ Enterprise
この記事では、Azure Container Apps で Eureka サーバーを Spring 用 Eureka サーバーに移行する方法について説明します。
Azure Container Apps の Spring 用マネージド Eureka サーバーは、Azure Spring Apps と同様のエクスペリエンスを提供します。 これにより、ソース コードを変更せずに既存の Spring アプリケーションをデプロイし、マネージド Eureka サーバーに登録することができます。
前提条件
- Tanzu Service Registry が有効になっている既存の Azure Spring Apps Enterprise プランのインスタンス。
- アプリケーションのデプロイに使用される既存の Azure Container Apps 環境。 詳細については、「Azure Container Apps のプロビジョニング」を参照してください。
- Eureka クライアントとして機能するアプリケーションのコンテナー イメージ。 必要に応じて、サンプル イメージ
mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest
を使用できます。 - Azure CLI。
Spring 用マネージド Eureka サーバーをプロビジョニングする
Spring 用マネージド Eureka サーバーを使用するには、まず Azure Container Apps 環境に Eureka サーバー コンポーネントを作成する必要があります。
Spring 用マネージド Eureka サーバーを作成するには、次の手順を実行します。
Spring 用 Eureka サーバーの Java コンポーネントを作成するには、次のコマンドを使用します。
az containerapp env java-component eureka-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --environment $ENVIRONMENT
(省略可能) Spring 用 Eureka サーバーの Java コンポーネント構成を更新するには、次のコマンドを使用します。
az containerapp env java-component eureka-server-for-spring update \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --environment $ENVIRONMENT \ --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
Azure portal を介してマネージド Eureka サーバーを削除すると、Azure Container Apps によって、それに登録されているすべてのコンテナー アプリが自動的にバインド解除され、マネージド Eureka サーバーが削除されます。 この動作は、Tanzu Service Registry を削除する前にサービスを手動でバインド解除する必要がある Azure Spring Apps Enterprise プランとは異なります。
リソースの割り当てと価格
Azure Container Apps のマネージド Eureka サーバーのコンテナー リソースの割り当ては、次の値に固定されています。
- CPU: 0.5 vCPU
- メモリ: 1 Gi
- レプリカ: 1 - スケーラブルではありません
これに対し Azure Spring Apps Enterprise Plan Service Registry は、固定リソースもプロビジョニングしますが、それぞれに 0.5 vCPU と 1 Gi のメモリを備えた 2 つのレプリカを含みます。
課金されない Azure Spring Apps の Basic/Standard プランとは異なり、Azure Container Apps の Spring 用マネージド Eureka サーバーは従量課金ベースの価格で動作します。 この価格は、Azure Spring Apps Enterprise プランの価格に似ています。
詳細については、「チュートリアル: Azure Container Apps で Spring 用マネージド Eureka サーバーに接続する」の「考慮事項」セクションを参照してください。
アプリケーションをデプロイしてバインドする
Spring 用マネージド Eureka サーバーをプロビジョニングしたら、Spring アプリケーションを Azure Container Apps にデプロイし、Eureka サーバーにバインドできます。 このプロセスは、Azure Spring Apps での Enterprise プランの動作に似ています。 具体的には、アプリケーションを Eureka サーバーにバインドする必要があります。これは、バインドが必要ない Azure Spring Apps Basic/Standard プランとは異なります。
Note
アプリケーションのデプロイにサンプル イメージ mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest
を使用しない場合は、Azure Container Apps がコンテナー レジストリからイメージをプルできるように、いくつかの構成が必要になる場合があります。 たとえば、Azure Container Registry (ACR) からイメージをプルするために必要なアクセス許可を準備するには、「チュートリアル: アプリをビルドして Azure Container Apps にデプロイする」の「Azure Container Registry を作成する」セクションを参照してください。
アプリケーションの配置
コンテナー アプリケーションを作成するには、次のコマンドを使用します。
az containerapp create \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME \
--environment $ENVIRONMENT \
--image $IMAGE \
--min-replicas 1 \
--max-replicas 1 \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
アプリケーションをバインドする
アプリケーションを正常に作成したら、マネージド Eureka サーバーにアプリケーションをバインドできます。
作成したアプリケーションを Eureka サーバーにバインドするには、次のコマンドを使用します。
az containerapp update \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME \
--bind $EUREKA_COMPONENT_NAME \
--query properties.configuration.ingress.fqdn
バインドは、いくつかの構成を環境変数 (主に eureka.client.service-url.defaultZone
プロパティ) としてアプリケーションに注入します。 このプロパティは、Eureka Server Java コンポーネントの内部エンドポイントを示します。 その他のプロパティの詳細については、「Azure Container Apps で Spring 用マネージド Eureka サーバーに接続する」の「コンテナー アプリを Spring 用 Eureka サーバーの Java コンポーネントにバインドする」セクションを参照してください。
Eureka サーバーからアプリケーションをバインド解除する必要がある場合は、「Azure Container Apps で Spring 用マネージド Eureka サーバーに接続する」の「Spring 用 Eureka サーバー Java コンポーネントからコンテナー アプリをバインド解除する」セクションを参照してください。
ダッシュボードを使用して登録済みアプリケーションを表示する
アプリケーションを正常に作成して Eureka サーバーにバインドしたら、管理ダッシュボードを介して登録済みのアプリケーションを表示できます。 詳細については、「Azure Container Apps で Spring 用マネージド Eureka サーバーに接続する」の「ダッシュボードを使用してアプリケーションを表示する」セクションを参照してください。
次のスクリーンショットは、Eureka サーバーのダッシュボードの例を示しています。
トラブルシューティング
Azure Container Apps の Spring 用マネージド Eureka サーバーのログは、Log Analytics を使用して表示できます。これは、Azure Spring Apps のログ記録メカニズムと同じように動作します。
Azure Container Apps で Spring 用マネージド Eureka サーバーのログを表示するには、次の手順を使用します。
[コンテナー アプリ環境] ページに移動します。
[監視]>[ログ オプション] に移動し、[ログの出力先] で [Azure Log Analytics] が選択されていることを確認します。
[監視]>[ログ] に移動します。
(省略可能) Log Analytics のスコープが [ログ オプション] で構成されているスコープと一致しない場合は、[スコープの選択] を選択して、適切な Log Analytics ワークスペースを選択します。
次の例に示すように、クエリ エディターにクエリを入力して、ContainerAppSystemLogs_CL テーブルのログを表示します。
ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudEureka" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
Azure CLI を使用したログのクエリの詳細については、「Log Analytics を使用して Azure Container Apps のログを監視する」を参照してください。
既知の制限事項
- 外部アクセス: Azure Container Apps の Spring 用マネージド Eureka サーバーに外部からアクセスすることはできません。
- リビジョン トラフィック: Azure Container Apps の複数リビジョン モードでは、Eureka に登録されているアプリケーションのすべてのレプリカがトラフィックを受信します。
その他のリソース
Azure Container Apps での Eureka サーバーの管理の詳細については、「チュートリアル: Azure Container Apps で Spring 用マネージド Eureka サーバーに接続する」を参照してください。