App e distribuzione in Azure Spring Apps

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a: ✔️ Java ✔️ C#

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

App e distribuzione sono i due concetti chiave del modello di risorse di Azure Spring Apps. In Azure Spring Apps un'app è un'astrazione di un'app aziendale. Una versione di codice o binaria distribuita durante l'esecuzione dell'app in una distribuzione. Le app vengono eseguite in un'istanza del servizio Azure Spring Apps o semplicemente in un'istanza del servizio, come illustrato di seguito.

Diagramma che mostra la relazione tra le app e le distribuzioni.

È possibile avere più istanze del servizio all'interno di una singola sottoscrizione di Azure, ma il servizio Azure Spring Apps è più semplice da usare quando tutte le app che costituiscono un'app aziendale si trovano all'interno di una singola istanza del servizio. Un motivo è che è probabile che le app comunichino tra loro. È possibile farlo facilmente usando il registro dei servizi Eureka nell'istanza del servizio.

Il piano Standard di Azure Spring Apps consente a un'app di avere una distribuzione di produzione e una distribuzione di staging, in modo da poter eseguire facilmente una distribuzione blu/verde.

App

Le funzionalità/proprietà seguenti sono definite a livello di app.

Funzionalità Descrizione
Endpoint pubblico
URL per accedere all'app.
Dominio personalizzato
Record CNAME che protegge il dominio personalizzato.
Associazione di servizi
Connessione predefinita con altri servizi di Azure.
Identità gestita
L'identità gestita da Microsoft Entra ID consente all'app di accedere facilmente ad altre risorse protette di Microsoft Entra, ad esempio Azure Key Vault.
Archiviazione permanente
Impostazione che consente la persistenza dei dati oltre il riavvio dell'app.

Distribuzione

Le funzionalità/proprietà seguenti vengono definite a livello di distribuzione e vengono scambiate durante lo scambio della distribuzione di produzione e gestione temporanea.

Funzionalità Descrizione
CPU Numero di vcore per istanza dell'app.
Memoria GB di memoria per ogni istanza dell'app.
Numero di istanze
Numero di istanze dell'app, impostate manualmente o automaticamente.
Scalabilità automatica Numero di istanze di scalabilità automaticamente in base a regole e pianificazioni predefinite.
Opzioni JVM
Opzioni JVM da impostare.
Variabili di ambiente
Variabili di ambiente da impostare.
Versione di runtime
Java 8 o Java 11.

Ambiente

App Spring di Azure monta alcuni file YAML di sola lettura nelle app distribuite. Questi file contengono il contesto di Azure di una distribuzione. L'elenco seguente mostra i percorsi e il contenuto di questi file YAML:

  • /etc/azure-spring-cloud/context/azure-spring-apps.yml

    AZURE_SPRING_APPS:
        SUBSCRIPTION_ID:  <your-azure-subscription-id>
        RESOURCE_GROUP: <your-resource-group-name>
        NAME: <your-azure-spring-apps-name>
    
  • /etc/azure-spring-cloud/context/azure-spring-apps-deployment.yml

    AZURE_SPRING_APPS:
         APP:
            NAME: <your-app-name>
         DEPLOYMENT:
            NAME: <your-deployment-name>
            ACTIVE: true # true if the deployment is in production, false if in staging
    

Se l'app è un'app Spring Boot, questi due percorsi di file vengono aggiunti alla SPRING_CONFIG_ADDITIONAL_LOCATION variabile di ambiente. In questo modo, l'app può caricare queste proprietà come configurazioni e usarle nel codice. Ad esempio, è possibile usare l'annotazione @ConfigurationProperties per associare le proprietà YAML a una classe Java. Il frammento di codice seguente illustra come creare una @Configuration classe che rappresenta il contesto di Azure:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "azure-spring-apps")
@Data
public class AzureSpringAppsContext {

    private String subscriptionId;
    private String resourceGroup;
    private String name;

    private AppContext app;
    private DeploymentContext deployment;

    @Data
    public static class AppContext {
        private String name;
    }

    @Data
    public static class DeploymentContext {
        private String name;
        private boolean active;
    }
}

Per qualsiasi altra app poliglotta, potrebbe essere necessario leggere e accedere alle proprietà corrispondenti usando le librerie di lettura/scrittura di file corrispondenti nelle app.

Restrizioni

  • Un'app deve avere una distribuzione di produzione. L'API blocca l'eliminazione di una distribuzione di produzione. È consigliabile scambiare una distribuzione con la gestione temporanea prima di eliminarla.
  • Un'app può avere al massimo due distribuzioni. L'API blocca la creazione di più di due distribuzioni. Distribuire il nuovo file binario nella distribuzione di produzione o staging esistente.
  • La gestione della distribuzione non è disponibile nel piano Basic. Usare il piano Standard o Enterprise per la funzionalità di distribuzione blu-verde.

Passaggi successivi