Configurare un server di configurazione Spring Cloud gestito in App Spring di Azure

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: ✔️ Consumo standard e dedicato (anteprima) ✔️ Basic/Standard ✔️ Enterprise

Questo articolo illustra come configurare un server di configurazione Spring Cloud gestito in Azure Spring Apps.

Spring Cloud Config Server offre il supporto lato server e client per una configurazione esterna in un sistema distribuito. L'istanza di Spring Cloud Config Server offre una posizione centrale per gestire le proprietà esterne per le applicazioni in tutti gli ambienti. Per altre informazioni, vedere Spring Cloud Config.

Nota

Per usare il server di configurazione nel piano a consumo Standard e dedicato, è prima necessario abilitarlo. Per altre informazioni, vedere Abilitare e disabilitare Spring Cloud Config Server in Azure Spring Apps.

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Abilitare Spring Cloud Config Server

È possibile abilitare Spring Cloud Config Server quando si effettua il provisioning di un'istanza del servizio piano Enterprise di Azure Spring Apps. Se si dispone già di un'istanza del piano Enterprise di Azure Spring Apps, vedere la sezione Gestire Spring Cloud Config Server in un'istanza del piano Enterprise esistente in questo articolo.

È possibile abilitare Spring Cloud Config Server usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Per abilitare Spring Cloud Config Server, seguire questa procedura:

  1. Apri il portale di Azure.

  2. Nella scheda Dati principali, selezionare Livello Enterprise nella sezione Prezzi e specificare le informazioni richieste. Selezionare quindi Avanti: Componenti gestiti.

  3. Nella scheda Componenti gestiti selezionare Abilita Spring Cloud Config Server.

    Screenshot della portale di Azure che mostra la scheda Delle impostazioni di VMware Tanzu con la casella di controllo Abilita Spring Cloud Config Server evidenziata.

  4. Specificare altre impostazioni e quindi selezionare Rivedi e crea.

  5. Nella scheda Rivedi una creazione verificare che l'opzione Abilita Spring Cloud Config Server sia impostata su . Selezionare Crea per creare l'istanza del piano Enterprise.

Restrizioni

Quando si usa il server di configurazione con un back-end git, sono previste alcune restrizioni. Le proprietà seguenti vengono inserite automaticamente nell'ambiente dell'applicazione per accedere al server di configurazione e all'individuazione dei servizi. Se si configurano anche tali proprietà dai file del server di configurazione, è possibile che si verifichino conflitti e comportamenti imprevisti.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Attenzione

Evitare di inserire queste proprietà nei file dell'applicazione config server.

Creare i file del server di configurazione

Azure Spring Apps supporta Azure DevOps Server, GitHub, GitLab e Bitbucket per archiviare i file del server di configurazione. Quando il repository è pronto, è possibile creare i file di configurazione e archiviarli in questa posizione.

Alcune proprietà configurabili sono disponibili solo per determinati tipi. Le sezioni seguenti descrivono le proprietà per ogni tipo di repository.

Nota

Config Server accetta master (su Git) come etichetta predefinita se non si specifica uno. Tuttavia, GitHub ha recentemente modificato il ramo predefinito da master a main. Per evitare errori del server di configurazione di Azure Spring Apps, prestare attenzione all'etichetta predefinita durante la configurazione del server di configurazione con GitHub, in particolare per i repository appena creati.

L'uso di un trattino (-) per separare le parole è l'unica convenzione di denominazione delle proprietà attualmente supportata. Ad esempio, è possibile usare default-label, ma non defaultLabel.

Repository pubblico

Quando si usa un repository pubblico, le proprietà configurabili sono più limitate rispetto a quelle di un repository privato.

La tabella seguente elenca le proprietà configurabili che è possibile usare per configurare un repository Git pubblico:

Proprietà Richiesto Funzionalità
uri URI del repository Git usato come back-end del server di configurazione. Deve iniziare con http://, https://git@, o ssh://.
default-label No Etichetta predefinita del repository Git. Deve essere un nome di ramo, un nome di tag o un ID commit nel repository.
search-paths No Matrice di stringhe usate per la ricerca nelle sottodirectory del repository Git.

Repository privato con autenticazione SSH

La tabella seguente elenca le proprietà configurabili che è possibile usare per configurare un repository Git privato con SSH:

