Verbinding maken met een beheerde beheerder voor Spring in Azure Container Apps
Het beheerde onderdeel Beheerder voor Spring biedt een beheerinterface voor Spring Boot-webtoepassingen die actuatoreindpunten beschikbaar maken. Als beheerd onderdeel in Azure Container Apps kunt u uw container-app eenvoudig binden aan Admin for Spring voor naadloze integratie en beheer.
In deze zelfstudie leert u hoe u een onderdeel Beheerder voor Spring Java maakt en verbindt met uw container-app, zodat u uw Spring-toepassingen eenvoudig kunt bewaken en beheren.
In deze zelfstudie leert u het volgende:
- Maak een beheerder voor spring Java-onderdeel.
- Bind uw container-app aan een spring Java-onderdeel.
Als u Admin for Spring wilt integreren met Eureka Server voor Spring, raadpleegt u In plaats daarvan Admin for Spring integreren met Eureka Server voor Spring in Container Apps .
Belangrijk
In deze zelfstudie worden services gebruikt die van invloed kunnen zijn op uw Azure-factuur. Als u besluit om mee te doen, moet u ervoor zorgen dat u de resources die in dit artikel worden aanbevolen, verwijdert om onverwachte facturering te voorkomen.
Vereisten
- Een Azure-account met een actief abonnement. Als u er nog geen hebt, kunt u er gratis een maken.
- Azure CLI.
Overwegingen
Wanneer u het onderdeel Admin for Spring uitvoert in Container Apps, moet u rekening houden met de volgende details:
Artikel | Uitleg |
---|---|
Bereik | Onderdelen worden uitgevoerd in dezelfde omgeving als de verbonden container-app. |
Schalen | Het onderdeel kan niet worden geschaald. De schaaleigenschappen minReplicas en maxReplicas beide zijn ingesteld op 1 . |
Resources | De toewijzing van containerresources voor onderdelen is opgelost. Het aantal CPU-kernen is 0,5 en de geheugengrootte is 1 Gi. |
Prijzen | Facturering van onderdelen valt onder de prijzen op basis van verbruik. Resources die door beheerde onderdelen worden verbruikt, worden gefactureerd tegen de actieve/niet-actieve tarieven. U kunt onderdelen verwijderen die niet meer worden gebruikt om de facturering te stoppen. |
Binding | Container-apps maken verbinding met een onderdeel via een binding. De bindingen injecteren configuraties in omgevingsvariabelen voor container-apps. Nadat een binding tot stand is gebracht, kan de container-app de configuratiewaarden van omgevingsvariabelen lezen en verbinding maken met het onderdeel. |
Instellingen
Voordat u met het onderdeel Admin for Spring gaat werken, moet u eerst de vereiste resources maken.
Met de volgende opdrachten kunt u uw resourcegroep en container-app-omgeving maken.
Maak variabelen ter ondersteuning van uw toepassingsconfiguratie. Deze waarden worden voor u verstrekt voor de doeleinden van deze les.
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"
Variabele Beschrijving LOCATION
De Azure-regiolocatie waar u uw container-app en Java-onderdeel maakt. ENVIRONMENT
De naam van de container-app-omgeving voor uw demotoepassing. RESOURCE_GROUP
De naam van de Azure-resourcegroep voor uw demotoepassing. JAVA_COMPONENT_NAME
De naam van het Java-onderdeel dat is gemaakt voor uw container-app. In dit geval maakt u een Beheer voor Spring Java-onderdeel. IMAGE
De containerinstallatiekopieën die in uw container-app worden gebruikt. Meld u aan bij Azure met de Azure CLI.
az login
Maak een resourcegroep.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Wanneer u de
--query
parameter gebruikt, wordt het antwoord gefilterd op een eenvoudig succes- of foutbericht.Maak uw container-app-omgeving.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Het onderdeel gebruiken
Nu u een bestaande omgeving hebt, kunt u uw container-app maken en deze verbinden met een Java-onderdeelexemplaren van een Beheer voor Spring-onderdeel.
Maak het onderdeel Admin voor 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
Werk het onderdeel Admin for Spring Java bij.
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
Uw container-app verbinden met het onderdeel Admin for Spring Java
Maak de container-app en bind deze aan de beheerder voor Spring-onderdeel.
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
De bindingsbewerking verbindt de container-app met het onderdeel Admin for Spring Java. De container-app kan nu de configuratiewaarden lezen uit omgevingsvariabelen, met name de SPRING_BOOT_ADMIN_CLIENT_URL
eigenschap, en verbinding maken met het onderdeel Admin for Spring.
De binding injecteert ook de volgende eigenschap:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Deze eigenschap geeft aan dat de client voor Spring-onderdelen de voorkeur moet geven aan het IP-adres van het exemplaar van de container-app wanneer u verbinding maakt met de beheerder voor Spring-server.
Optioneel: De container-app ontkoppelen vanuit het onderdeel Admin for Spring Java
Als u een binding uit een container-app wilt verwijderen, gebruikt u de --unbind
optie.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Het dashboard weergeven
Belangrijk
Als u het dashboard wilt weergeven, moet u ten minste de Microsoft.App/managedEnvironments/write
rol hebben toegewezen aan uw account in de beheerde omgevingsresource. U kunt de Owner
of Contributor
rol expliciet toewijzen aan de resource. U kunt ook de stappen volgen om een aangepaste roldefinitie te maken en deze toe te wijzen aan uw account.
Notitie
Het dashboard is niet beschikbaar in Azure China 21Vianet.
Maak de aangepaste roldefinitie.
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>"] }'
Zorg ervoor dat u de tijdelijke aanduidingen tussen de
<>
vierkante haken vervangt door uw waarden.Wijs de aangepaste rol toe aan uw account in de beheerde omgevingsresource.
Haal de resource-id van de beheerde omgeving op:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Wijs de rol toe aan uw account.
Voordat u deze opdracht uitvoert, vervangt u de tijdelijke aanduiding (zoals aangegeven door de
<>
vierkante haken) door de id of rolnaam van uw gebruiker of service-principal.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Notitie
De
<USER_OR_SERVICE_PRINCIPAL_ID>
waarde moet de identiteit zijn die u gebruikt voor toegang tot Azure Portal. De<ROLE_NAME>
waarde is de naam die u in stap 1 hebt toegewezen.Haal de URL van de beheerder voor Spring-dashboard op.
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
Met deze opdracht wordt de URL geretourneerd die u kunt gebruiken voor toegang tot het Spring-dashboard voor beheerders. Met het dashboard kunt u ook uw container-app zien, zoals wordt weergegeven in de volgende schermopname.
Resources opschonen
De resources die in deze zelfstudie zijn gemaakt, hebben een effect op uw Azure-factuur. Als u deze services niet op lange termijn gaat gebruiken, voert u de volgende opdracht uit om alles te verwijderen dat u in deze zelfstudie hebt gemaakt.
az group delete --resource-group $RESOURCE_GROUP
Dependency
Wanneer u het beheeronderdeel in uw eigen container-app gebruikt, moet u de volgende afhankelijkheid toevoegen aan uw pom.xml-bestand . Vervang het versienummer door de nieuwste versie die beschikbaar is in de Maven-opslagplaats.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Configureerbare eigenschappen
Vanaf Spring Boot 2 worden andere eindpunten dan health
en info
worden ze niet standaard weergegeven. U kunt ze beschikbaar maken door de volgende configuratie toe te voegen in het bestand application.properties .
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Toegestane configuratielijst voor uw beheerder voor Spring
De volgende lijst bevat informatie over de eigenschappen van het beheeronderdeel die u voor uw app kunt configureren. Zie Spring Boot Admin voor meer informatie.
Eigenschapsnaam | Beschrijving | Default value |
---|---|---|
spring.boot.admin.server.enabled |
Hiermee schakelt u de Spring Boot-beheerserver in. | true |
spring.boot.admin.context-path |
Het padvoorvoegsel waar de statische assets en API van de beheerserver worden geleverd. Ten opzichte van de Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Tijdsinterval in milliseconden om de status van exemplaren te controleren. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Levensduur van de status in milliseconden. De status wordt niet bijgewerkt zolang de laatste status niet is verlopen. | 10.000 ms |
spring.boot.admin.monitor.info-interval |
Tijdsinterval in milliseconden om de gegevens van exemplaren te controleren. | 1m |
spring.boot.admin.monitor.info-lifetime |
Levensduur van informatie in minuten. De gegevens worden niet bijgewerkt zolang de laatste informatie niet is verlopen. | 1m |
spring.boot.admin.monitor.default-timeout |
Standaardtime-out bij het indienen van aanvragen. Afzonderlijke waarden voor specifieke eindpunten kunnen worden overschreven met behulp van spring.boot.admin.monitor.timeout.* . |
10,000 |
spring.boot.admin.monitor.timeout.* |
Sleutel-waardeparen met de time-out per endpointId . |
Standaardwaarde default-timeout . |
spring.boot.admin.monitor.default-retries |
Standaardaantal nieuwe pogingen voor mislukte aanvragen. Aanvragen die gegevens wijzigen (PUT , POST , PATCH , ) DELETE worden nooit opnieuw geprobeerd. Afzonderlijke waarden voor specifieke eindpunten kunnen worden overschreven met behulp van spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Sleutel-waardeparen met het aantal nieuwe pogingen per endpointId . Aanvragen die gegevens wijzigen (PUT , POST , PATCH , ) DELETE worden nooit opnieuw geprobeerd. |
Standaardwaarde default-retries . |
spring.boot.admin.metadata-keys-to-sanitize |
Metagegevenswaarden voor de sleutels die overeenkomen met deze regex-patronen die worden gebruikt voor het opschonen van alle JSON-uitvoer. Vanaf Spring Boot 3 worden alle actuatorwaarden standaard gemaskeerd. Zie Gevoelige waarden opschonen voor meer informatie over het configureren van het niet-sanitisatieproces. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Voor Spring Boot 1.x-clienttoepassingen voert Spring Boot Admin tests uit voor de opgegeven eindpunten met behulp van een OPTIONS aanvraag. Als het pad verschilt van de id, kunt u deze waarde opgeven als id:path , health:ping bijvoorbeeld . |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
Headers die niet worden doorgestuurd bij het indienen van aanvragen aan clients. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
De weergegeven paginatitel. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Pollingduur in milliseconden om nieuwe cachegegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Pollingduur in milliseconden om nieuwe gegevensbrongegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Pollingduur in milliseconden om nieuwe gc-gegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Pollingduur in milliseconden om nieuwe procesgegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Pollingduur in milliseconden om nieuwe geheugengegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Pollingduur in milliseconden om nieuwe threads-gegevens op te halen. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Pollingduur in milliseconden om nieuwe logboekbestandsgegevens op te halen. | 1000 |
spring.boot.admin.ui.enable-toasts |
Hiermee schakelt u pop-upmeldingen in of uit. | false |
spring.boot.admin.ui.title |
Titelwaarde van het venster van de browser. | "" |
spring.boot.admin.ui.brand |
HTML-code die wordt weergegeven in de navigatiekoptekst en standaard ingesteld op het Spring Boot Admin-label. Standaard wordt het Spring Boot Admin-logo gevolgd door de naam. | "" |
management.scheme |
Waarde die wordt vervangen door de service-URL die wordt gebruikt voor toegang tot de eindpunten van de actuator. | |
management.address |
Waarde die wordt vervangen door de service-URL die wordt gebruikt voor toegang tot de eindpunten van de actuator. | |
management.port |
Waarde die wordt vervangen door de service-URL die wordt gebruikt voor toegang tot de eindpunten van de actuator. | |
management.context-path |
Waarde die wordt toegevoegd aan de service-URL die wordt gebruikt voor toegang tot de eindpunten van de actuator. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Waarde die wordt toegevoegd aan de service-URL die wordt gebruikt voor statuscontrole. Genegeerd door de EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Hiermee schakelt u de DiscoveryClient ondersteuning voor de beheerserver in. |
true |
spring.boot.admin.discovery.converter.management-context-path |
De waarde die wordt toegevoegd aan de service-url gedetecteerde service wanneer de management-url waarde wordt geconverteerd door de DefaultServiceInstanceConverter . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
De waarde die wordt toegevoegd aan de management-url gedetecteerde service wanneer de health-url waarde wordt geconverteerd door de DefaultServiceInstanceConverter . |
"health" |
spring.boot.admin.discovery.ignored-services |
Services die worden genegeerd bij het gebruik van detectie en niet zijn geregistreerd als toepassing. Ondersteunt eenvoudige patronen zoals "foo*" , "*bar" en "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Services die zijn opgenomen bij het gebruik van detectie en geregistreerd als toepassing. Ondersteunt eenvoudige patronen zoals "foo*" , "*bar" en "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Services die worden genegeerd als ze ten minste één metagegevensitem bevatten dat overeenkomt met patronen in deze lijst. Ondersteunt patronen zoals "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
Services die zijn opgenomen als ze ten minste één metagegevensitem bevatten dat overeenkomt met patronen in de lijst. Ondersteunt patronen zoals "discoverable=true" . |
Algemene configuraties
- Gerelateerde configuraties voor logboekregistratie:
- logging.level.*
- logging.group.*
- Alle andere configuraties onder
logging.*
naamruimte moeten verboden zijn. Het schrijven van logboekbestanden met behulp vanlogging.file
moet bijvoorbeeld verboden zijn.
Beperkingen
- Het Spring Boot-beheerdashboard is niet beschikbaar in Azure China 21Vianet.
Gerelateerde inhoud
De beheerde beheerder voor Spring integreren met Eureka Server voor Spring