Inicio rápido: Compilación e implementación de aplicaciones en Azure Spring Apps con el plan Enterprise

Nota

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

La información de este artículo puede ponerse en práctica en:❌ Básico o Estándar ✔️ Enterprise

En este inicio rápido se muestra cómo compilar e implementar aplicaciones en Azure Spring Apps mediante el plan Enterprise.

Requisitos previos

Descarga de la aplicación de ejemplo

Use los siguientes comandos para descargar el ejemplo:

git clone https://github.com/Azure-Samples/acme-fitness-store
cd acme-fitness-store

Aprovisionar una instancia de servicio

Siga estos pasos para aprovisionar una instancia de servicio de Azure Spring Apps.

  1. Use el siguiente comando para iniciar sesión en la CLI de Azure y elija su suscripción activa:

    az login
    az account list --output table
    az account set --subscription <subscription-ID>
    
  2. Use el siguiente comando para aceptar los términos legales y las declaraciones de privacidad del plan Enterprise. Este paso solo es necesario si la suscripción nunca se ha usado para crear un plan Enterprise de 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. Seleccione una ubicación. Esta ubicación debe ser compatible con el plan Enterprise de Azure Spring Apps. Para más información, consulte las preguntas frecuentes de Azure Spring Apps.

  4. Cree variables para contener los nombres del recurso mediante los siguientes comandos. Asegúrese de reemplazar los marcadores de posición por sus propios valores. El nombre de la instancia de servicio de Azure Spring Apps debe tener entre 4 y 32 caracteres y solo puede contener letras minúsculas, números y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.

    export LOCATION="<location>"
    export RESOURCE_GROUP="<resource-group-name>"
    export SERVICE_NAME="<Azure-Spring-Apps-service-instance-name>"
    export WORKSPACE_NAME="<workspace-name>"
    
  5. Use el siguiente comando para crear un grupo de recursos:

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

    Para más información sobre los grupos de recursos, consulte ¿Qué es Azure Resource Manager?

  6. Use el siguiente comando para crear una instancia de servicio de 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. Use el siguiente comando para crear un área de trabajo de Log Analytics que se usará para el servicio Azure Spring Apps:

    az monitor log-analytics workspace create \
        --resource-group ${RESOURCE_GROUP} \
        --workspace-name ${WORKSPACE_NAME} \
        --location ${LOCATION}
    
  8. Use los siguientes comandos para recuperar el identificador de recurso del área de trabajo de Log Analytics y de la instancia de servicio de Azure Spring Apps:

    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. Use el siguiente comando para configurar los valores de diagnóstico de Azure Spring Apps Service:

    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. Use los comandos siguientes para crear aplicaciones para cart-service, order-service, payment-service, catalog-service y 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}
    

Externalización de la configuración con Application Configuration Service

Siga estos pasos para configurar Application Configuration Service.

  1. Use el siguiente comando para crear un repositorio de configuración para Application Configuration Service:

    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. Use el siguiente comando para crear un repositorio de configuración para Application Configuration Service:

    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}
    

Activación del registro y detección de servicios

Para activar el registro y la detección de servicios activos, use los siguientes comandos para enlazar aplicaciones a Service Registry:

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}

Implementación de aplicaciones políglotas con Tanzu Build Service

Siga estos pasos para implementar y compilar aplicaciones. Para estos pasos, asegúrese de que el terminal se encuentra en la carpeta del proyecto antes de ejecutar cualquier comando.

  1. Use el siguiente comando para crear un generador personalizado en 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. Use el siguiente comando para compilar e implementar el servicio de pago:

    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. Use el siguiente comando para compilar e implementar el servicio de catálogo:

    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. Use el siguiente comando para compilar e implementar el servicio de pedidos:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${SERVICE_NAME} \
        --builder quickstart-builder \
        --source-path apps/acme-order
    
  5. Use el siguiente comando para compilar e implementar el servicio de carro:

    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. Use el siguiente comando para compilar e implementar la aplicación de front-end:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --name frontend \
        --service ${SERVICE_NAME} \
        --source-path apps/acme-shopping
    

Sugerencia

Para solucionar los problemas de las implementaciones, puede usar el siguiente comando para obtener el streaming de registros en tiempo real cada vez que la aplicación se ejecute: az spring app logs --name <app name> --follow.

Enrutamiento de solicitudes a aplicaciones con Spring Cloud Gateway

Siga estos pasos para configurar Spring Cloud Gateway y configurar rutas a las aplicaciones.

  1. Use el siguiente comando para asignar un punto de conexión a Spring Cloud Gateway:

    az spring gateway update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. Use los siguientes comandos para configurar la información de 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. Use el siguiente comando para crear rutas para el servicio de carro:

    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. Use el siguiente comando para crear rutas para el servicio de pedidos:

    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. Use el siguiente comando para crear rutas para el servicio de catálogo:

    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. Use el siguiente comando para crear rutas para el front-end:

    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. Use los siguientes comandos para recuperar la dirección URL de la puerta de enlace de Spring Cloud:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --query properties.url \
        --output tsv)
    
    echo "https://${GATEWAY_URL}"
    

    Puede abrir la dirección URL de salida en un explorador para examinar la aplicación implementada.

Examen y prueba de API con API Portal

Use los siguientes pasos para configurar API Portal.

  1. Use el siguiente comando para asignar un punto de conexión a API Portal:

    az spring api-portal update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. Use los siguientes comandos para recuperar la dirección URL para Portal de API:

    export PORTAL_URL=$(az spring api-portal show \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --query properties.url \
        --output tsv)
    
    echo "https://${PORTAL_URL}"
    

    Puede abrir la dirección URL de salida en un explorador para examinar las API de la aplicación.


Limpieza de recursos

Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no lo necesite, elimine el grupo de recursos, que elimina los recursos que contiene. Para eliminar el grupo de recursos mediante la CLI de Azure, use estos comandos:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Pasos siguientes

Ahora que ha compilado e implementado correctamente la aplicación, vaya a los siguientes inicios rápidos opcionales: