次の方法で共有


クイック スタート: マネージド Java コンポーネントを使用して Java マイクロサービス アプリケーションを起動する

この記事では、Java コンポーネントを使用して構成管理、サービス検出、正常性とメトリックを処理するアプリケーションを Azure Container Apps にデプロイする方法について説明します。 この例に示すサンプル アプリケーションは、マイクロサービス アーキテクチャ パターンを使用する Java PetClinic です。 次の図は、Azure Container Apps 上の PetClinic アプリケーションのアーキテクチャを示しています。

Java コンポーネントとマイクロサービス アプリケーション間のリレーションシップの図。

PetClinic アプリケーションには、次の機能が含まれています。

  • フロントエンドは、API ゲートウェイ アプリでホストされているスタンドアロンの Node.js Web アプリです。
  • API ゲートウェイは、バックエンド サービス アプリに要求をルーティングします。
  • バックエンド アプリは Spring Boot を使用して構築されています。
  • 各バックエンド アプリでは、永続ストアとして HyperSQL データベースを使用します。
  • このアプリは、サービス レジストリ、構成サーバー、管理サーバーなど、Azure Container Apps 上のマネージド Java コンポーネントを使用しています。
  • 構成サーバーは、Git リポジトリからデータを読み取ります。
  • Log Analytics ワークスペースは、サーバー データをログに記録します。

このチュートリアルでは、次の作業を行いました。

  • 構成サーバー、Eureka サーバー、管理サーバー、および管理コンポーネントを作成する
  • 一連のマイクロサービス アプリを作成する
  • サーバー コンポーネントをマイクロサービス アプリにバインドする
  • アプリのコレクションをデプロイする
  • デプロイされたアプリを確認する

この記事を読み終えると、3 つの異なる Java コンポーネントと連携するように構成された、1 つの Web アプリケーションと 3 つのバックエンド アプリケーションをデプロイできるようになります。 その後、Azure portal を使用して各コンポーネントを管理できます。

前提条件

  • Azure アカウント。 Azure アカウントがない場合は、無料で作成できます。 このクイック スタートでは、Azure サブスクリプションの 共同作成者 ロールまたは 所有者 ロールが必要です。 詳細については、 Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。
  • Azure CLI をインストールします。
  • Azure Container Apps CLI 拡張機能、バージョン 0.3.47 以降。 az extension add --name containerapp --upgrade --allow-preview コマンドを使用して最新バージョンをインストールします。

セットアップ

環境変数、リソース グループ、および Azure Container Apps 環境を作成するには、次の手順に従います。

  1. 環境変数にはカスタム値が含まれているため、次のコマンドを実行する前に、<> で囲まれたプレースホルダーの値を自身の値に置き換えてください。

    export RESOURCE_GROUP=<your-resource-group>
    export LOCATION=<region>
    export CONTAINER_APP_ENVIRONMENT=<container-apps-environment>
    
  2. マイクロサービス アプリの設定を含む環境変数をさらに作成します。 これらの値は、マイクロサービスをデプロイするために使用する Java コンポーネントと Azure Container Apps の名前と構成を定義するために使用されます。 次のコマンドを使用して、これらの環境変数を作成します。

    export CONFIG_SERVER_COMPONENT=configserver
    export ADMIN_SERVER_COMPONENT=admin
    export EUREKA_SERVER_COMPONENT=eureka
    export CONFIG_SERVER_URI=https://github.com/spring-petclinic/spring-petclinic-microservices-config.git
    export CUSTOMERS_SERVICE=customers-service
    export VETS_SERVICE=vets-service
    export VISITS_SERVICE=visits-service
    export API_GATEWAY=api-gateway
    export CUSTOMERS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-customers-service
    export VETS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-vets-service
    export VISITS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-visits-service
    export API_GATEWAY_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-api-gateway
    
  3. 次のコマンドを使用して、Azure CLI にサインインし、アクティブなサブスクリプションを選択します。

    az login
    
  4. 次のコマンドを使用して、Azure サービスを整理するためのリソース グループを作成します。

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION
    
  5. 次のコマンドを使用して、Java コンポーネントとコンテナー アプリの両方をホストする Azure Container Apps 環境を作成します。

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

Java コンポーネントを作成する

次に、アプリをサポートする次の Java コンポーネントを作成します。

  • 構成サーバー: マイクロサービス アプリの構成設定を管理します。
  • Eureka サーバー: サービス レジストリと検出を管理します。
  • 管理サーバー: マイクロサービス アプリの正常性とメトリックを監視および管理します。

これらのサーバー コンポーネントを作成するには、次の手順に従います。

  1. 次のコマンドを使用して、Java コンポーネントの構成サーバーを作成します。

    az containerapp env java-component config-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $CONFIG_SERVER_COMPONENT \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --configuration spring.cloud.config.server.git.uri=$CONFIG_SERVER_URI
    
  2. 次のコマンドを使用して、Java コンポーネントの Eureka サーバーを作成します。

    az containerapp env java-component eureka-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_SERVER_COMPONENT
        --environment $CONTAINER_APP_ENVIRONMENT \
    
  3. 次のコマンドを使用して、Java コンポーネントの管理サーバーを作成します。

    az containerapp env java-component admin-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $ADMIN_SERVER_COMPONENT
        --environment $CONTAINER_APP_ENVIRONMENT \
    

マイクロサービス アプリをデプロイする

事前構築済みのコンテナー イメージを使用して Java マイクロサービス アプリを Azure Container Apps にデプロイするには、次の手順に従います。

この記事では、Spring Petclinic マイクロサービス アプリ用の一連の構築済みイメージを使用します。 また、サンプル コードをカスタマイズし、独自のイメージを使用することもできます。 詳細については、「azure-container-apps-java-samples GitHub リポジトリ」を参照してください。

  1. 次のコマンドを使用して、顧客データ アプリを作成します。

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $CUSTOMERS_SERVICE_IMAGE
    
  2. 次のコマンドを使用して、獣医アプリを作成します。

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VETS_SERVICE_IMAGE
    
  3. 次のコマンドを使用して、訪問アプリを作成します。

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VISITS_SERVICE_IMAGE
    
  4. 次のコマンドを使用して、API ゲートウェイ アプリを作成します。

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $API_GATEWAY \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $API_GATEWAY_IMAGE \
        --ingress external \
        --target-port 8080 \
        --query properties.configuration.ingress.fqdn 
    

コンテナー アプリを Java コンポーネントにバインドする

次に、Java コンポーネントをコンテナー アプリにバインドします。 このセクションで作成するバインディングは、次の機能を提供します。

  • 起動時にマネージド構成サーバーから各アプリに構成データを注入します。
  • サービス検出用にマネージド Eureka サーバーにアプリを登録します。
  • 管理者サーバーがアプリを監視できるようにします。

containerapp update コマンドを使用して、次の手順に従って各アプリのバインディングを作成します。

  1. 次のコマンドを使用して、顧客データ アプリにバインディングを追加します。

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  2. 次のコマンドを使用して、vet サービスにバインディングを追加します。

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  3. 次のコマンドを使用して、アクセス サービスにバインディングを追加します。

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  4. API ゲートウェイにバインディングを追加します。 次のコマンドを使用して、フロントエンド アプリケーションの URL を返します。

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $API_GATEWAY \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT \
        --query properties.configuration.ingress.fqdn 
    

アプリの状態を確認する

以下の手順に従って、アプリの状態を確認します。

  1. 前のセクションで見つけた URL を使用して、ブラウザーでフロントエンド アプリケーションを表示します。 アプリケーションは次のスクリーンショットのようになります。

    ペット クリニック アプリケーションのホーム ページのスクリーンショット。

  2. 次の手順に従って、Eureka サーバー ダッシュボードを表示します。

    重要

    Eureka Server ダッシュボードと Spring の管理者ダッシュボードを表示するには、少なくとも Microsoft.App/managedEnvironments/write ロールがマネージド環境リソースのアカウントに割り当てられている必要があります。 リソースに Owner ロールまたは Contributor ロールを明示的に割り当てられます。 また、手順に従ってカスタム ロール定義を作成し、アカウントに割り当てることもできます。

    1. 次のコマンドを実行して、ダッシュボードの URL を返します。

      az containerapp env java-component eureka-server-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $EUREKA_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. ブラウザーで URL を開きます。 次のスクリーンショットのようなアプリケーションが表示されます。

      ペット クリニック アプリケーションの Eureka サーバーのスクリーンショット。

  3. 次の手順に従って、Spring の管理者ダッシュボードを表示します。

    1. 次のコマンドを使用して、ダッシュボードの URL を取得します。

      az containerapp env java-component admin-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $ADMIN_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. ブラウザーで URL を開きます。 次のスクリーンショットのようなアプリケーションが表示されます。

      5 つのサービスと、そのうち 4 つのサービスのバージョン情報を表示しているペット クリニックの管理ダッシュボードのスクリーンショット。

省略可能: Java コンポーネントを構成する

このクイック スタートで作成した Java コンポーネントは、[構成] セクションを使用して Azure portal から構成できます。

[プロパティ名] と [値] のテキストボックス、およびプロパティを削除する機能が表示されている [構成] セクションのスクリーンショット。

このクイック スタートで作成した 3 つの Java コンポーネントの構成の詳細については、次のリンクを参照してください。

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

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

az group delete --resource-group $RESOURCE_GROUP