Dela via


Självstudie: Ansluta till en hanterad administratör för Spring i Azure Container Apps

Den hanterade komponenten Admin för Spring erbjuder ett administrativt gränssnitt för Spring Boot-webbprogram som exponerar aktuatorslutpunkter. Som en hanterad komponent i Azure Container Apps kan du enkelt binda din containerapp till Admin for Spring för sömlös integrering och hantering.

Den här självstudien visar hur du skapar en Admin för Spring Java-komponent och binder den till din containerapp så att du enkelt kan övervaka och hantera dina Spring-program.

Skärmbild som visar en översikt över instrumentpanelen Admin för Spring Insights.

I den här självstudien lär du dig att:

  • Skapa en Administratör för Spring Java-komponent.
  • Binda din containerapp till en Administratör för Spring Java-komponent.

Om du vill integrera Admin för Spring med Eureka Server for Spring kan du läsa Integrera administratör för Spring med Eureka Server for Spring i Container Apps i stället.

Viktigt!

I den här självstudien används tjänster som kan påverka din Azure-faktura. Om du bestämmer dig för att följa med ska du ta bort resurserna i den här artikeln för att undvika oväntad fakturering.

Förutsättningar

Att tänka på

När du kör komponenten Admin för Spring i Container Apps bör du vara medveten om följande information:

Artikel Förklaring
Omfattning Komponenter körs i samma miljö som den anslutna containerappen.
Skalning Komponenten kan inte skalas. Skalningsegenskaperna minReplicas och maxReplicas är båda inställda på 1.
Resurser Resursallokeringen av containrar för komponenter är fast. Antalet CPU-kärnor är 0,5 och minnesstorleken är 1 Gi.
Prissättning Komponentfakturering faller under förbrukningsbaserad prissättning. Resurser som förbrukas av hanterade komponenter debiteras enligt aktiva/inaktiva priser. Du kan ta bort komponenter som inte längre används för att stoppa faktureringen.
Bindning Containerappar ansluter till en komponent via en bindning. Bindningarna matar in konfigurationer i miljövariabler för containerappar. När en bindning har upprättats kan containerappen läsa konfigurationsvärdena från miljövariabler och ansluta till komponenten.

Ställ in

Innan du börjar arbeta med komponenten Admin för Spring måste du först skapa nödvändiga resurser.

Följande kommandon hjälper dig att skapa din resursgrupp och containerappmiljö.

  1. Skapa variabler som stöd för programkonfigurationen. Dessa värden tillhandahålls för dig i den här lektionen.

    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"
    
    Olika beskrivning
    LOCATION Den Plats i Azure-regionen där du skapar din containerapp och Java-komponent.
    ENVIRONMENT Miljönamnet för containerappen för ditt demoprogram.
    RESOURCE_GROUP Namnet på Azure-resursgruppen för demoprogrammet.
    JAVA_COMPONENT_NAME Namnet på Java-komponenten som skapats för containerappen. I det här fallet skapar du en Administratör för Spring Java-komponent.
    IMAGE Containeravbildningen som används i containerappen.
  2. Logga in på Azure med Azure CLI.

    az login
    
  3. Skapa en resursgrupp.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    När du använder parametern --query filtreras svaret ned till ett enkelt meddelande om lyckad eller misslyckad åtgärd.

  4. Skapa din containerappmiljö.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Använda komponenten

Nu när du har en befintlig miljö kan du skapa din containerapp och binda den till en Java-komponentinstans av en Admin för Spring-komponent.

  1. Skapa komponenten Admin för 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. Uppdatera komponenten Admin för Spring Java.

    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
    

Binda containerappen till komponenten Admin för Spring Java

  1. Skapa containerappen och binda den till komponenten Admin för 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
    

Bindningsåtgärden binder containerappen till komponenten Admin för Spring Java. Containerappen kan nu läsa konfigurationsvärdena från miljövariabler, främst SPRING_BOOT_ADMIN_CLIENT_URL egenskapen, och ansluta till komponenten Admin för Spring.

