Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il componente Amministrazione gestita per Spring offre un'interfaccia di amministrazione per le applicazioni Web Spring Boot che espongono endpoint 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 verranno illustrate le procedure per:
- Creare un componente Amministratore per Spring Java.
- Associare l'app contenitore a un componente Admin for Spring Java.
Se si vuole integrare Admin for Spring con Dhcp Server for Spring, vedere invece Integrare Admin for Spring con Dhcp 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 una 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:
| Elemento | Spiegazione |
|---|---|
| Scope | I componenti vengono eseguiti nello stesso ambiente dell'app contenitore connessa. |
| Scalabilità | I componenti non possono essere ridimensionati. 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 GB. |
| Prezzi | La fatturazione dei componenti rientra nei prezzi basati sul consumo. Le risorse utilizzate dai componenti gestiti vengono fatturate in base alle tariffe attive o inattive, a seconda dell'utilizzo delle risorse. È possibile eliminare i componenti che non sono più in uso per interrompere la fatturazione. |
| Associazione | Le app contenitore si connettono a un componente tramite un'associazione. Le associazioni inseriscono 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. |
Configurazione
Prima di iniziare a usare il componente Admin for Spring, è 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 LOCATIONPosizione dell'area di Azure in cui si creano l'app contenitore e il componente Java. ENVIRONMENTNome dell'ambiente dell'app contenitore per l'applicazione demo. RESOURCE_GROUPNome del gruppo di risorse di Azure per l'applicazione demo. JAVA_COMPONENT_NAMENome del componente Java creato per l'app contenitore. In questo caso, si crea un componente Amministratore per Spring Java. IMAGEImmagine del contenitore usata nell'app contenitore. Accedere ad Azure con l'interfaccia della riga di comando di Azure.
az loginCreare un gruppo di risorse.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"Quando si usa il parametro
--query, 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 for Spring.
Creare il componente Java Amministrazione per Spring.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1Aggiornare 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 connette l'app contenitore al componente Admin for Spring Java. L'app contenitore può ora leggere i valori di configurazione dalle variabili di ambiente, principalmente la proprietà SPRING_BOOT_ADMIN_CLIENT_URL, e connettersi al componente Admin for 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 usare l'indirizzo IP dell'istanza dell'app contenitore quando ci si connette al server Admin per Spring.
Facoltativo: Annullare l'associazione dell'app contenitore dal componente Java Amministrazione 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
Visualizzare il dashboard
Importante
Per visualizzare il dashboard, l'account deve avere almeno il ruolo Microsoft.App/managedEnvironments/write nella risorsa dell'ambiente gestito. È possibile assegnare in modo esplicito il ruolo Owner o Contributor nella risorsa. È anche possibile seguire la procedura per creare una definizione di ruolo personalizzata e assegnarla all'account.
Note
Il dashboard non è disponibile in Azure gestito da 21Vianet.
Creare la 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_IDNote
Il valore
<USER_OR_SERVICE_PRINCIPAL_ID>deve essere l'identità usata per accedere al portale di Azure. Il valore<ROLE_NAME>è 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 tsvQuesto 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 influiscono sulla fattura di Azure. Se non si prevede di 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 admin nella propria app contenitore, aggiungere la seguente dipendenza 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>
Note
Non è necessario aggiungere la dipendenza client di avvio dell'amministratore per Spring Boot Admin se si abilita l'agente Java nell'app contenitore eseguendo il comando seguente nell'interfaccia della riga di comando di Azure:
az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME
Proprietà configurabili
A partire da Spring Boot 2, gli endpoint diversi da health e info non vengono 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 | Valore predefinito |
|---|---|---|
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. Le richieste che modificano i dati (PUT, POST, PATCH, DELETE) non vengono ritentate. È 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. Le richieste che modificano i dati (PUT, POST, PATCH, DELETE) non vengono ritentate. |
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 della purificazione, vedere Purificare 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 indaga gli endpoint specificati usando una OPTIONS richiesta. Se il percorso è diverso dall'ID, è possibile specificare questo valore come id:path, ad esempio: health:ping. |
"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 Spring Boot Admin è 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 esempio "foo*", "*bar" e "foo*bar*". |
|
spring.boot.admin.discovery.services |
Servizi inclusi quando si usa l'individuazione e registrati come applicazione. Supporta modelli semplici, ad esempio "foo*", "*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.*
- Qualsiasi altra configurazione nello spazio dei nomi
logging.*. Ad esempio, non usarelogging.fileper scrivere file di log.
Limitazioni
- Il dashboard di amministrazione di Spring Boot non è disponibile in Azure gestito da 21Vianet.
Contenuti correlati
Integrare l'Amministrazione gestita per Spring con Eureka Server per Spring