チュートリアル: Azure Container Apps でマネージド Eureka Server for Spring に接続する (プレビュー)

Eureka Server for Spring は、マイクロサービスが自己を登録し、他のサービスを検出できるようにするサービス レジストリです。 Azure Container Apps コンポーネントとして利用可能で、Eureka サーバーに自動登録するためにお使いのコンテナー アプリを Eureka Server for Spring にバインドできます。

このチュートリアルで学習する内容は次のとおりです。

  • Eureka Server for Spring の Java コンポーネントを作成する
  • コンテナー アプリを Eureka Server for Spring の Java コンポーネントにバインドする

重要

このチュートリアルでは、Azure の請求書に影響する可能性のあるサービスを使用します。 手順に従う場合は、予期しない課金を回避するために、この記事で紹介されているリソースを必ず削除してください。

前提条件

このプロジェクトを完了するには、次の項目が必要です:

要件 手順
Azure アカウント アクティブなサブスクリプションが必要です。 持っていない場合は、無料で作成できます。
Azure CLI Azure CLI をインストールします。

考慮事項

Azure Container Apps の Eureka Server for Spring で実行する場合は、次の詳細に注意してください。

項目 説明
スコープ Eureka Server for Spring コンポーネントは、接続されているコンテナー アプリと同じ環境で実行されます。
スケーリング Eureka Server for Spring はスケーリングできません。 スケーリング プロパティ minReplicasmaxReplicas は両方とも 1 に設定されています。
リソース Eureka Server for Spring のコンテナー リソースの割り当ては固定されています。 CPU コア数は 0.5、メモリ サイズは 1Gi です。
料金 Eureka Server for Spring の課金は消費ベースの価格に該当します。 マネージド Java コンポーネントによって消費されるリソースは、アクティブ/アイドル レートで課金されます。 課金を停止するために、使用しなくなったコンポーネントを削除できます。
バインディング コンテナー アプリは、バインドを介して Eureka Server for Spring コンポーネントに接続します。 バインドは、コンテナー アプリの環境変数に構成を注入します。 バインドが確立されると、コンテナー アプリで環境変数からこれらの構成値を読み取り、Eureka Server for Spring に接続できます。

セットアップ

Eureka Server for Spring の操作を開始する前に、まず、必要なリソースを作成する必要があります。

次のコマンドを実行して、リソース グループとコンテナー アプリ環境を作成します。

  1. アプリケーション構成をサポートする変数を作成します。 これらの値は、このレッスンのために提供されています。

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=eureka
    export APP_NAME=sample-service-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
    変数 説明
    LOCATION コンテナー アプリと Java コンポーネントを作成する Azure リージョンの場所。
    ENVIRONMENT デモ アプリケーションの Azure Container Apps 環境名。
    RESOURCE_GROUP デモ アプリケーションの Azure リソース グループ名。
    JAVA_COMPONENT_NAME コンテナー アプリ用に作成された Java コンポーネントの名前。 この場合、Eureka Server for Spring の Java コンポーネントを作成します。
    IMAGE コンテナー アプリで使用されるコンテナー イメージ。
  2. Azure CLI を使用して Azure にログインします。

    az login
    
  3. リソース グループを作成する。

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. コンテナー アプリ環境を作成します。

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Eureka Server for Spring の Java コンポーネントを使用する

既存の環境が作成されたので、コンテナー アプリを作成し、Eureka Server for Spring の Java コンポーネント インスタンスにバインドできます。

  1. Eureka Server for Spring の Java コンポーネントを作成します。

    az containerapp env java-component eureka-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME
    
  2. Eureka Server for Spring の Java コンポーネント構成を更新します。

    az containerapp env java-component eureka-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME 
      --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
    
  3. コンテナー アプリを作成し、 Eureka Server for 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 \
      --query properties.configuration.ingress.fqdn
    

    このコマンドは、Eureka サーバー コンポーネントの登録を消費するコンテナー アプリの URL を返します。 次の手順で使えるように URL をテキスト エディターにコピーします。

    /allRegistrationStatus ルートの先頭に移動して、Eureka Server for Spring に登録されているすべてのアプリケーションを表示します。

    バインドは、いくつかの構成を環境変数 (主に eureka.client.service-url.defaultZone プロパティ) としてアプリケーションに注入します。 このプロパティは、Eureka Server Java コンポーネントの内部エンドポイントを示します。

    バインドでは、次のプロパティも注入されます。

    "eureka.client.register-with-eureka":    "true"
    "eureka.instance.prefer-ip-address":     "true"
    

    eureka.client.register-with-eureka プロパティは true に設定され、Eureka サーバーに強制的に登録します。 この登録は、構成サーバーなどから application.properties のローカル設定をオーバーライドします。 これを false に設定する場合は、コンテナー アプリで環境変数を設定することでオーバーライドできます。

    eureka.instance.prefer-ip-addresstrue に設定されているのは、コンテナー アプリ環境の特定の DNS 解決ルールによるものです。 バインドを壊さないようにするため、この値は変更しないでください。

    アプリケーションからバインドを削除することもできます。

リソースをクリーンアップする

このチュートリアルで作成したリソースは、Azure の請求書に影響します。 これらのサービスを長期間使用しない場合は、次のコマンドを実行して、このチュートリアルで作成したすべてのものを削除してください。

az group delete \
  --resource-group $RESOURCE_GROUP

次のステップ