Share via


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

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: ✔️ Java ✔️ C#

Questo articolo si applica a: ✔️ Utilizzo standard e dedicato (anteprima) ✔️ Basic/Standard ❌ Enterprise

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

Spring Cloud Config Server offre il supporto lato server e client per una configurazione esterna in un sistema distribuito. L'istanza del server di configurazione offre una posizione centrale per gestire le proprietà esterne per le applicazioni in tutti gli ambienti. Per altre informazioni, vedere la documentazione di 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.
  • È già stato effettuato il provisioning e l'esecuzione dell'istanza del servizio Azure Spring Apps usando il piano Basic o Standard. Per configurare e avviare un servizio Azure Spring Apps, vedere Avvio rapido: Distribuire la prima applicazione in Azure Spring Apps. Spring Cloud Config Server non è applicabile al piano Enterprise.
  • Git.

Restrizione

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

Non 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.

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.

Nota

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

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.

Repository privato con autenticazione SSH

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

Nota

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

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-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 o ecdsa-sha2-nistp521. Obbligatorio solo se host-key esiste.
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.

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.

Nota

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

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.
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.

Nota

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

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 modello, 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-rsa, ecdsa-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 e la sezione Criteri di ricerca e repository multipli della documentazione di Spring.

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 of Azure portal showing the Config Server page with the Patterns column of the Additional repositories table highlighted.

Collegare il repository del server di configurazione ad Azure Spring Apps

Ora che i file di configurazione vengono salvati 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 Config Server (Server di configurazione) nel riquadro di spostamento sinistro.

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

  5. Selezionare Convalida.

    Screenshot of Azure portal showing the Config Server page.

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

    Screenshot of Azure portal showing Config Server page with Apply button highlighted.

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

Usare la procedura descritta in questa sezione per immettere le informazioni sul repository per un repository pubblico o privato.

  • Repository pubblico: nella sezione Repository predefinito , nella casella URI incollare l'URI del repository. Immettere config per l'impostazione Etichetta . Verificare che l'impostazione Autenticazione sia Pubblica e quindi selezionare Applica.

  • Repository privato: Azure Spring Apps supporta l'autenticazione basata su password/token di base e SSH.

    • Autenticazione di base: nella sezione Repository predefinito , nella casella URI incollare l'URI del repository e quindi selezionare l'impostazione in Autenticazione per aprire il riquadro Modifica autenticazione . Nell'elenco a discesa Tipo di autenticazione selezionare HTTP Basic e quindi immettere il nome utente e la password/token per concedere l'accesso ad Azure Spring Apps. Fare clic su OK e su Applica per completare la configurazione dell'istanza del server di configurazione.

    Screenshot of the Default repository section showing authentication settings for Basic authentication.

    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.

    • SSH: nella sezione Repository predefinito, nella casella URI incollare l'URI del repository e quindi selezionare l'impostazione in Autenticazione per aprire il riquadro Modifica autenticazione . Nel riquadro Modifica autenticazione selezionare SSH nell'elenco a discesa Tipo di autenticazione e quindi immettere la chiave privata. Facoltativamente, specificare la chiave host e l'algoritmo della chiave host. Includere la chiave pubblica nel repository del server di configurazione. Fare clic su OK e su Applica per completare la configurazione dell'istanza del server di configurazione.

    Screenshot of the Default repository section showing authentication settings for SSH authentication.

Repository aggiuntivi

Se si vuole configurare il servizio con un repository aggiuntivo facoltativo, specificare le impostazioni di URI e autenticazione come è stato fatto per il repository predefinito. Assicurarsi di includere un'impostazione Nome per il modello e quindi selezionare Applica per allegarla all'istanza.

Immettere le informazioni sul repository in 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>

Fare clic sul pulsante Importa impostazioni, quindi selezionare il file YAML nella directory del progetto. Seleziona Importa

Screenshot of the Config Server Import settings pane.

Le notifiche visualizzano 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. Selezionare Applica per completare l'importazione.

Usare Azure Repos per la configurazione di Azure Spring Apps

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 il pulsante 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 da usare nella sezione successiva.

  3. Selezionare Genera credenziali Git per visualizzare un nome utente e una password da salvare per l'uso nella sezione seguente.

Configurare Azure Spring Apps per accedere al repository Git

  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 Server di configurazione. Configurare il repository creato, come indicato di seguito:

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

    Screenshot of repository configuration settings.

Eliminare la configurazione

Selezionare Reimposta nella scheda Server di configurazione 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.

Aggiornamento del 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. Usare la procedura seguente 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 secondi.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Aggiungere @RefreshScope nel 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 .

Passaggi successivi

In questo articolo si è appreso come abilitare e configurare l'istanza del server di configurazione Spring Cloud. Per altre informazioni sulla gestione dell'applicazione, vedere Ridimensionare un'applicazione in Azure Spring Apps.