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.
- È 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.
- È già stato effettuato il provisioning e l'esecuzione dell'istanza del servizio Azure Spring Apps. Per configurare e avviare un servizio Azure Spring Apps, vedere Avvio rapido: Creare e distribuire app in Azure Spring Apps usando il piano Enterprise.
- Git.
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:
Apri il portale di Azure.
Nella scheda Dati principali, selezionare Livello Enterprise nella sezione Prezzi e specificare le informazioni richieste. Selezionare quindi Avanti: Componenti gestiti.
Nella scheda Componenti gestiti selezionare Abilita Spring Cloud Config Server.
Specificare altre impostazioni e quindi selezionare Rivedi e crea.
Nella scheda Rivedi una creazione verificare che l'opzione Abilita Spring Cloud Config Server sia impostata su Sì. 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 |
Sì | 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 |
Sì | 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 | 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 |
Sì | 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-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 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. |
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:
Accedere al portale di Azure.
Passare alla pagina panoramica di Azure Spring Apps.
Selezionare Spring Cloud Config Server nel riquadro di spostamento.
Nella sezione Repository predefinito impostare URI su
https://github.com/Azure-Samples/piggymetrics-config
.Selezionare Convalida.
Al termine della convalida, selezionare Applica per salvare le modifiche.
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:
- Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.
- Per l'impostazione Etichetta immettere config.
- Verificare che l'impostazione Autenticazione sia Pubblica.
- 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:
Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.
In Autenticazione selezionare Modifica autenticazione.
Nell'elenco a discesa Tipo di autenticazione del riquadro Modifica autenticazione selezionare HTTP Basic.
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.
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:
Nella sezione Repository predefinito incollare l'URI del repository nella sezione URI.
In Autenticazione selezionare Modifica autenticazione.
Nell'elenco a discesa Tipo di autenticazione del riquadro Modifica autenticazione selezionare SSH.
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.
Repository aggiuntivi
Se si vuole configurare il servizio con un repository aggiuntivo facoltativo, seguire questa procedura:
- Specificare le impostazioni di URI e autenticazione come è stato fatto per il repository predefinito. Assicurarsi di includere un'impostazione Nome per il modello.
- 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:
Selezionare Importa impostazioni e quindi selezionare il file YAML dalla directory del progetto. Selezionare Importa.
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.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:
Nel portale di Azure Repos per il progetto selezionare Clona.
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 primadev.azure.com
di , 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.
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:
Accedere al portale di Azure.
Passare alla pagina panoramica di Azure Spring Apps.
Selezionare il servizio da configurare.
Nel riquadro sinistro della pagina del servizio in Impostazioni selezionare la scheda Spring Cloud Config Server.
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.
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:
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:
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:
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); } } }
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 su60 seconds
.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Aggiungere
@RefreshScope
al codice. Nell'esempio seguente la variabileconnectTimeout
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:
Passare all'istanza del servizio e quindi selezionare Spring Cloud Config Server.
Seleziona Gestisci.
Selezionare o deselezionare Abilita Spring Cloud Config Server e quindi selezionare Salva.
È ora possibile visualizzare lo stato di Spring Cloud Config Server nella pagina Spring Cloud Config Server .