Bindningen matar också in följande egenskap:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Den här egenskapen anger att administratören för Spring-komponentklienten bör föredra IP-adressen för containerappinstansen när du ansluter till Admin för Spring-servern.

Valfritt: Avbind din containerapp från komponenten Admin för Spring Java

Om du vill ta bort en bindning från en containerapp använder du alternativet --unbind .

az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Visa instrumentpanelen

Viktigt!

Om du vill visa instrumentpanelen måste du ha minst rollen Microsoft.App/managedEnvironments/write tilldelad till ditt konto på resursen för den hanterade miljön. Du kan uttryckligen tilldela resursen Owner eller Contributor rollen. Du kan också följa stegen för att skapa en anpassad rolldefinition och tilldela den till ditt konto.

  1. Skapa den anpassade rolldefinitionen.

    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>"]
    }'
    

    Ersätt platshållarna mellan <> hakparenteserna med dina värden.

  2. Tilldela den anpassade rollen till ditt konto på resursen för den hanterade miljön.

    Hämta resurs-ID för den hanterade miljön:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Tilldela rollen till ditt konto.

    Innan du kör det här kommandot ersätter du platshållaren , enligt hakparenteserna <> , med ditt användar- eller tjänsthuvudnamns-ID eller rollnamn.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    Kommentar

    Värdet <USER_OR_SERVICE_PRINCIPAL_ID> ska vara den identitet som du använder för att komma åt Azure Portal. Värdet <ROLE_NAME> är det namn som du tilldelade i steg 1.

  4. Hämta URL:en för instrumentpanelen Admin för 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
    

    Det här kommandot returnerar den URL som du kan använda för att komma åt instrumentpanelen Admin för Spring. Med instrumentpanelen kan du också se din containerapp, som du ser i följande skärmbild.

    Skärmbild som visar översikten över instrumentpanelen Admin för Spring.

Rensa resurser

De resurser som skapas i den här självstudien påverkar din Azure-faktura. Om du inte ska använda dessa tjänster på lång sikt kör du följande kommando för att ta bort allt du skapade i den här självstudien.

az group delete --resource-group $RESOURCE_GROUP

Dependency

När du använder administratörskomponenten i din egen containerapp måste du lägga till följande beroende i din pom.xml-fil . Ersätt versionsnumret med den senaste versionen som är tillgänglig på Maven-lagringsplatsen.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

Konfigurerbara egenskaper

Från och med Spring Boot 2 exponeras inte slutpunkter som standard.health info Du kan exponera dem genom att lägga till följande konfiguration i filen application.properties .

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

Lista över tillåtna konfigurationer för din administratör för Spring

Följande lista beskriver egenskaperna för administratörskomponenten som du kan konfigurera för din app. Mer information finns i Spring Boot Admin.

Egenskapsnamn beskrivning Standardvärde
spring.boot.admin.server.enabled Aktiverar Spring Boot Admin Server. true
spring.boot.admin.context-path Sökvägsprefixet där administratörsserverns statiska tillgångar och API hanteras. I förhållande till Dispatcher-Servlet.
spring.boot.admin.monitor.status-interval Tidsintervall i millisekunder för att kontrollera status för instanser. 10,000ms
spring.boot.admin.monitor.status-lifetime Livslängd för status i millisekunder. Statusen uppdateras inte så länge den senaste statusen inte har upphört att gälla. 10 000 ms
spring.boot.admin.monitor.info-interval Tidsintervall i millisekunder för att kontrollera information om instanser. 1m
spring.boot.admin.monitor.info-lifetime Livslängd för information på några minuter. Informationen uppdateras inte så länge den senaste informationen inte har upphört att gälla. 1m
spring.boot.admin.monitor.default-timeout Standardtimeout när begäranden görs. Enskilda värden för specifika slutpunkter kan åsidosättas med hjälp av spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* Nyckel/värde-par med tidsgränsen per endpointId. Standardvärdet default-timeout är.
spring.boot.admin.monitor.default-retries Standardantal återförsök för misslyckade begäranden. Begäranden som ändrar data (PUT, POST, PATCH, DELETE) görs aldrig igen. Enskilda värden för specifika slutpunkter kan åsidosättas med hjälp av spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* Nyckel/värde-par med antalet återförsök per endpointId. Begäranden som ändrar data (PUT, POST, PATCH, DELETE) görs aldrig igen. Standardvärdet default-retries är.
spring.boot.admin.metadata-keys-to-sanitize Metadatavärden för nycklar som matchar dessa regexmönster som används för att sanera i alla JSON-utdata. Från och med Spring Boot 3 maskeras alla ställdonsvärden som standard. Mer information om hur du konfigurerar osanitiseringsprocessen finns i Sanera känsliga värden. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints För Spring Boot 1.x-klientprogram avsöker Spring Boot Admin de angivna slutpunkterna med hjälp av en OPTIONS begäran. Om sökvägen skiljer sig från ID:t kan du ange det här värdet som id:path till exempel 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 Rubriker som inte vidarebefordras när begäranden görs till klienter. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title Sidrubriken som visas. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Avsökningstid i millisekunder för att hämta nya cachedata. 2500
spring.boot.admin.ui.poll-timer.datasource Avsökningstid i millisekunder för att hämta nya datakällans data. 2500
spring.boot.admin.ui.poll-timer.gc Avsökningstid i millisekunder för att hämta nya gc-data. 2500
spring.boot.admin.ui.poll-timer.process Avsökningstid i millisekunder för att hämta nya processdata. 2500
spring.boot.admin.ui.poll-timer.memory Avsökningstid i millisekunder för att hämta nya minnesdata. 2500
spring.boot.admin.ui.poll-timer.threads Avsökningstid i millisekunder för att hämta nya tråddata. 2500
spring.boot.admin.ui.poll-timer.logfile Avsökningstid i millisekunder för att hämta nya loggfildata. 1000
spring.boot.admin.ui.enable-toasts Aktiverar eller inaktiverar popup-meddelanden. false
spring.boot.admin.ui.title Webbläsarens fönsterrubrikvärde. ""
spring.boot.admin.ui.brand HTML-kod renderad i navigeringshuvudet och standardvärdet för spring boot-administratörsetiketten. Som standard följs Spring Boot Admin-logotypen av dess namn. ""
management.scheme Värde som ersätts i tjänst-URL:en som används för åtkomst till aktuatorslutpunkterna.
management.address Värde som ersätts i tjänst-URL:en som används för åtkomst till aktuatorslutpunkterna.
management.port Värde som ersätts i tjänst-URL:en som används för åtkomst till aktuatorslutpunkterna.
management.context-path Värde som läggs till i tjänst-URL:en som används för åtkomst till aktuatorslutpunkterna. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Värde som läggs till i tjänst-URL:en som används för hälsokontroll. Ignoreras av EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled DiscoveryClient Aktiverar stöd för administratörsservern. true
spring.boot.admin.discovery.converter.management-context-path Värde som läggs till i den service-url identifierade tjänsten när management-url värdet konverteras av DefaultServiceInstanceConverter. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Värde som läggs till i den management-url identifierade tjänsten när health-url värdet konverteras av DefaultServiceInstanceConverter. "health"
spring.boot.admin.discovery.ignored-services Tjänster som ignoreras när identifiering används och inte registreras som program. Stöder enkla mönster som "foo*", "*bar"och "foo*bar*".
spring.boot.admin.discovery.services Tjänster som ingår när du använder identifiering och registreras som program. Stöder enkla mönster som "foo*", "*bar"och "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata Tjänster ignoreras om de innehåller minst ett metadataobjekt som matchar mönster i den här listan. Stöder mönster som "discoverable=false".
spring.boot.admin.discovery.instances-metadata Tjänster som ingår om de innehåller minst ett metadataobjekt som matchar mönster i listan. Stöder mönster som "discoverable=true".

Vanliga konfigurationer

  • Loggningsrelaterade konfigurationer:
    • logging.level.*
    • logging.group.*
    • Alla andra konfigurationer under logging.* namnområdet bör förbjudas. Det bör till exempel vara förbjudet att skriva loggfiler med hjälp logging.file av.

Integrera den hanterade administratören för Spring med Eureka Server for Spring