Guida introduttiva: Creare e distribuire app in Azure Spring Apps usando il piano Enterprise

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

Questo articolo si applica a:❌ Basic/Standard ✔️ Enterprise

Questa guida introduttiva illustra come compilare e distribuire applicazioni in Azure Spring Apps usando il piano Enterprise.

Prerequisiti

Scaricare l'app di esempio

Usare i comandi seguenti per scaricare l'esempio:

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

Effettuare il provisioning di un'istanza del servizio

Usare la procedura seguente per effettuare il provisioning di un'istanza del servizio Azure Spring Apps.

  1. Usare il comando seguente per accedere all'interfaccia della riga di comando di Azure e scegliere la sottoscrizione attiva:

    az login
    az account list --output table
    az account set --subscription <subscription-ID>
    
  2. Usare il comando seguente per accettare le condizioni legali e le informative sulla privacy per il piano Enterprise. Questo passaggio è necessario solo se la sottoscrizione non è mai stata usata per creare un'istanza del piano Enterprise di 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. Selezionare una località. Questo percorso deve essere una località che supporta il piano Enterprise di Azure Spring Apps. Per altre informazioni, vedere Domande frequenti su Azure Spring Apps.

  4. Creare variabili per contenere i nomi delle risorse usando i comandi seguenti. Assicurarsi di sostituire i segnaposto con i propri valori. Il nome dell'istanza del servizio Azure Spring Apps deve avere una lunghezza compresa tra 4 e 32 caratteri e può contenere solo lettere minuscole, numeri e trattini. Il primo carattere del nome del servizio deve essere una lettera e l'ultimo deve essere una lettera o un numero.

    export LOCATION="<location>"
    export RESOURCE_GROUP="<resource-group-name>"
    export SERVICE_NAME="<Azure-Spring-Apps-service-instance-name>"
    export WORKSPACE_NAME="<workspace-name>"
    
  5. Usare il comando seguente per creare un gruppo di risorse:

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

    Per altre informazioni sui gruppi di risorse, vedere Informazioni su Azure Resource Manager.

  6. Usare il comando seguente per creare un'istanza del servizio 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. Usare il comando seguente per creare un'area di lavoro Log Analytics da usare per il servizio Azure Spring Apps:

    az monitor log-analytics workspace create \
        --resource-group ${RESOURCE_GROUP} \
        --workspace-name ${WORKSPACE_NAME} \
        --location ${LOCATION}
    
  8. Usare i comandi seguenti per recuperare l'ID risorsa per l'area di lavoro Log Analytics e l'istanza del servizio 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. Usare il comando seguente per configurare le impostazioni di diagnostica per il servizio 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. Usare i comandi seguenti per creare applicazioni per cart-service, order-service, payment-servicecatalog-service, e 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}
    

Esternalizzare la configurazione con il servizio di configurazione dell'applicazione

Usare la procedura seguente per configurare il servizio di configurazione dell'applicazione.

  1. Usare il comando seguente per creare un repository di configurazione per il servizio di configurazione dell'applicazione:

    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. Usare i comandi seguenti per associare applicazioni al servizio di configurazione dell'applicazione:

    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}
    

Attivare la registrazione e l'individuazione del servizio

Per la registrazione e l'individuazione dei servizi attivi, usare i comandi seguenti per associare le applicazioni al Registro di sistema del servizio:

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}

Distribuire applicazioni polyglot con il servizio di compilazione Tanzu

Usare la procedura seguente per distribuire e compilare applicazioni. Per questi passaggi, assicurarsi che il terminale si trova nella cartella del progetto prima di eseguire qualsiasi comando.

  1. Usare il comando seguente per creare un generatore personalizzato nel servizio di compilazione 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. Usare il comando seguente per compilare e distribuire il servizio di pagamento:

    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. Usare il comando seguente per compilare e distribuire il servizio catalogo:

    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. Usare il comando seguente per compilare e distribuire il servizio ordini:

    az spring app deploy \
        --resource-group ${RESOURCE_GROUP} \
        --name order-service \
        --service ${SERVICE_NAME} \
        --builder quickstart-builder \
        --source-path apps/acme-order
    
  5. Usare il comando seguente per compilare e distribuire il servizio carrello:

    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. Usare il comando seguente per compilare e distribuire l'applicazione front-end:

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

Suggerimento

Per risolvere i problemi relativi alle distribuzioni, è possibile usare il comando seguente per ottenere lo streaming dei log in tempo reale ogni volta che l'app è in esecuzione: az spring app logs --name <app name> --follow.

Instradare le richieste alle app con Spring Cloud Gateway

Usare la procedura seguente per configurare Spring Cloud Gateway e configurare le route alle applicazioni.

  1. Usare il comando seguente per assegnare un endpoint a Spring Cloud Gateway:

    az spring gateway update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. Usare i comandi seguenti per configurare le informazioni sull'API Spring Cloud Gateway:

    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. Usare il comando seguente per creare route per il servizio carrello:

    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. Usare il comando seguente per creare route per il servizio ordini:

    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. Usare il comando seguente per creare route per il servizio catalogo:

    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. Usare il comando seguente per creare route per il 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. Usare i comandi seguenti per recuperare l'URL per Spring Cloud Gateway:

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

    È possibile aprire l'URL di output in un browser per esplorare l'applicazione distribuita.

Esplorare e provare le API con il portale per le API

Usare la procedura seguente per configurare il portale API.

  1. Usare il comando seguente per assegnare un endpoint al portale API:

    az spring api-portal update \
        --resource-group ${RESOURCE_GROUP} \
        --service ${SERVICE_NAME} \
        --assign-endpoint true
    
  2. Usare i comandi seguenti per recuperare l'URL per il portale 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}"
    

    È possibile aprire l'URL di output in un browser per esplorare le API dell'applicazione.


Pulire le risorse

Se si prevede di usare le guide di avvio rapido e le esercitazioni successive, è consigliabile non cancellare le risorse create. Quando non è più necessario, eliminare il gruppo di risorse per eliminare tutte le risorse contenute al suo interno. Per eliminare il gruppo di risorse usando l'interfaccia della riga di comando di Azure, usare i comandi seguenti:

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

Passaggi successivi

Dopo aver compilato e distribuito correttamente l'app, continuare con una delle guide introduttive facoltative seguenti: