次の方法で共有


クイック スタート: Azure Container Apps のマネージド 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 CLI をインストールします。
  • Container Apps CLI 拡張機能。 Version 0.3.47 以降を使用します。 az extension add --name containerapp --upgrade --allow-preview コマンドを使用して最新バージョンをインストールします。

セットアップ

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

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

    export RESOURCE_GROUP=<RESOURCE_GROUP>
    export LOCATION=<LOCATION>
    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. API ゲートウェイの az containerapp update コマンドから返された 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