Proprietà Richiesto Funzionalità
uri URI del repository Git usato come back-end del server di configurazione. Deve iniziare con http://, https://git@, o ssh://.
default-label No Etichetta predefinita del repository Git. Deve essere il nome del ramo, il nome del tag o l'ID commit del repository.
search-paths No Matrice di stringhe usate per la ricerca nelle sottodirectory del repository Git.
private-key No Chiave privata SSH per accedere al repository Git. Obbligatorio quando l'URI inizia con git@ o ssh://.
host-key No Chiave host del server del repository Git. Non deve includere il prefisso dell'algoritmo come descritto da host-key-algorithm.
host-key-algorithm No Algoritmo della chiave host. Deve essere ssh-dss, ssh-rsaecdsa-sha2-nistp256, ecdsa-sha2-nistp384, o ecdsa-sha2-nistp521. Obbligatorio solo se host-key esiste.
strict-host-key-checking No Indicatore del server di configurazione che indica se l'avvio non riesce quando si usa l'oggetto privato host-key. Deve essere true (valore predefinito) o false.

Repository privato con autenticazione di base

La tabella seguente elenca le proprietà configurabili che è possibile usare per configurare un repository Git privato con l'autenticazione di base:

Proprietà Richiesto Funzionalità
uri URI del repository Git usato come back-end del server di configurazione. Deve iniziare con http://, https://git@, o ssh://.
default-label No Etichetta predefinita del repository Git. Deve essere un nome di ramo, un nome di tag o un id commit nel repository.
search-paths No Matrice di stringhe usate per la ricerca nelle sottodirectory del repository Git.
username No Nome utente usato per accedere al server del repository Git. Obbligatorio quando il server del repository Git supporta l'autenticazione di base HTTP.
password No La password o il token di accesso personale usato per accedere al server del repository Git. Obbligatorio quando il server del repository Git supporta l'autenticazione di base HTTP.

Nota

Molti server repository Git supportano l'uso di token anziché password per l'autenticazione di base HTTP. Alcuni repository consentono la persistenza illimitata dei token. Tuttavia, alcuni server di repository Git, tra cui Azure DevOps Server, forzano la scadenza dei token in poche ore. I repository che causano la scadenza dei token non devono usare l'autenticazione basata su token con Azure Spring Apps. Se si usa un token di questo tipo, ricordarsi di aggiornarlo prima della scadenza.

GitHub ha rimosso il supporto per l'autenticazione delle password, quindi è necessario usare un token di accesso personale anziché l'autenticazione della password per GitHub. Per altre informazioni, vedere Requisiti di autenticazione dei token per le operazioni Git.

Altri repository Git

La tabella seguente elenca le proprietà configurabili che è possibile usare per configurare i repository Git con un modello:

Proprietà Richiesto Funzionalità
repos No Mappa costituita dalle impostazioni per un repository Git con un nome specificato.
repos."uri" Sì in repos URI del repository Git usato come back-end del server di configurazione. Deve iniziare con http://, https://git@, o ssh://.
repos."name" Sì in repos Nome per identificare il repository; ad esempio, team-A o team-B. Obbligatorio solo se repos esiste.
repos."pattern" No Matrice di stringhe utilizzata per trovare la corrispondenza con il nome di un'applicazione. Per ogni criterio, usare il formato {application}/{profile} con caratteri jolly.
repos."default-label" No Etichetta predefinita del repository Git. Deve essere il nome del ramo, il nome del tag o il commit IOD del repository.
repos."search-paths" No Matrice di stringhe usate per la ricerca nelle sottodirectory del repository Git.
repos."username" No Nome utente usato per accedere al server del repository Git. Obbligatorio quando il server del repository Git supporta l'autenticazione di base HTTP.
repos."password" No La password o il token di accesso personale usato per accedere al server del repository Git. Obbligatorio quando il server del repository Git supporta l'autenticazione di base HTTP.
repos."private-key" No Chiave privata SSH per accedere al repository Git. Obbligatorio quando l'URI inizia con git@ o ssh://.
repos."host-key" No Chiave host del server del repository Git. Non deve includere il prefisso dell'algoritmo come descritto da host-key-algorithm.
repos."host-key-algorithm" No Algoritmo della chiave host. Deve essere ssh-dss, ssh-rsaecdsa-sha2-nistp256, ecdsa-sha2-nistp384, o ecdsa-sha2-nistp521. Obbligatorio solo se host-key esiste.
repos."strict-host-key-checking" No Indica se l'istanza del server di configurazione non viene avviata quando si usa l'oggetto privato host-key. Deve essere true (valore predefinito) o false.

