Zelfstudie: 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.
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.
Gerelateerde inhoud
De beheerde beheerder voor Spring integreren met Eureka Server voor Spring