次の方法で共有


チュートリアル: Azure Container Apps で Spring 用管理と Spring 用 Eureka サーバーを統合する

このチュートリアルでは、Azure Container Apps 内で、Spring 用マネージド管理と Spring 用 Eureka サーバーを統合するプロセスについて説明します。

この記事には、「Azure Container Apps で Spring 用マネージド管理に接続する」チュートリアルに似た内容が含まれていますが、Spring 用 Eureka サーバーでは、Spring 用管理を Spring 用 Eureka サーバーにバインドして、個々のアプリケーションを Spring 用管理にバインドする代わりに、Eureka を介してアプリケーション情報を取得できるようにします。

このガイドに従うことで、サービス検出用に Eureka Server を設定し、Spring 用管理を作成して、Eureka Server に登録されている Spring アプリケーションを管理および監視します。 このセットアップにより、他のアプリケーションは Eureka サーバーにバインドするだけで済み、マイクロサービスの管理が簡素化されます。

このチュートリアルでは、次の事項について説明します。

  1. Spring 用 Eureka サーバーを作成します。
  2. Spring 用管理を作成し、Eureka サーバーにリンクします。
  3. 合理化されたサービスの検出と管理のために、他のアプリケーションを Eureka サーバーにバインドします。

前提条件

このチュートリアルを完了するには、以下のものが必要です。

要件 手順
Azure アカウント アクティブなサブスクリプションが必要です。 持っていない場合は、無料で作成できます。
Azure CLI Azure CLI をインストールします。
既存の Spring 用 Eureka サーバーの Java コンポーネント お持ちでない場合は、「Spring 用 Eureka サーバーを作成する」セクションに従って作成します。

考慮事項

Azure Container Apps でマネージド Java コンポーネントを実行する場合は、次の詳細に注意してください。

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

セットアップ

開始する前に、次のコマンドを実行して必要なリソースを作成します。

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

    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 サーバーのコンテナー アプリで使用されるコンテナー イメージ。
  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 \
      --query "properties.provisioningState"
    

    --query パラメーターを使用すると、応答がフィルター処理され、単純な成功または失敗のメッセージになります。

省略可能: Spring 用の Eureka サーバーを作成する

既存の Spring 用 Eureka サーバーがない場合は、次のコマンドに従って Eureka サーバーの Java コンポーネントを作成します。 詳細については、「[Spring 用 Eureka サーバーの作成](java-eureka-server.md#create-the-eureka server-for-spring-java-component)」を参照してください。

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 ロールを明示的に割り当てるか、手順に従ってカスタム ロール定義を作成し、アカウントに割り当てることができます。

  1. カスタム ロール定義を作成します。

    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 値の <> かっこの間にあるプレースホルダーは、必ずサブスクリプション ID に置き換えてください。

  2. マネージド環境リソースのアカウントにカスタム ロールを割り当てます。

    マネージド環境のリソース ID を取得します。

    export ENVIRONMENT_ID=$(az containerapp env show \
      --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
      --query id -o tsv)
    
  3. ユーザー アカウントにそのロールを割り当てます。

    このコマンドを実行する前に、 <> かっこの間のプレースホルダーをユーザーまたはサービス プリンシパル ID に置き換えます。

    az role assignment create \
      --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
      --role "Java Component Dashboard Access" \
      --scope $ENVIRONMENT_ID
    
  4. 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 -o tsv
    
  5. 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 -o tsv
    

    このコマンドは、Spring 用 Eureka サーバー ダッシュボードへのアクセスに使用できる URL を返します。 次のスクリーンショットに示すように、ダッシュボードを通じてコンテナー アプリも表示されます。

    Spring 用管理ダッシュボードのスクリーンショット。

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

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

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

az group delete \
    --resource-group $RESOURCE_GROUP

次のステップ