クイックスタート: Enterprise プランを使用してアプリをビルドし Azure Spring Apps にデプロイする
Note
Basic、Standard、および Enterprise プランは、2025 年 3 月中旬から廃止され、3 年間の提供終了期間となります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の提供終了のお知らせ」を参照してください。
Standard 従量課金プランと専用プランは、2024 年 9 月 30 日以降は非推奨となり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金プランと専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象:❌ Basic または Standard ✔️ Enterprise
このクイックスタートでは、Enterprise プランを使用してアプリケーションをビルドし、Azure Spring Apps にデプロイする方法について説明します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure Marketplace の Enterprise プランの「要件」セクションを理解し、要件を満たします。
- Azure CLI バージョン 2.45.0 以降。
- Git.
- Azure Spring Apps Enterprise プランの拡張機能。 次のコマンドを使用して、以前のバージョンを削除し、最新の Enterprise プランの拡張機能をインストールします。 以前に
spring-cloud
拡張機能をインストールした場合は、構成とバージョンの不一致を回避するためにそれをアンインストールします。az extension add --upgrade --name spring az extension remove --name spring-cloud
サンプル アプリ をダウンロードする
次のコマンドを使用してサンプルをダウンロードします。
git clone https://github.com/Azure-Samples/acme-fitness-store
cd acme-fitness-store
サービス インスタンスをプロビジョニングする
Azure Spring Apps サービス インスタンスをプロビジョニングするには、次の手順を使用します。
次のコマンドを使用して、Azure CLI にサインインし、アクティブなサブスクリプションを選択します。
az login az account list --output table az account set --subscription <subscription-ID>
次のコマンドを使用して、Enterprise プランの法律条項とプライバシー ステートメントに同意します。 この手順は、サブスクリプションが Azure Spring Apps の Enterprise プラン インスタンスの作成に使用されたことがない場合にのみ必要です。
az provider register --namespace Microsoft.SaaS az term accept \ --publisher vmware-inc \ --product azure-spring-cloud-vmware-tanzu-2 \ --plan asa-ent-hr-mtr
場所を選択します。 この場所は、Azure Spring Apps Enterprise プランをサポートする場所である必要があります。 詳細については、「Azure Spring Apps に関する FAQ」を参照してください。
次のコマンドを使用して、リソースを保持する変数を作成します。 プレースホルダーは必ず、独自の値で置き換えてください。 Azure Spring Apps サービス インスタンスの名前は、長さが 4 文字から 32 文字でなければならず、小文字、数字、およびハイフンのみを使用できます。 サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。
export LOCATION="<location>" export RESOURCE_GROUP="<resource-group-name>" export SERVICE_NAME="<Azure-Spring-Apps-service-instance-name>" export WORKSPACE_NAME="<workspace-name>"
次のコマンドを使用して、リソース グループを作成します。
az group create \ --name ${RESOURCE_GROUP} \ --location ${LOCATION}
リソース グループの詳細については、「Azure Resource Manager とは」を参照してください。
次のコマンドを使用して、Azure Spring Apps サービス インスタンスを作成します。
az spring create \ --resource-group ${RESOURCE_GROUP} \ --name ${SERVICE_NAME} \ --sku enterprise \ --enable-application-configuration-service \ --enable-service-registry \ --enable-gateway \ --enable-api-portal
次のコマンドを使用して、Azure Spring Apps サービスに使用する Log Analytics ワークスペースを作成します。
az monitor log-analytics workspace create \ --resource-group ${RESOURCE_GROUP} \ --workspace-name ${WORKSPACE_NAME} \ --location ${LOCATION}
次のコマンドを使用して、Log Analytics ワークスペースと Azure Spring Apps サービス インスタンスのリソース ID を取得します。
export LOG_ANALYTICS_RESOURCE_ID=$(az monitor log-analytics workspace show \ --resource-group ${RESOURCE_GROUP} \ --workspace-name ${WORKSPACE_NAME} \ --query id \ --output tsv) export AZURE_SPRING_APPS_RESOURCE_ID=$(az spring show \ --resource-group ${RESOURCE_GROUP} \ --name ${SERVICE_NAME} \ --query id \ --output tsv)
次のコマンドを使用して、Azure Spring Apps サービスの診断設定を構成します。
az monitor diagnostic-settings create \ --name "send-logs-and-metrics-to-log-analytics" \ --resource ${AZURE_SPRING_APPS_RESOURCE_ID} \ --workspace ${LOG_ANALYTICS_RESOURCE_ID} \ --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 } } ]'
次のコマンドを使用して、
cart-service
、order-service
、payment-service
、catalog-service
、frontend
のアプリケーションを作成します。az spring app create \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${SERVICE_NAME} az spring app create \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${SERVICE_NAME} az spring app create \ --resource-group ${RESOURCE_GROUP} \ --name payment-service \ --service ${SERVICE_NAME} az spring app create \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${SERVICE_NAME} az spring app create \ --resource-group ${RESOURCE_GROUP} \ --name frontend \ --service ${SERVICE_NAME}
アプリケーション構成サービスを使用して構成を外部化する
アプリケーション構成サービスを構成するには、次の手順に従います。
次のコマンドを使用して、アプリケーション構成サービスの構成リポジトリを作成します。
az spring application-configuration-service git repo add \ --resource-group ${RESOURCE_GROUP} \ --name acme-fitness-store-config \ --service ${SERVICE_NAME} \ --label main \ --patterns "catalog/default,catalog/key-vault,identity/default,identity/key-vault,payment/default" \ --uri "https://github.com/Azure-Samples/acme-fitness-store-config"
次のコマンドを使用して、アプリケーションをアプリケーション構成サービスにバインドします。
az spring application-configuration-service bind \ --resource-group ${RESOURCE_GROUP} \ --app payment-service \ --service ${SERVICE_NAME} az spring application-configuration-service bind \ --resource-group ${RESOURCE_GROUP} \ --app catalog-service \ --service ${SERVICE_NAME}
サービスの登録と検出をアクティブにする
サービスの登録と検出をアクティブにするには、次のコマンドを使用してアプリケーションをサービス レジストリにバインドします。
az spring service-registry bind \
--resource-group ${RESOURCE_GROUP} \
--app payment-service \
--service ${SERVICE_NAME}
az spring service-registry bind \
--resource-group ${RESOURCE_GROUP} \
--app catalog-service \
--service ${SERVICE_NAME}
Tanzu Build Service を使用して多言語アプリケーションをデプロイする
次の手順を使用して、アプリケーションをデプロイしてビルドします。 これらの手順では、コマンドを実行する前に、ターミナルがプロジェクト フォルダーにあることを確認してください。
次のコマンドを使用して、Tanzu Build Service でカスタム ビルダーを作成します。
az spring build-service builder create \ --resource-group ${RESOURCE_GROUP} \ --name quickstart-builder \ --service ${SERVICE_NAME} \ --builder-file azure-spring-apps-enterprise/resources/json/tbs/builder.json
次のコマンドを使用して、payment サービスをビルドしてデプロイします。
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --name payment-service \ --service ${SERVICE_NAME} \ --config-file-pattern payment/default \ --source-path apps/acme-payment \ --build-env BP_JVM_VERSION=17
次のコマンドを使用して、catalog サービスをビルドしてデプロイします。
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${SERVICE_NAME} \ --config-file-pattern catalog/default \ --source-path apps/acme-catalog \ --build-env BP_JVM_VERSION=17
次のコマンドを使用して、order サービスをビルドしてデプロイします。
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${SERVICE_NAME} \ --builder quickstart-builder \ --source-path apps/acme-order
次のコマンドを使用して、cart サービスをビルドしてデプロイします。
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${SERVICE_NAME} \ --builder quickstart-builder \ --env "CART_PORT=8080" \ --source-path apps/acme-cart
次のコマンドを使用して、frontend アプリケーションをビルドしてデプロイします。
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --name frontend \ --service ${SERVICE_NAME} \ --source-path apps/acme-shopping
ヒント
デプロイのトラブルシューティングを行うために、az spring app logs --name <app name> --follow
コマンドを使用して、アプリが実行されているときにログ ストリーミングをリアルタイムで取得できます。
Spring Cloud Gateway を使用してアプリに要求をルーティングする
Spring Cloud Gateway を構成し、アプリケーションへのルートを構成するには、次の手順に従います。
次のコマンドを使用して、Spring Cloud Gateway にエンドポイントを割り当てます。
az spring gateway update \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --assign-endpoint true
次のコマンドを使用して、Spring Cloud Gateway API 情報を構成します。
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --query properties.url \ --output tsv) az spring gateway update \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --api-description "Fitness Store API" \ --api-title "Fitness Store" \ --api-version "v1.0" \ --server-url "https://${GATEWAY_URL}" \ --allowed-origins "*"
次のコマンドを使用して、cart サービスのルートを作成します。
az spring gateway route-config create \ --resource-group ${RESOURCE_GROUP} \ --name cart-routes \ --service ${SERVICE_NAME} \ --app-name cart-service \ --routes-file azure-spring-apps-enterprise/resources/json/routes/cart-service.json
次のコマンドを使用して、order サービスのルートを作成します。
az spring gateway route-config create \ --resource-group ${RESOURCE_GROUP} \ --name order-routes \ --service ${SERVICE_NAME} \ --app-name order-service \ --routes-file azure-spring-apps-enterprise/resources/json/routes/order-service.json
次のコマンドを使用して、catalog サービスのルートを作成します。
az spring gateway route-config create \ --resource-group ${RESOURCE_GROUP} \ --name catalog-routes \ --service ${SERVICE_NAME} \ --app-name catalog-service \ --routes-file azure-spring-apps-enterprise/resources/json/routes/catalog-service.json
次のコマンドを使用して、frontend のルートを作成します。
az spring gateway route-config create \ --resource-group ${RESOURCE_GROUP} \ --name frontend-routes \ --service ${SERVICE_NAME} \ --app-name frontend \ --routes-file azure-spring-apps-enterprise/resources/json/routes/frontend.json
次のコマンドを使用して、Spring Cloud Gateway の URL を取得します。
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --query properties.url \ --output tsv) echo "https://${GATEWAY_URL}"
ブラウザーで出力 URL を開いて、デプロイされたアプリケーションを探索できます。
API ポータルを使用して API を参照して試す
API ポータルを構成するには、次の手順に従います。
次のコマンドを使用して、API ポータルにエンドポイントを割り当てます。
az spring api-portal update \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --assign-endpoint true
次のコマンドを使用して、API ポータルの URL を取得します。
export PORTAL_URL=$(az spring api-portal show \ --resource-group ${RESOURCE_GROUP} \ --service ${SERVICE_NAME} \ --query properties.url \ --output tsv) echo "https://${PORTAL_URL}"
ブラウザーで出力 URL を開いて、アプリケーション API を探索できます。
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 不要になったら、リソース グループを削除します。これにより、リソース グループ内のリソースが削除されます。 Azure CLI を使用してリソース グループを削除するには、次のコマンドを使用します。
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
次のステップ
これでアプリのビルドとデプロイが正常に完了したので、次のいずれかのオプションのクイック スタートに進みます。