クイック スタート: マイクロサービス アプリケーションを Azure Spring Apps にデプロイする
[アーティクル] 02/05/2024
5 人の共同作成者
フィードバック
この記事の内容
この記事では、既知のサンプル アプリ PetClinic を使用して、マイクロサービス アプリケーションを Azure Spring Apps にデプロイする方法について説明します。
この PetClinic サンプルは、マイクロサービス アーキテクチャ パターンを示しています。 次の図は、Azure Spring Apps Enterprise プラン上の PetClinic アプリケーションのアーキテクチャを示しています。
この図は、Pet Clinic サンプルの次のアーキテクチャ フローとリレーションシップを示しています。
Azure Spring Apps を使用して、フロントエンド アプリとバックエンド アプリを管理します。 バックエンド アプリは Spring Boot を使用して構築され、各アプリによって HSQLDB が永続的なストアとして使用されます。 改良されたフロントエンド アプリは、スタンドアロンのフロントエンド Web アプリケーションとして機能する Node.js を備えた Pet Clinic API Gateway アプリに基づいています。
Service Registry、Application Configuration Service、Spring Cloud Gateway、Application Live View など、Azure Spring Apps 上のマネージド コンポーネントを使用します。 Application Configuration Service は Git リポジトリの構成を読み取ります。
バックエンド サービス アプリに要求をルーティングするための Spring Cloud Gateway の URL を公開し、Application Live View の URL を公開してバックエンド アプリを監視します。
Log Analytics ワークスペースを使用してログを分析します。
Application Insights でパフォーマンスを監視します。
この PetClinic サンプルは、マイクロサービス アーキテクチャ パターンを示しています。 次の図は、Azure Spring Apps Standard プラン上の PetClinic アプリケーションのアーキテクチャを示しています。
この図は、Pet Clinic サンプルの次のアーキテクチャ フローとリレーションシップを示しています。
Azure Spring Apps を使用して Spring Boot アプリを管理します。 各アプリでは、永続的なストアとして HSQLDB が使用されます。
Azure Spring Apps でマネージド コンポーネント Spring Cloud Config Server と Eureka Service Registry を使用します。 Config Server は Git リポジトリの構成を読み取ります。
API Gateway の URL を公開して要求をサービス アプリに負荷分散し、管理サーバーの URL を公開してアプリケーションを管理します。
Log Analytics ワークスペースを使用してログを分析します。
Application Insights でパフォーマンスを監視します。
Note
この記事では、Azure Spring Apps に迅速にデプロイする準備ができていないメモリ内データベースを使用して、PetClinic の簡易バージョンを使用します。
デプロイされたアプリ admin-server
は、リスク ポイントであるパブリック アクセスを公開します。 運用環境では、Spring Boot 管理アプリケーションをセキュリティで保護する必要があります。
この記事では、Azure Spring Apps にデプロイするための次のオプションについて説明します。
Azure portal オプションは、1 回のクリックでリソースを作成してアプリケーションをデプロイできる最も簡単で最速の方法です。 このオプションは、Azure クラウド サービスにアプリケーションをj迅速にデプロイしたい Spring 開発者に適しています。
Azure portal と Maven プラグイン のオプションは、リソースを作成し、アプリケーションを段階的にデプロイするためのより従来型の方法です。 このオプションは、Azure クラウド サービスを初めて使用する Spring 開発者に適しています。
Azure CLI のオプションは、強力なコマンド ライン ツールを使用して、Azure リソースを管理します。 このオプションは、Azure クラウド サービスに精通している Spring 開発者に適しています。
Azure portal と Maven プラグイン のオプションは、リソースを作成し、アプリケーションを段階的にデプロイするためのより従来型の方法です。 このオプションは、Azure クラウド サービスを初めて使用する Spring 開発者に適しています。
Azure Developer CLI オプションは、単純なコマンドを使用して、自動的にリソースを作成し、アプリケーションをデプロイする、より効率的な方法です。 Azure Developer CLI では、テンプレートを使用して、必要な Azure リソースをプロビジョニングし、アプリケーション コードをデプロイします。 このオプションは、Azure クラウド サービスに精通している Spring 開発者に適しています。
1.前提条件
2. Spring プロジェクトを準備する
次の手順を使用して、サンプルをローカルに準備します。
次のコマンドを使用して、サンプル プロジェクトを複製します:
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
プロジェクト ルート ディレクトリに移動し、次のコマンドを使用してローカルでサンプル プロジェクトを実行します。
bash ./scripts/run_all_without_infra.sh
スクリプトが正常に完了したら、ブラウザーで http://localhost:8080
に移動して PetClinic アプリケーションにアクセスします。
次の手順を使用して、Azure Developer CLI テンプレートを使用して Pet Clinic アプリケーションを初期化してください。
Bash ウィンドウで、空のフォルダーを新規作成し、そのフォルダーに移動します。
次のコマンドを実行して、以下のプロジェクトを初期化します:
azd init --template Azure-Samples/spring-petclinic-microservices
次の一覧に、コマンド対話を記載します:
[Enter a new environment name] : 環境名を指定します。これは、すべての Azure リソースを保持するために作成されたリソース グループのサフィックスとして使用されます。 この名前は、Azure サブスクリプション内で一意である必要があります。
コンソールから、次の例のようなメッセージが出力されます。
Initializing a new project (azd init)
Downloading template code to: <your-local-path>
(✓) Done: Initialized git repository
Enter a new environment name: <your-env-name>
SUCCESS: New project initialized!
You can view the template code in your directory: <your-local-path>
Learn more about running 3rd party code on our DevHub: https://aka.ms/azd-third-party-code-notice
3. クラウド環境を準備する
このセクションでは、Azure Spring Apps サービス インスタンスを作成し、Azure クラウド環境を準備する方法について説明します。
3.1. Azure portal にサインインする
Azure portal に移動し、資格情報を入力してポータルにサインインします。 既定のビューはサービス ダッシュボードです。
3.2. Azure Spring Apps インスタンスを作成する
次の手順を使用して、サービス インスタンスを作成します。
Azure portal の隅にある [リソースの作成] を選択します。
[Azure サービス] タブで、[コンピューティング] >[Azure Spring Apps] を選択します。
[Create Azure Spring Apps](Azure Spring Apps の作成) ページで、[Basics](基本) タブのフォームに入力します。
次の表を参考にして、フォームに入力します。 推奨のプラン は Standard です。
設定
提案された値
説明
[サブスクリプション]
自分のサブスクリプション名。
サーバーに使用する Azure サブスクリプション。 複数のサブスクリプションをお持ちの場合は、リソースの課金対象にするサブスクリプションを選択します。
リソース グループ
myresourcegroup
新しいリソース グループ名、またはサブスクリプションの既存のリソース グループ名。
名前
myasa
Azure Spring Apps インスタンスを識別する一意の名前。 名前の長さは 4 文字から 32 文字で、小文字、数字、およびハイフンのみを使用できます。 サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。
プラン
Standard
価格プランによって、インスタンスに関連付けられるリソースとコストが決まります。
リージョン
ユーザーに最も近いリージョン。
ユーザーに最も近い場所。
ゾーン冗長
未選択
Azure 可用性ゾーンに Azure Spring Apps サービスを作成します。 現在、一部のリージョンではサポートされていません。
[Create Azure Spring Apps](Azure Spring Apps の作成) ページの [Diagnostic settings](診断設定) タブに移動し、[新規作成] を選択して新しい Log Analytics ワークスペース インスタンスを作成します。 [Log Analytics ワークスペースの新規作成] ページで、必要に応じて [Log Analytics ワークスペース] の名前を更新し、[OK] を選択して作成を確定します。
[Create Azure Spring Apps](Azure Spring Apps の作成) ページの [Application Insights] タブに移動し、[新規作成] を選択して新しい Application Insights インスタンスを作成します。 [Application Insights リソースの新規作成] ページで、必要に応じて [Application Insights 名] を更新し、[リソース モード] で [ワークスペースベース] を選択して、[OK] を選択して作成を確定します。
Review and Create(確認と作成) を選択して、選択内容を確認します。 次に、[作成] を選択して、Azure Spring Apps インスタンスをプロビジョニングします。
[通知] アイコン (ベル) を選択して、デプロイ プロセスを監視します。 デプロイが完了したら、[ダッシュボードにピン留めする] を選択できます。これにより、サービスの [概要] ページへのショートカットが Azure portal ダッシュボードに作成されます。
[リソースに移動] を選択して、[Azure Spring Apps Overview](Azure Spring Apps の概要) ページに移動します。
ナビゲーション ウィンドウで [Config Server] を選択します。
[Config Server] ページで、[URI] に「https://github.com/Azure-Samples/spring-petclinic-microservices-config.git 」と入力し、[検証] を選択します。
検証後、[適用] を選択して Config Server の構成を完了します。
次の手順を使用して、必要なリソースを作成します。
次のコマンドを使用して、OAuth 2 で Azure CLI にサインインします。 既にサインインしている場合は、この手順を無視してください。
azd auth login
コンソールから、次の例のようなメッセージが出力されます。
Logged in to Azure.
次のコマンドを使用して、アプリケーションのデプロイ可能なコピーをパッケージ化し、テンプレートのインフラストラクチャを Azure にプロビジョニングし、新しくプロビジョニングされたリソースにアプリケーション コードをデプロイします。
azd provision
次の一覧に、コマンド対話を記載します。
[使用する Azure サブスクリプションを選択してください] : 矢印を使用して移動し、入力してフィルター処理し、Enter キーを押します。
[使用する Azure の場所を選択してください] : 矢印を使用して移動し、入力してフィルター処理し、Enter キーを押します。
コンソールから、次の例のようなメッセージが出力されます。
SUCCESS: Your application was provisioned in Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
注意
このコマンドは、完了するまで時間がかかる場合があります。 Azure リソースがプロビジョニングされると、進行状況インジケーターが表示されます。
4. アプリを Azure Spring Apps にデプロイする
アプリを Azure Spring Apps にデプロイできるようになりました。
次の手順に従って、Azure Spring Apps 用の Maven プラグイン を使用してマイクロサービス アプリケーションをデプロイします。
サンプル プロジェクト ディレクトリに移動し、次のコマンドを使用して Azure Spring Apps 用のアプリを構成します。
./mvnw -P spring-apps com.microsoft.azure:azure-spring-apps-maven-plugin:1.17.0:config
次の一覧に、コマンド対話を記載します。
Select child modules to configure(input numbers separated by comma, eg: [1-2,4,6], ENTER to select ALL) (構成する子モジュールを選択してください (入力番号はコンマで区切ります。例: [1-2,4,6]。すべて選択するには、ENTER キーを押します)) : Enter キーを押してすべて選択します。
OAuth2 login (OAuth2 ログイン) : OAuth2 プロトコルに基づいて Azure へのサインインを承認します。
Select subscription (サブスクリプションを選択してください) : 作成した Azure Spring Apps インスタンスのサブスクリプション リスト番号を選択します。既定では、リストの最初のサブスクリプションに設定されます。 既定の番号を使用する場合は、Enter キーを直接押します。
Select Azure Spring Apps for deployment (デプロイ用の Azure Spring Apps を選択してください) : 作成した Azure Spring Apps インスタンスのリスト番号を選択します。 既定の番号を使用する場合は、Enter キーを直接押します。
Select apps to expose public access:(input numbers separated by comma, eg: [1-2,4,6], ENTER to select NONE) (パブリック アクセスを公開するアプリを選択してください (入力番号はコンマで区切ります。例: [1-2,4,6]。何も選択しない場合は ENTER キーを押します)) : admin-server
と api-gateway
に「1,5 」と入力します。
Confirm to save all the above configurations (Y/n) (上記のすべての構成の保存を確定してください (Y/n)) : y を押します。 n を押した場合、構成は POM ファイルに保存されません。
次のコマンドを使用して、各アプリケーションをビルドしてデプロイします。
./mvnw azure-spring-apps:deploy
[OAuth2 login](OAuth2 ログイン) プロンプトで、OAuth2 プロトコルに基づいて Azure へのログインを承認します。
Note
Azure Spring Apps へのデプロイには、最大 25 分かかる場合があります。
コマンドの実行後、ログに次の例のような出力が表示されます。これは、すべてのデプロイが成功したことを示します。
[INFO] Deployment(default) is successfully updated.
[INFO] Deployment Status: Running
[INFO] InstanceName:admin-server-default-xx-xx-xxx Status:Running Reason:null DiscoverStatus:UP
[INFO] Getting public url of app(admin-server)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-admin-server.azuremicroservices.io
...
[INFO] Getting public url of app(api-gateway)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io
次の手順を使用して、アプリをパッケージ化し、Web アプリケーションに必要な Azure リソースをプロビジョニングしてから、Azure Spring Apps にデプロイします。
次のコマンドを実行して、アプリケーションのデプロイ可能なコピーをパッケージ化します:
azd package
コンソールから、次の例のようなメッセージが出力されます。
SUCCESS: Your application was packaged for Azure in xx minutes xx seconds.
次のコマンドを実行して、新しくプロビジョニングされたリソースにアプリケーション コードをデプロイします:
azd deploy
コンソールから、次の例のようなメッセージが出力されます。
Deploying services (azd deploy)
(✓) Done: Deploying service admin-server
- Endpoint: https://<your-Azure-Spring-Apps-instance-name>-admin-server.azuremicroservices.io
(✓) Done: Deploying service api-gateway
- Endpoint: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io
(✓) Done: Deploying service customers-service
- No endpoints were found
(✓) Done: Deploying service vets-service
- No endpoints were found
(✓) Done: Deploying service visits-service
- No endpoints were found
SUCCESS: Your application was deployed to Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
注意
azd up
を使用して、前の 3 つのコマンドazd package
(アプリケーションのデプロイ可能なコピーをパッケージ化する)、azd provision
(Azure リソースをプロビジョニングする)、および azd deploy
(アプリケーション コードをデプロイする) を組み合わせることもできます。 詳細については、「Azure-Samples/spring-petclinic-microservices 」を参照してください。
2. Spring プロジェクトを準備する
次のセクションの [Azure へのデプロイ] ボタンにより、Spring PetClinic リポジトリからソース コードをデプロイする Azure portal のエクスペリエンスが起動されます。 ローカル側での準備手順は必要ありません。
クラウドにデプロイする前にアプリケーションを検証するには、ローカル コンピューターで次の手順を使用します。
次のコマンドを使用して、GitHub から Pet Clinic アプリケーション をクローンします。
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
プロジェクト ルート ディレクトリに移動し、次のコマンドを使用してローカルでプロジェクトを構築します。
./mvnw clean package -DskipTests
アプリケーションをローカルで実行したい場合は、次の手順を使用します。 それ以外の場合は、これらの手順を省略できます。
新しい Bash ウィンドウを開き、次のコマンドを使用して Config Server を起動します。
./mvnw spring-boot:run -pl spring-petclinic-config-server
新しい Bash ウィンドウを開き、次のコマンドを使用して Discovery Server を起動します。
./mvnw spring-boot:run -pl spring-petclinic-discovery-server
顧客、Vets、Visits、Spring Cloud Gateway サービスの場合は、新しい Bash ウィンドウを開き、次のコマンドを使用してサービスを開始します。
./mvnw spring-boot:run -pl spring-petclinic-customers-service
./mvnw spring-boot:run -pl spring-petclinic-vets-service
./mvnw spring-boot:run -pl spring-petclinic-visits-service
./mvnw spring-boot:run -Dspring-boot.run.profiles=default,development \
-pl spring-petclinic-api-gateway
新しい Bash ウィンドウを開き、spring-petclinic-frontend
ディレクトリに移動します。 次のコマンドを使用して依存関係をインストールし、フロントエンド アプリケーションを実行します。
npm install
npm run start
スクリプトが正常に完了したら、ブラウザーで http://localhost:8080
に移動して PetClinic アプリケーションにアクセスします。
クラウドにデプロイする前にアプリケーションを検証するには、ローカル コンピューターで次の手順を使用します。
次のコマンドを使用して、GitHub から Pet Clinic アプリケーション をクローンします。
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
プロジェクト ルート ディレクトリに移動し、次のコマンドを使用してローカルでプロジェクトを構築します。
./mvnw clean package -DskipTests
アプリケーションをローカルで実行したい場合は、次の手順を使用します。 それ以外の場合は、これらの手順を省略できます。
新しい Bash ウィンドウを開き、次のコマンドを使用して Config Server を起動します。
./mvnw spring-boot:run -pl spring-petclinic-config-server
新しい Bash ウィンドウを開き、次のコマンドを使用して Discovery Server を起動します。
./mvnw spring-boot:run -pl spring-petclinic-discovery-server
顧客、Vets、Visits、Spring Cloud Gateway サービスの場合は、新しい Bash ウィンドウを開き、次のコマンドを使用してサービスを開始します。
./mvnw spring-boot:run -pl spring-petclinic-customers-service
./mvnw spring-boot:run -pl spring-petclinic-vets-service
./mvnw spring-boot:run -pl spring-petclinic-visits-service
./mvnw spring-boot:run -Dspring-boot.run.profiles=default,development \
-pl spring-petclinic-api-gateway
新しい Bash ウィンドウを開き、spring-petclinic-frontend
ディレクトリに移動します。 次のコマンドを使用して依存関係をインストールし、フロントエンド アプリケーションを実行します。
npm install
npm run start
スクリプトが正常に完了したら、ブラウザーで http://localhost:8080
に移動して PetClinic アプリケーションにアクセスします。
3. クラウド環境を準備する
このサンプルの実行に必要な主なリソースは、Azure Spring Apps インスタンスです。 このセクションでは、このリソースの作成方法について説明します。
このセクションでは、[Azure へのデプロイ] ボタンを使用して、Azure portal でデプロイ エクスペリエンスを起動します。 このエクスペリエンスでは、ARM テンプレート を使用して Azure リソースを作成します。
3.1. Azure portal にサインインする
Azure portal に移動し、資格情報を入力してポータルにサインインします。 既定のビューはサービス ダッシュボードです。
3.2. Azure リソースを作成する
次の手順を使用して、アプリが依存するすべての Azure リソースを作成します。
次の [Azure へのデプロイ] ボタンを選択して、Azure portal でデプロイ エクスペリエンスを起動します。
[基本] タブでフォームに入力します。次の表を参考にして、フォームに入力します。
設定
提案された値
説明
[サブスクリプション]
自分のサブスクリプション名。
サーバーに使用する Azure サブスクリプション。 複数のサブスクリプションをお持ちの場合は、リソースの課金対象となるサブスクリプションを選択します。
リソース グループ
myresourcegroup
新しいリソース グループ名、またはサブスクリプションの既存のリソース グループ名。
リージョン
ユーザーに最も近いリージョン。
このリージョンは、リソース グループの作成に使用されます。
Review and Create(確認と作成) を選択して、選択内容を確認します。 次に、[作成] を選択してアプリを Azure Spring Apps にデプロイします。
ツール バーの [通知] アイコン (ベル) を選択して、デプロイ プロセスを監視します。 デプロイが完了したら、[ダッシュボードにピン留めする] を選択できます。これにより、このサービスのタイルが、サービスの [概要] ページへのショートカットとして、Azure portal ダッシュボードに作成されます。 [Go to resource] (リソースに移動) を選択して、サービスの [概要] ページを開きます。
3.1. Azure portal にサインインする
Azure portal に移動し、資格情報を入力してポータルにサインインします。 既定のビューはサービス ダッシュボードです。
3.2. Azure Spring Apps インスタンスを作成する
次の手順を使用して、サービス インスタンスを作成します。
Azure portal の隅にある [リソースの作成] を選択します。
[Compute] >[Azure Spring Apps] を選択します。
[基本] タブでフォームに入力します。次の表を参考にして、フォームに入力します。
設定
提案された値
説明
[サブスクリプション]
自分のサブスクリプション名。
サーバーに使用する Azure サブスクリプション。 複数のサブスクリプションをお持ちの場合は、リソースの課金対象となるサブスクリプションを選択します。
リソース グループ
myresourcegroup
新しいリソース グループ名、またはサブスクリプションの既存のリソース グループ名。
名前
myasa
Azure Spring Apps サービスを識別する一意の名前。 名前の長さは 4 文字から 32 文字で、小文字、数字、およびハイフンのみを使用できます。 サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。
リージョン
ユーザーに最も近いリージョン。
ユーザーに最も近い場所。
ホスティング オプションとプラン
Enterprise
価格プラン。これによって、インスタンスに関連付けられるリソースとコストが決まります。
ゾーン冗長
未選択
Azure 可用性ゾーンに Azure Spring Apps サービスを作成するオプション。 この機能は、現在、すべてのリージョンでサポートされているわけではありません。
ソフトウェア IP プラン
従量課金制
Azure Spring Apps の従量課金制の料金プラン。
サンプル プロジェクトのデプロイ
未選択
組み込みのサンプル アプリケーションを使うオプション。
[Create Azure Spring Apps](Azure Spring Apps の作成) ページの [Diagnostic settings](診断設定) タブに移動し、[新規作成] を選択して新しい Log Analytics ワークスペース インスタンスを作成します。 [Log Analytics ワークスペースの新規作成] ページで、必要に応じて [Log Analytics ワークスペース] の名前を更新し、[OK] を選択して作成を確定します。
[Create Azure Spring Apps](Azure Spring Apps の作成) ページの [Application Insights] タブに移動し、[新規作成] を選択して新しい Application Insights インスタンスを作成します。 [Application Insights リソースの新規作成] ページで、必要に応じて [Application Insights 名] を更新し、[リソース モード] で [ワークスペースベース] を選択して、[OK] を選択して作成を確定します。
Review and Create(確認と作成) を選択して、選択内容を確認します。 次に、[作成] を選択して、Azure Spring Apps インスタンスをプロビジョニングします。
[通知] アイコン (ベル) を選択して、デプロイ プロセスを監視します。 デプロイが完了したら、[ダッシュボードにピン留めする] を選択できます。これにより、サービスの [概要] ページへのショートカットが Azure portal ダッシュボードに作成されます。
[リソースに移動] を選択して、[Azure Spring Apps Overview](Azure Spring Apps の概要) ページに移動します。
次のセクションでは、サービス インスタンスを構成する方法について説明します。
アプリを作成する
次の手順を使用して、アプリを作成します。
ナビゲーション ウィンドウで [アプリ] を選択し、[アプリの作成] を選択します。
[アプリの作成] ページで、アプリ名 に frontend を使用し、その他のフィールドはすべて既定値のままにします。
次の各アプリケーション名を使用して、前の手順を繰り返します。
customers-service
vets-service
visits-service
[作成] を選択して、アプリの作成を終了します。
次の手順を使用して、Service Registry を構成します。
ナビゲーション ウィンドウで、[Service Registry] を選択します。
[App binding]\(アプリ バインディング\) 、[Bind app]\(アプリのバインド\) の順に選択し、一覧から customers-service
を選択して、[適用] を選択します。
前の手順を繰り返して、次のアプリケーションをバインドします。
vets-service
visits-service
次の手順を使用して、Application Configuration Service を構成します。
ナビゲーション ウィンドウから [Application Configuration Service] を選択し、[設定] を選択します。
リポジトリに次の情報を入力し、[検証] を選択します。
検証後、[適用] を選択して、Application Configuration Service の構成を終了します。
[App binding]\(アプリ バインディング\) 、[Bind app]\(アプリのバインド\) の順に選択し、一覧から customers-service
を選択して、[適用] を選択します。
前の手順を繰り返して、次のアプリケーションをバインドします。
vets-service
visits-service
アプリの構成ファイル パターンを設定する
次の手順を使用して、構成ファイルのパターンを設定します。
ナビゲーション ウィンドウで [アプリ] を選択し、customers-service
アプリを選択します。
[アプリの概要] ページで [構成] を選択し、[全般設定] タブの [Config file patterns]\(構成ファイル パターン\) を選択して、[アプリケーション] と customers-service
を選択します。 [保存] を選択して、構成ファイル パターンを設定します。
前の手順を繰り返して、次のアプリケーションの構成ファイル パターンを保存します。
vets-service
: [アプリケーション] と vets-service
を選択します。
visits-service
: [アプリケーション] と visits-service
を選択します。
このセクションでは、Spring Cloud Gateway を構成する方法について説明します。
まず、次の手順を使用して、ゲートウェイ アクセス用のエンドポイントを割り当てます。
ナビゲーション ウィンドウで [Spring Cloud Gateway] を選択します。
[概要] タブで、[はい] 選択してエンドポイントを割り当てます。 エンドポイント URL を後で使用できるように保存します。
次に、Spring Cloud Gateway のルーティングを構成します。 現在、Azure portal では Spring Cloud Gateway のルート構成がサポートされていないため、Bash ウィンドウを開き、次の Azure CLI の手順を使用してルーティングを構成します。
次のコマンドを使用して、Azure CLI にサインインします。
az login
次のコマンドを使用して、Azure CLI 用の Azure Spring Apps 拡張機能をインストールし、Microsoft.SaaS
次の名前空間を登録します:
az extension add --name spring --upgrade
az provider register --namespace Microsoft.SaaS
次のコマンドを使用して、法律条項とプライバシー ステートメントに同意します。
Note
この手順は、サブスクリプションが Azure Spring Apps の Enterprise プラン インスタンスの作成に使用されたことがない場合にのみ必要です。
az term accept \
--publisher vmware-inc \
--product azure-spring-cloud-vmware-tanzu-2 \
--plan asa-ent-hr-mtr
次のコマンドを使用して、リソースを保持する変数を作成します。 プレースホルダーは必ず、独自の値で置き換えてください。
export SUBSCRIPTION_ID=<subscription-ID>
export RESOURCE_GROUP=<resource-group-name>
export SPRING_APPS_NAME=<Azure-Spring-Apps-instance-name>
export APP_CUSTOMERS_SERVICE=customers-service
export APP_VETS_SERVICE=vets-service
export APP_VISITS_SERVICE=visits-service
export APP_FRONTEND=frontend
次のコマンドを使用して、既定のサブスクリプションを設定します。
az account set --subscription ${SUBSCRIPTION_ID}
次のコマンドを使用して、customers-service
アプリのルーティングを設定します。
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_CUSTOMERS_SERVICE} \
--app-name ${APP_CUSTOMERS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/customer/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使用して、vets-service
アプリのルーティングを設定します。
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_VETS_SERVICE} \
--app-name ${APP_VETS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/vet/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使用して、visits-service
アプリのルーティングを設定します。
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_VISITS_SERVICE} \
--app-name ${APP_VISITS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/visit/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使用して、フロントエンド アプリのルーティングを設定します。
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_FRONTEND} \
--app-name ${APP_FRONTEND} \
--routes-json \
'[
{
"predicates": [
"Path=/**"
],
"filters": [
"StripPrefix=0"
],
"order": 1000
}
]'
次の手順を使用して、開発者ツールを構成します。
ナビゲーション ウィンドウで、[開発者ツール] を選択します。
[Assign endpoint]\(エンドポイントの割り当て\) を選択して、開発者ツール のエンドポイントを割り当てます。
App Live View のエンドポイントを後で使用できるように保存します。
3.1. 各リソースの名前を指定する
次のコマンドを使用して、リソースを保持する変数を作成します。 プレースホルダーは必ず、独自の値で置き換えてください。
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP_FRONTEND=frontend
export APP_CUSTOMERS_SERVICE=customers-service
export APP_VETS_SERVICE=vets-service
export APP_VISITS_SERVICE=visits-service
export GIT_CONFIG_REPO=default
3.2. Azure CLI にサインインする
次の手順を実行して、サイン インします。
次のコマンドを使用して、Azure CLI にサインインします。
az login
次のコマンドを使用して、使用可能なすべてのサブスクリプションを一覧表示し、使用するサブスクリプション ID を決定します。
az account list --output table
次のコマンドを使用して、既定のサブスクリプションを設定します。
az account set --subscription <subscription-ID>
3.3. 新しいリソース グループを作成する
次の手順を使用して、新しいリソース グループを作成します。
次のコマンドを使用して、既定の場所を設定します。
az configure --defaults location=${LOCATION}
次のコマンドを使用して、リソース グループを作成します。
az group create --resource-group ${RESOURCE_GROUP}
次のコマンドを使用して、新しく作成したリソース グループを既定のリソース グループとして設定します。
az configure --defaults group=${RESOURCE_GROUP}
3.4. 拡張機能のインストールと名前空間の登録
次のコマンドを使用して、Azure CLI 用の Azure Spring Apps 拡張機能をインストールし、Microsoft.SaaS
次の名前空間を登録します:
az extension add --name spring --upgrade
az provider register --namespace Microsoft.SaaS
3.5. Azure Spring Apps インスタンスを作成する
次の手順を使用して、サービス インスタンスを作成します。
次のコマンドを使用して、Enterprise プランの法律条項とプライバシー ステートメントに同意します。
Note
この手順は、サブスクリプションが Azure Spring Apps の Enterprise プラン インスタンスの作成に使用されたことがない場合にのみ必要です。
az term accept \
--publisher vmware-inc \
--product azure-spring-cloud-vmware-tanzu-2 \
--plan asa-ent-hr-mtr
次のコマンドを使い、必要な Tanzu コンポーネントを使って Azure Spring Apps サービス インスタンスを作成します。
az spring create \
--name ${SPRING_APPS} \
--sku Enterprise \
--enable-application-configuration-service \
--enable-service-registry \
--enable-gateway \
--enable-application-live-view
次の手順を使って、サービス インスタンスを構成します。
次のコマンドを使って、Azure Spring Apps インスタンスの診断設定を構成します。
export SPRING_APPS_RESOURCE_ID=$(az spring show \
--name ${SPRING_APPS} \
--query id \
--output tsv)
az monitor diagnostic-settings create \
--resource ${SPRING_APPS_RESOURCE_ID} \
--name logs-and-metrics \
--workspace ${SPRING_APPS} \
--logs '[
{
"category": "ApplicationConsole",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
},
{
"category": "SystemLogs",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
},
{
"category": "IngressLogs",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]' \
--metrics '[
{
"category": "AllMetrics",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]'
次のコマンドを使って、Azure Spring Apps インスタンス用のアプリケーションを作成します。
az spring app create --service ${SPRING_APPS} --name ${APP_FRONTEND}
az spring app create --service ${SPRING_APPS} --name ${APP_CUSTOMERS_SERVICE}
az spring app create --service ${SPRING_APPS} --name ${APP_VETS_SERVICE}
az spring app create --service ${SPRING_APPS} --name ${APP_VISITS_SERVICE}
次のコマンドを使って、アプリケーションをサービス レジストリにバインドします。
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_CUSTOMERS_SERVICE}
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_VETS_SERVICE}
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_VISITS_SERVICE}
次のコマンドを使って、アプリケーション構成サービスの構成リポジトリを作成します。
az spring application-configuration-service git repo add \
--service ${SPRING_APPS} \
--name ${GIT_CONFIG_REPO} \
--patterns application,api-gateway,customers-service,vets-service,visits-service \
--uri https://github.com/Azure-Samples/spring-petclinic-microservices-config.git \
--label master
次のコマンドを使って、アプリケーションをアプリケーション構成サービスにバインドします。
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_CUSTOMERS_SERVICE}
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_VETS_SERVICE}
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_VISITS_SERVICE}
次のコマンドを使用して、Spring Cloud Gateway にエンドポイントを割り当てます。
az spring gateway update --service ${SPRING_APPS} --assign-endpoint
次のコマンドを使って、customers-service
アプリケーションのルーティングを設定します。
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_CUSTOMERS_SERVICE} \
--app-name ${APP_CUSTOMERS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/customer/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使って、vets-service
アプリケーションのルーティングを設定します。
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_VETS_SERVICE} \
--app-name ${APP_VETS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/vet/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使って、visits-service
アプリケーションのルーティングを設定します。
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_VISITS_SERVICE} \
--app-name ${APP_VISITS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/visit/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
次のコマンドを使って、frontend
アプリケーションのルーティングを設定します。
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_FRONTEND} \
--app-name ${APP_FRONTEND} \
--routes-json '[
{
"predicates": [
"Path=/**"
],
"filters": [
"StripPrefix=0"
],
"order": 1000
}
]'
次のコマンドを使って、エンドポイントを Application Live View に割り当てます。
az spring dev-tool update --service ${SPRING_APPS} --assign-endpoint
4. アプリを Azure Spring Apps にデプロイする
前のセクションの [Azure へのデプロイ] ボタンにより、アプリケーションのデプロイを含む Azure portal エクスペリエンスが起動されるため、他に何も必要ありません。
次の手順に従って、Azure Spring Apps 用の Maven プラグイン を使用してデプロイします。
プロジェクト ルート ディレクトリに移動し、次のコマンドを実行して、Azure Spring Apps のアプリを構成します。
./mvnw -P spring-apps-enterprise com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
次の一覧に、コマンド対話を記載します。
構成する子モジュールを選択する : Enter を押してすべてを選択します。
Select subscription (サブスクリプションを選択してください) : 作成した Azure Spring Apps インスタンスのサブスクリプション リスト番号を選択します。既定では、リストの最初のサブスクリプションに設定されます。 既定の番号を使用する場合は、Enter キーを直接押します。
Azure で既存の Azure Spring Apps を使う : 既存の Azure Spring Apps インスタンスを使うには、y キーを押します。
パブリック アクセスを公開するアプリを選択する : Enter を押して何も選択しません。
上記のすべての構成の保存を確定する : y キーを押します。 n を押した場合、構成は POM ファイルに保存されません。
次のコマンドを使用して、バックエンド アプリケーションをデプロイします。
./mvnw azure-spring-apps:deploy
コマンドが実行されると、デプロイが成功したことを示す次のログ メッセージが表示されます。
[INFO] Start deploying artifact(customers-service-3.0.1.jar) to deployment(default) of app(customers-service)...
[INFO] Artifact(customers-service-3.0.1.jar) is successfully deployed to deployment(default) of app(customers-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
...
[INFO] Start deploying artifact(vets-service-3.0.1.jar) to deployment(default) of app(vets-service)...
[INFO] Artifact(vets-service-3.0.1.jar) is successfully deployed to deployment(default) of app(vets-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
...
[INFO] Start deploying artifact(visits-service-3.0.1.jar) to deployment(default) of app(visits-service)...
[INFO] Artifact(visits-service-3.0.1.jar) is successfully deployed to deployment(default) of app(visits-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
Azure portal ではフロントエンド アプリケーションのデプロイがサポートされていないため、次の Azure CLI コマンドを使用してフロントエンド アプリケーションをデプロイします。
az spring app deploy \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_FRONTEND} \
--source-path spring-petclinic-frontend \
--build-env BP_WEB_SERVER=nginx
コマンドが実行されると、デプロイが成功したことを示す次のログ メッセージが表示されます。
[5/5] Updating deployment in app "frontend" (this operation can take a while to complete)
Azure Spring Apps will use rolling upgrade to update your deployment, you have 1 instance, Azure Spring Apps will update the deployment in 1 round.
The deployment is in round 1, 1 old instance is deleted/deleting and 1 new instance is started/starting
Your application is successfully deployed.
次の手順を使って、アプリをデプロイします。
プロジェクトのルート ディレクトリを入力し、次のコマンドを使って frontend アプリケーションをビルドしてデプロイします。
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_FRONTEND} \
--build-env BP_WEB_SERVER=nginx \
--source-path ./spring-petclinic-frontend
次のコマンドを使って、customers-service
アプリケーションをビルドしてデプロイします。
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_CUSTOMERS_SERVICE} \
--source-path \
--config-file-pattern application,customers-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-customers-service \
BP_JVM_VERSION=17
次のコマンドを使って、vets-service
アプリケーションをビルドしてデプロイします。
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_VETS_SERVICE} \
--source-path \
--config-file-pattern application,vets-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-vets-service \
BP_JVM_VERSION=17
次のコマンドを使って、visits-service
アプリケーションをビルドしてデプロイします。
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_VISITS_SERVICE} \
--source-path \
--config-file-pattern application,visits-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-visits-service \
BP_JVM_VERSION=17
5. アプリを検証する
次のセクションでは、デプロイを検証する方法について説明します。
5.1. アプリケーションにアクセスする
デプロイが完了すると、次のスクリーンショットで示すように、デプロイの出力から Spring Cloud ゲートウェイの URL を確認できます。
ゲートウェイの URL を開きます。 アプリケーションは次のスクリーン ショットのようになります。
5.2. アプリケーション ログのクエリを実行する
PetClinic の各機能を閲覧すると、Log Analytics ワークスペースによって各アプリケーションのログが収集されます。 次のスクリーンショットに示すように、カスタム クエリを使用してログをチェックできます。
5.3. アプリケーションを監視する
Application Insights は、次のアプリケーション トレース マップに示すように、アプリケーションの依存関係を監視します。
デプロイの出力から Application Live View の URL を確認できます。 次のスクリーンショットで示すように、Application Live View の URL を開いて、アプリケーション ランタイムを監視します。
5.1. アプリケーションにアクセスする
Spring Cloud ゲートウェイから割り当てられたエンドポイントを使います (例: https://<your-Azure-Spring-Apps-instance-name>-gateway-xxxxx.svc.azuremicroservices.io
)。 アプリケーションは次のスクリーン ショットのようになります。
5.2. アプリケーション ログのクエリを実行する
PetClinic の各機能を閲覧すると、Log Analytics ワークスペースによって各アプリケーションのログが収集されます。 次のスクリーンショットに示すように、カスタム クエリを使用してログをチェックできます。
5.3. アプリケーションを監視する
Application Insights は、次のアプリケーション トレース マップに示すように、アプリケーションの依存関係を監視します。
次のスクリーンショットに示すように、開発者ツールによって公開されている Application Live View URL を開き、アプリケーション ランタイムを監視します。
5.1. アプリケーションにアクセスする
次のコマンドを使用して、Spring Cloud Gateway の URL を取得します。
export GATEWAY_URL=$(az spring gateway show \
--service ${SPRING_APPS} \
--query properties.url \
--output tsv)
echo "https://${GATEWAY_URL}"
アプリケーションは次のスクリーン ショットのようになります。
5.2. アプリケーション ログのクエリを実行する
PetClinic の各機能を閲覧すると、Log Analytics ワークスペースによって各アプリケーションのログが収集されます。 次のスクリーンショットに示すように、カスタム クエリを使用してログをチェックできます。
5.3. アプリケーションを監視する
Application Insights は、次のアプリケーション トレース マップに示すように、アプリケーションの依存関係を監視します。
次のコマンドを使って、Application Live View の URL を取得します。
export DEV_TOOL_URL=$(az spring dev-tool show \
--service ${SPRING_APPS} \
--query properties.url \
--output tsv)
echo "https://${DEV_TOOL_URL}/app-live-view"
次のスクリーンショットで示すように、Application Live View の URL を開いて、アプリケーション ランタイムを監視します。
5.1. アプリケーションにアクセスする
デプロイ ログ出力の URL 情報を使用して、api-gateway
というアプリによって公開される URL (例: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io
) を開きます。 アプリケーションは次のスクリーン ショットのようになります。
5.2. アプリケーション ログのクエリを実行する
PetClinic の各機能を閲覧すると、Log Analytics ワークスペースによって各アプリケーションのログが収集されます。 次のスクリーンショットに示すように、カスタム クエリを使用してログをチェックできます。
5.3. アプリケーションを監視する
Application Insights は、次のアプリケーション トレース マップに示すように、アプリケーションの依存関係を監視します。
次のスクリーンショットに示すように、アプリ admin-server
によって公開されている URL を開き、Spring Boot 管理サーバーを介してアプリケーションを管理します。
6.リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 リソースが不要になったら、不要なリソースをクリーンアップすると、Azure の料金を抑えることができます。
次の手順に従って、新しく作成したサービス インスタンスを含むリソース グループ全体を削除します。
Azure Portal で目的のリソース グループを探します。 ナビゲーション メニューで [リソース グループ] を選択し、該当するリソース グループの名前を選択します。
[リソース グループ] ページで [削除] を選択します。 テキスト ボックスに削除を確定するリソース グループの名前を入力し、[削除] を選択します。
このサンプル アプリケーションで使用されているすべての Azure リソースを削除するには、次のコマンドを使用します:
azd down
次の一覧に、コマンド対話を記載します:
[Total resources to delete: <resources-total>, are you sure you want to continue?] (削除するリソースの合計: resources-total。続行してもよろしいですか?) : y キーを押します。
コンソールから、次の例のようなメッセージが出力されます。
SUCCESS: Your application was removed from Azure in xx minutes xx seconds.
この記事で作成したリソースは、不要になったら必ず削除してください。 Azure リソース グループを削除した場合、そのリソース グループに含まれたすべてのリソースが対象となります。
次の手順を使って、リソース グループ全体を削除します。
Azure Portal で目的のリソース グループを探します。 ナビゲーション メニューで [リソース グループ] を選択し、該当するリソース グループの名前を選択します。
[リソース グループ] ページで [削除] を選択します。 テキスト ボックスに削除を確定するリソース グループの名前を入力し、[削除] を選択します。
次の手順を使って、リソース グループ全体を削除します。
Azure Portal で目的のリソース グループを探します。 ナビゲーション メニューで [リソース グループ] を選択し、該当するリソース グループの名前を選択します。
[リソース グループ] ページで [削除] を選択します。 テキスト ボックスに削除を確定するリソース グループの名前を入力し、[削除] を選択します。
次のコマンドを使用して、リソース グループを削除します。
az group delete --name ${RESOURCE_GROUP}
7. 次のステップ
詳細については、次の記事を参照してください。