Esercitazione: Connettersi a un amministratore gestito per Spring in App contenitore di Azure
Il componente Amministratore per Spring gestito offre un'interfaccia amministrativa per le applicazioni Web Spring Boot che espongono endpoint dell'attuatore. Come componente gestito in App contenitore di Azure, è possibile associare facilmente l'app contenitore ad Amministratore per Spring per una perfetta integrazione e gestione.
Questa esercitazione illustra come creare un componente Admin for Spring Java e associarlo all'app contenitore in modo da poter monitorare e gestire facilmente le applicazioni Spring.
In questa esercitazione apprenderai a:
- Creare un componente Admin per Spring Java.
- Associare l'app contenitore a un componente Admin per Spring Java.
Se si vuole integrare Admin per Spring con Eureka Server for Spring, vedere In alternativa, integrare Admin for Spring con Eureka Server for Spring in Container Apps .
Importante
Questa esercitazione usa i servizi che possono influire sulla fattura di Azure. Se si decide di seguire questa procedura, assicurarsi di eliminare le risorse in primo piano in questo articolo per evitare la fatturazione imprevista.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Se non ne hai già uno, puoi crearne uno gratuitamente.
- Interfaccia della riga di comando di Azure.
Considerazioni
Quando si esegue il componente Admin for Spring in App contenitore, tenere presenti i dettagli seguenti:
Articolo | Spiegazione |
---|---|
Ambito | I componenti vengono eseguiti nello stesso ambiente dell'app contenitore connessa. |
Scalabilità | Il componente non può essere ridimensionato. Le proprietà di ridimensionamento minReplicas e maxReplicas sono entrambe impostate su 1 . |
Risorse | L'allocazione delle risorse del contenitore per i componenti è fissa. Il numero di core CPU è 0,5 e la dimensione della memoria è 1 Gi. |
Prezzi | La fatturazione dei componenti rientra nei prezzi basati sul consumo. Le risorse utilizzate dai componenti gestiti vengono fatturate in base alle tariffe attive/inattive. È possibile eliminare i componenti che non sono più in uso per interrompere la fatturazione. |
Binding | Le app contenitore si connettono a un componente tramite un'associazione. Le associazioni inseriscsono 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 e connettersi al componente. |
Attrezzaggio
Prima di iniziare a usare il componente Admin for Spring, è prima necessario creare le risorse necessarie.
I comandi seguenti consentono di creare il gruppo di risorse e l'ambiente dell'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-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
Variabile Descrizione LOCATION
Posizione dell'area di Azure in cui si creano l'app contenitore e il componente Java. ENVIRONMENT
Nome dell'ambiente dell'app contenitore 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, si crea un componente Amministratore per Spring Java. IMAGE
Immagine del contenitore usata nell'app contenitore. 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 \ --query "properties.provisioningState"
Quando si usa il
--query
parametro , la risposta filtra fino a un semplice messaggio di esito positivo o negativo.Creare l'ambiente dell'app contenitore.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Usare il componente
Ora che si dispone di un ambiente esistente, è possibile creare l'app contenitore e associarla a un'istanza del componente Java di un componente Admin per Spring.
Creare il componente Amministratore per Spring Java.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1
Aggiornare il componente Java Amministrazione per Spring.
az containerapp env java-component admin-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
Associare l'app contenitore al componente Java Amministrazione per Spring
Creare l'app contenitore e associarla al componente Admin for Spring.
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 \ --bind $JAVA_COMPONENT_NAME
L'operazione di associazione associa l'app contenitore al componente Java Amministrazione per Spring. L'app contenitore può ora leggere i valori di configurazione dalle variabili di ambiente, principalmente la SPRING_BOOT_ADMIN_CLIENT_URL
proprietà e connettersi al componente Admin per Spring.
L'associazione inserisce anche la proprietà seguente:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Questa proprietà indica che il client del componente Admin per Spring deve preferire l'indirizzo IP dell'istanza dell'app contenitore quando ci si connette all'amministratore per spring server.
Facoltativo: annullare l'associazione dell'app contenitore dal componente Admin for Spring Java
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
Visualizzare il dashboard
Importante
Per visualizzare il dashboard, è necessario che all'account sia assegnato almeno il ruolo Microsoft.App/managedEnvironments/write
nella risorsa ambiente gestita. È possibile assegnare in modo esplicito il Owner
ruolo o Contributor
nella risorsa. È anche possibile seguire la procedura per creare una definizione di ruolo personalizzata e assegnarla all'account.
Creare di una definizione del ruolo personalizzata.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
Assicurarsi di sostituire i segnaposto tra le parentesi
<>
con i valori.Assegnare il ruolo personalizzato all'account nella risorsa dell'ambiente gestito.
Ottenere l'ID risorsa dell'ambiente gestito:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Assegnare il ruolo all'account.
Prima di eseguire questo comando, sostituire il segnaposto, come indicato dalle
<>
parentesi quadre, con l'ID utente o l'entità servizio o il nome del ruolo.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Nota
Il
<USER_OR_SERVICE_PRINCIPAL_ID>
valore deve essere l'identità usata per accedere al portale di Azure. Il<ROLE_NAME>
valore è il nome assegnato nel passaggio 1.Ottenere l'URL del dashboard di Amministrazione per Spring.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Questo comando restituisce l'URL che è possibile usare per accedere al dashboard Admin for Spring. Con il dashboard è anche possibile visualizzare l'app contenitore, come illustrato nello screenshot seguente.
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
Dipendenza
Quando si usa il componente amministratore nella propria app contenitore, è necessario aggiungere la dipendenza seguente nel file pom.xml . Sostituire il numero di versione con la versione più recente disponibile nel repository Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Proprietà configurabili
A partire da Spring Boot 2, gli endpoint diversi da health
e info
non sono esposti per impostazione predefinita. È possibile esporli aggiungendo la configurazione seguente nel file application.properties .
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Elenco di configurazione consentito per il componente Amministrazione per Spring
L'elenco seguente illustra in dettaglio le proprietà del componente Amministrazione che è possibile configurare per l'app. Per altre informazioni, vedere Spring Boot Admin.
Nome proprietà | Descrizione | Default value |
---|---|---|
spring.boot.admin.server.enabled |
Abilita Spring Boot Admin Server. | true |
spring.boot.admin.context-path |
Prefisso del percorso in cui vengono serviti gli asset statici e l'API del server di amministrazione. Relativo a Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Intervallo di tempo in millisecondi per controllare lo stato delle istanze. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Durata dello stato in millisecondi. Lo stato non viene aggiornato finché l'ultimo stato non è scaduto. | 10.000 ms |
spring.boot.admin.monitor.info-interval |
Intervallo di tempo in millisecondi per controllare le informazioni delle istanze. | 1m |
spring.boot.admin.monitor.info-lifetime |
Durata delle informazioni in minuti. Le informazioni non vengono aggiornate finché le ultime informazioni non sono scadute. | 1m |
spring.boot.admin.monitor.default-timeout |
Timeout predefinito durante l'invio di richieste. È possibile eseguire l'override di singoli valori per endpoint specifici usando spring.boot.admin.monitor.timeout.* . |
10,000 |
spring.boot.admin.monitor.timeout.* |
Coppie chiave-valore con il timeout per endpointId . |
Il valore predefinito è default-timeout . |
spring.boot.admin.monitor.default-retries |
Numero predefinito di tentativi per le richieste non riuscite. Per le richieste che modificano i dati (PUT , POST , PATCH , DELETE ) non vengono mai effettuati nuovi tentativi. È possibile eseguire l'override di singoli valori per endpoint specifici usando spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Coppie chiave-valore con il numero di tentativi per endpointId . Per le richieste che modificano i dati (PUT , POST , PATCH , DELETE ) non vengono mai effettuati nuovi tentativi. |
Il valore predefinito è default-retries . |
spring.boot.admin.metadata-keys-to-sanitize |
Valori dei metadati per le chiavi corrispondenti a questi modelli di espressione regolare usati per la purificazione in tutti gli output JSON. A partire da Spring Boot 3, tutti i valori dell'attuatore vengono mascherati per impostazione predefinita. Per altre informazioni su come configurare il processo di annullamento dell'approvazione, vedere Sanificare i valori sensibili. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Per le applicazioni client Spring Boot 1.x, Spring Boot Admin esegue il probe per gli endpoint specificati usando una OPTIONS richiesta. Se il percorso è diverso dall'ID, è possibile specificare questo valore come id:path , health:ping ad esempio . |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
Intestazioni da non inoltrare quando si inviano richieste ai client. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
Titolo della pagina visualizzato. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Durata del polling in millisecondi per recuperare nuovi dati della cache. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Durata del polling in millisecondi per recuperare nuovi dati dell'origine dati. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Durata del polling in millisecondi per recuperare nuovi dati di Garbage Collection. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Durata del polling in millisecondi per recuperare nuovi dati dei processi. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Durata del polling in millisecondi per recuperare nuovi dati di memoria. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Durata del polling in millisecondi per recuperare nuovi dati dei thread. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Durata del polling in millisecondi per recuperare nuovi dati dei file di log. | 1000 |
spring.boot.admin.ui.enable-toasts |
Abilita o disabilita le notifiche di tipo avviso popup. | false |
spring.boot.admin.ui.title |
Valore del titolo della finestra del browser. | "" |
spring.boot.admin.ui.brand |
Codice HTML di cui viene eseguito il rendering nell'intestazione di spostamento e che per impostazione predefinita assume il valore dell'etichetta di Spring Boot Admin. Per impostazione predefinita, il logo di amministrazione di Spring Boot è seguito dal nome. | "" |
management.scheme |
Valore sostituito nell'URL del servizio usato per accedere agli endpoint attuatore. | |
management.address |
Valore sostituito nell'URL del servizio usato per accedere agli endpoint attuatore. | |
management.port |
Valore sostituito nell'URL del servizio usato per accedere agli endpoint attuatore. | |
management.context-path |
Valore aggiunto all'URL del servizio usato per accedere agli endpoint attuatore. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Valore aggiunto all'URL del servizio usato per il controllo dell'integrità. Ignorato da EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Abilita il supporto di DiscoveryClient per Admin Server. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Valore aggiunto a service-url del servizio individuato quando il valore management-url viene convertito da DefaultServiceInstanceConverter . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Valore aggiunto a management-url del servizio individuato quando il valore health-url viene convertito da DefaultServiceInstanceConverter . |
"health" |
spring.boot.admin.discovery.ignored-services |
Servizi ignorati quando si usa l'individuazione e non registrati come applicazione. Supporta modelli semplici, ad "foo*" esempio , "*bar" e "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Servizi inclusi quando si usa l'individuazione e registrati come applicazione. Supporta modelli semplici, ad "foo*" esempio , "*bar" e "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
I servizi vengono ignorati se contengono almeno un elemento di metadati che corrisponde ai modelli in questo elenco. Supporta modelli come "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
I servizi vengono inclusi se contengono almeno un elemento di metadati che corrisponde ai modelli nell'elenco. Supporta modelli come "discoverable=true" . |
Configurazioni comuni
- Registrazione delle configurazioni correlate:
- logging.level.*
- logging.group.*
- Tutte le altre configurazioni nello spazio dei nomi
logging.*
non devono essere consentite. Ad esempio, la scrittura di file di log tramitelogging.file
non deve essere consentita.
Contenuto correlato
Integrare l'Amministrazione gestita per Spring con Eureka Server per Spring