你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用企业计划生成应用并将其部署到 Azure Spring Apps

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

本文适用于:❌ 基本版/标准版 ✔️ 企业版

本快速入门演示如何使用企业计划生成应用并将其部署到 Azure Spring Apps。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 了解并满足 Azure 市场中企业计划要求部分。
  • Azure CLI 版本 2.45.0 或更高版本
  • Git
  • Azure Spring Apps 企业计划扩展。 使用以下命令删除以前的版本,并安装最新的企业计划扩展。 如果以前安装了 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. 使用以下命令接受企业计划的法律条款和隐私声明。 仅当订阅从未用于创建 Azure Spring Apps 企业计划实例时,才需要执行此步骤。

    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 企业计划的位置。 有关详细信息,请参阅 Azure Spring Apps 常见问题解答

  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 资源管理器?

  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 生成服务部署 polyglot 应用程序

使用以下步骤部署和生成应用程序。 对于这些步骤,请确保终端位于项目文件夹中,然后再运行任何命令。

  1. 使用以下命令在 Tanzu 生成服务中创建自定义生成器:

    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. 使用以下命令生成和部署付款服务:

    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. 使用以下命令生成和部署目录服务:

    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. 使用以下命令生成和部署订单服务:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${SERVICE_NAME} \
        --builder quickstart-builder \
        --source-path apps/acme-order
    
  5. 使用以下命令生成和部署购物车服务:

    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. 使用以下命令生成和部署前端应用程序:

    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 网关将请求路由到应用

使用以下步骤配置 Spring Cloud 网关并配置到应用程序的路由。

  1. 使用以下命令将终结点分配到 Spring Cloud 网关:

    az spring gateway update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. 使用以下命令配置 Spring Cloud 网关 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. 使用以下命令为购物车服务创建路由:

    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. 使用以下命令为订单服务创建路由:

    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. 使用以下命令为目录服务创建路由:

    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. 使用以下命令为前端创建路由:

    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 网关的 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 ..."

后续步骤

你已成功生成和部署应用,现在可以继续学习以下任一可选快速入门: