Delen via


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.

Schermopname van een overzicht van het dashboard Beheerder voor Spring Insights.

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.

  1. 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.
  2. Meld u aan bij Azure met de Azure CLI.

    az login
    
  3. 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.

  4. 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.

  1. 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
    
  2. 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

  1. 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.

  1. 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.

  2. 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)
    
  3. 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.

  4. 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.

    Schermopname van het overzicht van het dashboard Beheerder voor Spring.

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, ) DELETEworden 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, ) DELETEworden 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:pingbijvoorbeeld . "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 van logging.file moet bijvoorbeeld verboden zijn.

De beheerde beheerder voor Spring integreren met Eureka Server voor Spring