Esercitazione: connettersi a Server Config gestito per Spring in App contenitore di Azure
Config Server per Spring fornisce una posizione centralizzata per rendere i dati di configurazione disponibili per più applicazioni. Questo articolo illustra come connettere un'app ospitata in App Contenitore di Azure a un Config Server Java per Spring.
Il componente Config Server per Spring Java usa un repository GitHub come origine per le impostazioni di configurazione. I valori di configurazione vengono resi disponibili per l'app contenitore tramite un'associazione tra il componente e l'app contenitore. Man mano che i valori cambiano nel server di configurazione, passano automaticamente all'applicazione, senza dover ricompilare o ridistribuire l'applicazione.
Questa esercitazione apprendi come:
- Creare un componente Config Server per Spring Java
- Associare il Config Server per Spring all'app contenitore
- Osservare i valori di configurazione prima e dopo la connessione del config server all'applicazione
- Crittografare e decrittografare i valori di configurazione con una chiave simmetrica
Importante
Questa esercitazione usa i servizi che possono influire sulla fattura di Azure. Se si decide di seguire la procedura dettagliata, assicurarsi di eliminare le risorse in primo piano in questo articolo per evitare la fatturazione imprevista.
Prerequisiti
Per completare il progetto, sono necessari gli elementi seguenti:
Requisito | Istruzioni |
---|---|
Account di Azure | È necessaria una sottoscrizione attiva. Se non hai un account, puoi crearlo gratuitamente. |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Considerazioni
Quando si esegue Config Server per Spring in App contenitore di Azure, si tengano presenti i dettagli seguenti:
Articolo | Spiegazione |
---|---|
Scope | Il Config Server per Spring viene eseguito nello stesso ambiente dell'app contenitore connessa. |
Ridimensionamento | Per mantenere una singola origine di verità, il Config Server per Spring non viene ridimensionato. Le proprietà di ridimensionamento minReplicas e maxReplicas sono entrambe impostate su 1 . |
Risorse | L'allocazione delle risorse del contenitore per Config Server per Spring è fissa, il numero di core CPU è 0,5 e la dimensione della memoria è 1Gi. |
Prezzi | La fatturazione di Config Server per Spring rientra nei prezzi basati sul consumo. Le risorse utilizzate dai componenti Java gestiti vengono fatturate in base alle tariffe attive/inattive. È possibile eliminare i componenti che non sono più in uso per interrompere la fatturazione. |
Binding | L'app contenitore si connette a un server di configurazione per Spring tramite un'associazione. L’associazioni inserisce le configurazioni nelle variabili di ambiente dell'app contenitore. Dopo aver stabilito un'associazione, l'app contenitore può leggere i valori di configurazione dalle variabili di ambiente. |
Attrezzaggio
Prima di iniziare a lavorare con Config Server per Spring, occorre innanzitutto creare le risorse necessarie.
Eseguire i comandi seguenti per creare il gruppo di risorse e l'ambiente delle App contenitore.
Creare le variabili per supportare la configurazione dell'applicazione. Questi valori vengono forniti ai fini dello svolgimento di questa lezione.
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=configserver export APP_NAME=my-config-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest" export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
Variabile Descrizione LOCATION
Posizione dell'area di Azure in cui si creano l'app contenitore e il componente Java. ENVIRONMENT
Nome dell'ambiente di App contenitore di Azure per l'applicazione demo. RESOURCE_GROUP
Nome del gruppo di risorse di Azure per l'applicazione demo. JAVA_COMPONENT_NAME
Nome del componente Java creato per l'app contenitore. In questo caso, creare un componente Java di Config Server per Spring. IMAGE
Immagine del contenitore usata nell'app contenitore. URI
È possibile sostituire l'URI con l'URL del repository Git, se è privato, aggiungere le configurazioni di autenticazione correlate, ad esempio spring.cloud.config.server.git.username
espring.cloud.config.server.git.password
.Accedere ad Azure con l'interfaccia della riga di comando di Azure.
az login
Creare un gruppo di risorse.
az group create --name $RESOURCE_GROUP --location $LOCATION
Creare l'ambiente nelle app contenitore.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Questo ambiente viene usato per ospitare sia il componente Config Server per Spring java che l'app contenitore.
Creare il componente Config Server per Spring Java
Ora che si dispone di un ambiente App contenitore, è possibile creare l'app contenitore e associarla a un componente Config Server per Spring java. Quando si associa l'app contenitore, i valori di configurazione vengono sincronizzati automaticamente dal componente del server di configurazione all'applicazione.
Creare il componente Config Server per Spring Java.
az containerapp env java-component config-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1 \ --configuration spring.cloud.config.server.git.uri=$URI
Aggiornare il componente Config Server per Spring Java.
az containerapp env java-component config-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2 \ --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
In questo caso si indica al componente dove trovare il repository che contiene le informazioni di configurazione tramite la proprietà
uri
. La proprietàrefresh-rate
indica alle app contenitore la frequenza con cui verificare la presenza di modifiche nel repository Git.
Associare l'app contenitore al componente Java di Config Server per Spring
Creare l'app contenitore che utilizza i dati di configurazione.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --query properties.configuration.ingress.fqdn
Questo comando restituisce l'URL dell'app contenitore che utilizza i dati di configurazione. Copiare l'URL in un editor di testo in modo da poterlo usare in un passaggio successivo.
Se si visita l'app in un browser, il valore
connectTimeout
restituito è il valore predefinito di0
.Eseguire l'associazione al Config Server per Spring.
Dopo aver creato l'app contenitore e il server di configurazione, è possibile associarli al comando
update
all'app contenitore.az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $JAVA_COMPONENT_NAME
Il parametro
--bind $JAVA_COMPONENT_NAME
crea il collegamento tra l'app contenitore e il componente di configurazione.
Dopo aver associato l'app contenitore e il componente Config Server, le modifiche alla configurazione vengono sincronizzate automaticamente con l'app contenitore.
Quando si visita nuovamente l'URL dell'app, il valore di connectTimeout
è ora 10000
. Questo valore proviene dal repository Git impostato nella variabile $URI
originariamente impostata come origine del componente di configurazione. In particolare, questo valore viene disegnato dalla proprietà connectionTimeout
nel file di application.yml del repository.
La richiesta di associazione inserisce l'impostazione di configurazione nell'applicazione come variabili di ambiente. Questi valori sono ora disponibili per il codice dell'applicazione da usare per il recupero delle impostazioni di configurazione dal server di configurazione.
In questo caso, le variabili di ambiente seguenti sono disponibili per l'applicazione:
SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI
Se si vuole personalizzare il proprio SPRING_CONFIG_IMPORT
, è possibile fare riferimento alla variabile di ambiente SPRING_CLOUD_CONFIG_COMPONENT_URI
, ad esempio, è possibile eseguire l'override tramite argomenti della riga di comando, ad esempio Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true
.
È anche possibile rimuovere un'associazione dall'applicazione.
(Facoltativo) Annullare l'associazione dell'app contenitore dal componente Java Server Config per Spring
Per rimuovere un'associazione da un'app contenitore, usare l'opzione --unbind
.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Quando si visita nuovamente l'URL dell'app, il valore di connectTimeout
cambia in 0
.
Pulire le risorse
Le risorse create in questa esercitazione hanno effetto sulla fattura di Azure. Se non si intende usare questi servizi a lungo termine, eseguire il comando seguente per rimuovere tutti gli elementi creati in questa esercitazione.
az group delete \
--resource-group $RESOURCE_GROUP