次の方法で共有


Azure Container Apps で Eureka サーバーまたは Tanzu Service Registry を Spring 用マネージド Eureka サーバーに移行する

Note

BasicStandardEnterprise プランは、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 サーバーを作成するには、次の手順を実行します。

  1. Spring 用 Eureka サーバーの Java コンポーネントを作成するには、次のコマンドを使用します。

    az containerapp env java-component eureka-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_NAME \
        --environment $ENVIRONMENT
    
  2. (省略可能) 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 サーバーのダッシュボードの例を示しています。

Eureka サーバーのダッシュボードのスクリーンショット。

トラブルシューティング

Azure Container Apps の Spring 用マネージド Eureka サーバーのログは、Log Analytics を使用して表示できます。これは、Azure Spring Apps のログ記録メカニズムと同じように動作します。

Azure Container Apps で Spring 用マネージド Eureka サーバーのログを表示するには、次の手順を使用します。

  1. [コンテナー アプリ環境] ページに移動します。

  2. [監視]>[ログ オプション] に移動し、[ログの出力先][Azure Log Analytics] が選択されていることを確認します。

  3. [監視]>[ログ] に移動します。

  4. (省略可能) Log Analytics のスコープが [ログ オプション] で構成されているスコープと一致しない場合は、[スコープの選択] を選択して、適切な Log Analytics ワークスペースを選択します。

  5. 次の例に示すように、クエリ エディターにクエリを入力して、ContainerAppSystemLogs_CL テーブルのログを表示します。

    ContainerAppSystemLogs_CL
    | where ComponentType_s == "SpringCloudEureka"
    | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s
    | take 100
    

    Eureka サーバーのログ分析についてクエリを実行するスクリーンショット。

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 サーバーに接続する」を参照してください。