クイックスタート: Enterprise プランを使用してアプリをビルドし Azure Spring Apps にデプロイする

注意

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象:❌ 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 サービス インスタンスをプロビジョニングするには、次の手順を使用します。

  1. 次のコマンドを使用して、Azure CLI にサインインし、アクティブなサブスクリプションを選択します。

    az login
    az account list --output table
    az account set --subscription <subscription-ID>
    
  2. 次のコマンドを使用して、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
    
  3. 場所を選択します。 この場所は、Azure Spring Apps Enterprise プランをサポートする場所である必要があります。 詳細については、「Azure Spring Apps に関する FAQ」を参照してください。

  4. 次のコマンドを使用して、リソースを保持する変数を作成します。 プレースホルダーは必ず、独自の値で置き換えてください。 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>"
    
  5. 次のコマンドを使用して、リソース グループを作成します。

    az group create \
        --name ${RESOURCE_GROUP} \
        --location ${LOCATION}
    

    リソース グループの詳細については、「Azure Resource Manager とは」を参照してください。

  6. 次のコマンドを使用して、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
    
  7. 次のコマンドを使用して、Azure Spring Apps サービスに使用する Log Analytics ワークスペースを作成します。

    az monitor log-analytics workspace create \
        --resource-group ${RESOURCE_GROUP} \
        --workspace-name ${WORKSPACE_NAME} \
        --location ${LOCATION}
    
  8. 次のコマンドを使用して、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)
    
  9. 次のコマンドを使用して、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
               }
             }
           ]'
    
  10. 次のコマンドを使用して、cart-serviceorder-servicepayment-servicecatalog-servicefrontend のアプリケーションを作成します。

    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}
    

アプリケーション構成サービスを使用して構成を外部化する

アプリケーション構成サービスを構成するには、次の手順に従います。

  1. 次のコマンドを使用して、アプリケーション構成サービスの構成リポジトリを作成します。

    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"
    
  2. 次のコマンドを使用して、アプリケーションをアプリケーション構成サービスにバインドします。

    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 を使用して多言語アプリケーションをデプロイする

次の手順を使用して、アプリケーションをデプロイしてビルドします。 これらの手順では、コマンドを実行する前に、ターミナルがプロジェクト フォルダーにあることを確認してください。

  1. 次のコマンドを使用して、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
    
  2. 次のコマンドを使用して、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
    
  3. 次のコマンドを使用して、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
    
  4. 次のコマンドを使用して、order サービスをビルドしてデプロイします。

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${SERVICE_NAME} \
        --builder quickstart-builder \
        --source-path apps/acme-order
    
  5. 次のコマンドを使用して、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
    
  6. 次のコマンドを使用して、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 を構成し、アプリケーションへのルートを構成するには、次の手順に従います。

  1. 次のコマンドを使用して、Spring Cloud Gateway にエンドポイントを割り当てます。

    az spring gateway update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. 次のコマンドを使用して、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 "*"
    
  3. 次のコマンドを使用して、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
    
  4. 次のコマンドを使用して、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
    
  5. 次のコマンドを使用して、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
    
  6. 次のコマンドを使用して、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
    
  7. 次のコマンドを使用して、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 ポータルを構成するには、次の手順に従います。

  1. 次のコマンドを使用して、API ポータルにエンドポイントを割り当てます。

    az spring api-portal update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. 次のコマンドを使用して、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 ..."

次のステップ

これでアプリのビルドとデプロイが正常に完了したので、次のいずれかのオプションのクイック スタートに進みます。