La tabella seguente illustra alcuni esempi di modelli per la configurazione del servizio con un repository aggiuntivo facoltativo. Per altre informazioni, vedere la sezione Repository aggiuntivi in questo articolo e la sezione Criteri di ricerca e repository multipli di Spring Cloud Config.

Criteri Descrizione
test-config-server-app-0/* Il modello e l'URI del repository corrispondono a un'applicazione Spring Boot denominata test-config-server-app-0 con qualsiasi profilo.
test-config-server-app-1/dev Il modello e l'URI del repository corrispondono a un'applicazione Spring Boot denominata test-config-server-app-1 con un profilo di sviluppo.
test-config-server-app-2/prod Il modello e l'URI del repository corrispondono a un'applicazione Spring Boot denominata test-config-server-app-2 con un profilo di produzione.

Screenshot del portale di Azure che mostra la pagina Config Server con la colonna Patterns della tabella Repository aggiuntivi evidenziata.

Screenshot del portale di Azure che mostra la pagina Config Server con la colonna Patterns della tabella Repository aggiuntivi evidenziata.

Configurare un repository Git con il server di configurazione

Dopo aver salvato i file di configurazione in un repository, seguire questa procedura per connettere Azure Spring Apps al repository:

  1. Accedere al portale di Azure.

  2. Passare alla pagina panoramica di Azure Spring Apps.

  3. Selezionare Spring Cloud Config Server nel riquadro di spostamento.

  4. Nella sezione Repository predefinito impostare URI su https://github.com/Azure-Samples/piggymetrics-config.

  5. Selezionare Convalida.

    Screenshot del portale di Azure che mostra la pagina Config Server .

    Screenshot del portale di Azure che mostra la pagina Config Server .

  6. Al termine della convalida, selezionare Applica per salvare le modifiche.

    Screenshot della portale di Azure che mostra la pagina Config Server con il pulsante Applica evidenziato.

    Screenshot della portale di Azure che mostra la pagina Config Server con il pulsante Applica evidenziato.

L'aggiornamento della configurazione può richiedere alcuni minuti. Al termine della configurazione si dovrebbe ricevere una notifica.

Immettere le informazioni sul repository direttamente nel portale di Azure

È possibile immettere le informazioni sul repository per il repository predefinito e, facoltativamente, per repository aggiuntivi.

Repository predefinito

Questa sezione illustra come immettere le informazioni sul repository per un repository pubblico o privato. Per un repository privato, è possibile usare l'autenticazione di base o SSH.

Usare la procedura seguente per immettere le informazioni sul repository per un repository pubblico:

  1. Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.
  2. Per l'impostazione Etichetta immettere config.
  3. Verificare che l'impostazione Autenticazione sia Pubblica.
  4. Selezionare Applica.

Usare la procedura seguente per immettere le informazioni sul repository per un repository privato usando l'autenticazione basata su password/token di base:

  1. Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.

  2. In Autenticazione selezionare Modifica autenticazione.

  3. Nell'elenco a discesa Tipo di autenticazione del riquadro Modifica autenticazione selezionare HTTP Basic.

  4. Immettere il nome utente e la password/token per concedere l'accesso ad Azure Spring Apps.

  5. Fare clic su OK e su Applica per completare la configurazione dell'istanza del server di configurazione.

    Screenshot del portale di Azure che mostra la sezione Repository predefinito delle impostazioni di autenticazione per l'autenticazione di base.

    Nota

    Molti server repository Git supportano l'uso di token anziché password per l'autenticazione di base HTTP. Alcuni repository consentono la persistenza illimitata dei token. Tuttavia, alcuni server di repository Git, tra cui Azure DevOps Server, forzano la scadenza dei token in poche ore. I repository che causano la scadenza dei token non devono usare l'autenticazione basata su token con Azure Spring Apps. Se si usa un token di questo tipo, ricordarsi di aggiornarlo prima della scadenza.

    GitHub ha rimosso il supporto per l'autenticazione delle password, quindi è necessario usare un token di accesso personale anziché l'autenticazione della password per GitHub. Per altre informazioni, vedere Requisiti di autenticazione dei token per le operazioni Git.

Usare la procedura seguente per immettere le informazioni sul repository per un repository privato tramite SSH:

  1. Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.

  2. In Autenticazione selezionare Modifica autenticazione.

  3. Nell'elenco a discesa Tipo di autenticazione del riquadro Modifica autenticazione selezionare SSH.

  4. Immettere la chiave privata. Facoltativamente, specificare la chiave host e l'algoritmo della chiave host.

  5. Includere la chiave pubblica nel repository del server di configurazione.

  6. Fare clic su OK e su Applica per completare la configurazione dell'istanza del server di configurazione.

    Screenshot della portale di Azure che mostra la sezione Repository predefinito delle impostazioni di autenticazione per l'autenticazione SSH.

Repository aggiuntivi

Se si vuole configurare il servizio con un repository aggiuntivo facoltativo, seguire questa procedura:

  1. Specificare le impostazioni di URI e autenticazione come è stato fatto per il repository predefinito. Assicurarsi di includere un'impostazione Nome per il modello.
  2. Selezionare Applica per collegare il repository all'istanza.

Configurare un repository Git importando un file YAML

Se è stato scritto un file YAML con le impostazioni del repository, è possibile importare il file direttamente dal computer locale ad Azure Spring Apps. L'esempio seguente illustra un semplice file YAML per un repository privato con autenticazione di base:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Per importare un file YAML, seguire questa procedura:

  1. Selezionare Importa impostazioni e quindi selezionare il file YAML dalla directory del progetto. Selezionare Importa.

    Screenshot del portale di Azure che mostra il riquadro Impostazioni di importazione server di configurazione.

    Screenshot del portale di Azure che mostra il riquadro Impostazioni di importazione server di configurazione.

    Nel riquadro Notifiche viene visualizzata un'operazione async . Il server di configurazione dovrebbe segnalare l'esito positivo dopo 1-2 minuti. Le informazioni del file YAML vengono visualizzate nella portale di Azure.

  2. Selezionare Applica per completare l'importazione.

Configurare Azure Repos nel server di configurazione

Azure Spring Apps può accedere ai repository Git pubblici, protetti tramite SSH o protetti tramite l'autenticazione HTTP di base. L'autenticazione di base HTTP è la più semplice delle opzioni per la creazione e la gestione dei repository con Azure Repos.

Ottenere l'URL e le credenziali del repository

Usare la procedura seguente per ottenere l'URL e le credenziali del repository:

  1. Nel portale di Azure Repos per il progetto selezionare Clona.

  2. Copiare l'URL clone dalla casella di testo. Questo URL è in genere nel formato seguente:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Rimuovere tutti gli elementi dopo https:// e prima dev.azure.comdi , incluso il @ simbolo . L'URL risultante deve essere nel formato seguente:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Salvare questo URL per usarlo in un secondo momento.

  3. Selezionare Genera credenziali Git per visualizzare un nome utente e una password. Salvare il nome utente e la password da usare nella sezione seguente.

Configurare un repository Git con il server di configurazione

Per configurare il repository, seguire questa procedura:

  1. Accedere al portale di Azure.

  2. Passare alla pagina panoramica di Azure Spring Apps.

  3. Selezionare il servizio da configurare.

  4. Nel riquadro sinistro della pagina del servizio in Impostazioni selezionare la scheda Spring Cloud Config Server.

  5. Usare la procedura seguente per configurare il repository creato:

    • Aggiungere l'URI del repository salvato in precedenza.
    • Selezionare l'impostazione in Autenticazione per aprire il riquadro Modifica autenticazione .
    • Per Tipo di autenticazione selezionare HTTP Basic.
    • Per Nome utente specificare il nome utente salvato in precedenza.
    • In Password specificare la password salvata in precedenza.
    • Selezionare OK e quindi attendere il completamento dell'operazione.

    Screenshot del portale di Azure che mostra le impostazioni di configurazione predefinite del repository con l'URI e il tipo di autenticazione evidenziati.

Associare un'app al server di configurazione Spring Cloud

Usare il comando seguente per associare un'app a Spring Cloud Config Server, consentendo all'app di eseguire il pull delle configurazioni dal server di configurazione.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

È anche possibile configurare l'associazione dell'app dal portale di Azure, come illustrato nello screenshot seguente:

Screenshot del portale di Azure che mostra la pagina Spring Cloud Config Server con l'elenco a discesa Associazione app evidenziato.

Nota

Queste modifiche richiedono alcuni minuti per propagarsi a tutte le applicazioni quando lo stato del server di configurazione cambia.

Se si modifica lo stato di associazione/annullamento dell'associazione, è necessario riavviare o ridistribuire l'applicazione.

È ora possibile scegliere di associare l'applicazione al server di configurazione Spring Cloud direttamente durante la creazione di una nuova app usando il comando seguente:

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

È anche possibile associare l'applicazione al server di configurazione Spring Cloud dal portale di Azure, come illustrato nello screenshot seguente:

Screenshot del portale di Azure che mostra la pagina Crea app con l'elenco a discesa Bind evidenziato.

Eliminare la configurazione

Selezionare Reimposta nella scheda Spring Cloud Config Server per cancellare le impostazioni esistenti. Eliminare le impostazioni del server di configurazione se si vuole connettere l'istanza del server di configurazione a un'altra origine, ad esempio quando si passa da GitHub a Azure DevOps Server.

Aggiornare il server di configurazione

Quando le proprietà vengono modificate, i servizi che utilizzano tali proprietà devono ricevere una notifica prima che sia possibile apportare modifiche. La soluzione predefinita per Spring Cloud Config Server consiste nell'attivare manualmente l'evento di aggiornamento, che potrebbe non essere fattibile se sono presenti molte istanze dell'app. Per altre informazioni, vedere Configurazione centralizzata

È invece possibile aggiornare automaticamente i valori dal server di configurazione consentendo al client di configurazione di eseguire il polling delle modifiche in base a un aggiornamento interno.

Seguire questa procedura per aggiornare automaticamente i valori dal server di configurazione:

  1. Registrare un'attività pianificata per aggiornare il contesto in un determinato intervallo, come illustrato nell'esempio seguente:

    @ConditionalOnBean({RefreshEndpoint.class})
    @Configuration
    @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class})
    @EnableScheduling
    public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer {
        @Value("${spring.cloud.config.refresh-interval:60}")
        private long refreshInterval;
        @Value("${spring.cloud.config.auto-refresh:false}")
        private boolean autoRefresh;
        private RefreshEndpoint refreshEndpoint;
        public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) {
            this.refreshEndpoint = refreshEndpoint;
        }
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            if (autoRefresh) {
                // set minimal refresh interval to 5 seconds
                refreshInterval = Math.max(refreshInterval, 5);
                scheduledTaskRegistrar.addFixedRateTask(() -> refreshEndpoint.refresh(), refreshInterval * 1000);
            }
        }
    }
    
  2. Abilitare l'aggiornamento automatico e impostare l'intervallo di aggiornamento appropriato nel file application.yml . Nell'esempio seguente il client esegue il polling delle modifiche alla configurazione ogni 60 secondi, ovvero il valore minimo che è possibile impostare per un intervallo di aggiornamento.

    Per impostazione predefinita, l'opzione autorefresh è impostata su false e l'intervallo di aggiornamento è impostato su 60 seconds.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Aggiungere @RefreshScope al codice. Nell'esempio seguente la variabile connectTimeout viene aggiornata automaticamente ogni 60 secondi.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Per altre informazioni, vedere l'esempio config-client-polling .

Gestire Spring Cloud Config Server in un'istanza del piano Enterprise esistente

È possibile abilitare e disabilitare Spring Cloud Config Server dopo la creazione del servizio usando il portale di Azure o l'interfaccia della riga di comando di Azure. Prima di disabilitare Spring Cloud Config Server, è necessario annullare l'associazione di tutte le app.

Per abilitare o disabilitare Spring Cloud Config Server, seguire questa procedura:

  1. Passare all'istanza del servizio e quindi selezionare Spring Cloud Config Server.

  2. Seleziona Gestisci.

  3. Selezionare o deselezionare Abilita Spring Cloud Config Server e quindi selezionare Salva.

    Screenshot del portale di Azure che mostra il riquadro Gestisci con l'opzione Abilita server di configurazione evidenziata.

  4. È ora possibile visualizzare lo stato di Spring Cloud Config Server nella pagina Spring Cloud Config Server .

Azure Spring Apps