Sdílet prostřednictvím


Kurz: Připojení ke spravovanému správci pro Spring v Azure Container Apps

Komponenta spravovaná správcem Spring nabízí rozhraní pro správu webových aplikací Spring Boot, které zpřístupňují koncové body poháněcího zařízení. Jako spravovaná komponenta ve službě Azure Container Apps můžete snadno svázat svou aplikaci kontejneru se správcem pro Spring pro bezproblémovou integraci a správu.

V tomto kurzu se dozvíte, jak vytvořit komponentu Admin for Spring Java a svázat ji s aplikací typu kontejner, abyste mohli snadno monitorovat a spravovat aplikace Spring.

Snímek obrazovky znázorňující přehled řídicího panelu Správce pro Spring Insights

V tomto kurzu se naučíte:

  • Vytvořte komponentu Admin for Spring Java.
  • Vytvořte vazbu aplikace kontejneru na komponentu Admin for Spring Java.

Pokud chcete integrovat správce pro Spring s Serverem Eureka pro Spring, přečtěte si místo toho téma Integrace správy pro Spring s Eureka Serverem pro Spring v kontejnerových aplikacích .

Důležité

V tomto kurzu se používají služby, které můžou ovlivnit fakturu za Azure. Pokud se rozhodnete postupovat podle pokynů, nezapomeňte odstranit prostředky doporučené v tomto článku, abyste se vyhnuli neočekávané fakturaci.

Požadavky

Důležité informace

Při spuštění komponenty Admin for Spring v Container Apps mějte na paměti následující podrobnosti:

Položka Vysvětlení
Obor Komponenty se spouštějí ve stejném prostředí jako připojená aplikace kontejneru.
Škálování Komponenta nemůže škálovat. Vlastnosti minReplicas škálování a maxReplicas obě jsou nastaveny na 1.
Zdroje informací Opravili jsme přidělení prostředků kontejneru pro komponenty. Počet jader procesoru je 0,5 a velikost paměti je 1 Gi.
Ceny Fakturace součástí spadá do cen založených na spotřebě. Prostředky spotřebované spravovanými komponentami se účtují podle tarifů aktivní/nečinné. K zastavení fakturace můžete odstranit komponenty, které se už nepoužívají.
Vazba Kontejnerové aplikace se připojují ke komponentě prostřednictvím vazby. Vazby vloží konfigurace do proměnných prostředí kontejneru aplikace. Po vytvoření vazby může aplikace kontejneru číst konfigurační hodnoty z proměnných prostředí a připojit se ke komponentě.

Nastavení

Než začnete pracovat s komponentou Admin for Spring, musíte nejprve vytvořit požadované prostředky.

Následující příkazy vám pomůžou vytvořit skupinu prostředků a prostředí kontejnerové aplikace.

  1. Vytvořte proměnné pro podporu konfigurace aplikace. Tyto hodnoty jsou k dispozici pro účely této lekce.

    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"
    
    Proměnná Popis
    LOCATION Umístění oblasti Azure, kam vytvoříte aplikaci kontejneru a komponentu Java.
    ENVIRONMENT Název prostředí aplikace kontejneru pro ukázkové aplikace.
    RESOURCE_GROUP Název skupiny prostředků Azure pro ukázkovou aplikaci
    JAVA_COMPONENT_NAME Název komponenty Java vytvořené pro vaši aplikaci kontejneru. V tomto případě vytvoříte komponentu Admin for Spring Java.
    IMAGE Image kontejneru použitá v aplikaci kontejneru.
  2. Přihlaste se k Azure pomocí Azure CLI.

    az login
    
  3. Vytvořte skupinu prostředků.

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

    Při použití parametru --query se odpověď vyfiltruje na jednoduchou zprávu o úspěchu nebo selhání.

  4. Vytvořte prostředí kontejnerové aplikace.

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

Použití komponenty

Teď, když máte existující prostředí, můžete vytvořit aplikaci kontejneru a svázat ji s instancí komponenty Java komponenty Admin for Spring.

  1. Vytvořte komponentu Admin for 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. Aktualizujte komponentu Admin for 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
    

Vytvoření vazby aplikace kontejneru k komponentě Admin for Spring Java

  1. Vytvořte aplikaci kontejneru a svážete ji s komponentou 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
    

Operace vazby sváže aplikaci kontejneru s komponentou Admin for Spring Java. Aplikace kontejneru teď může číst konfigurační hodnoty z proměnných prostředí, především SPRING_BOOT_ADMIN_CLIENT_URL z vlastnosti, a připojit se ke komponentě Admin for Spring.

Vazba také vloží následující vlastnost:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Tato vlastnost označuje, že klient komponenty Admin for Spring by měl při připojení k serveru Spring preferovat IP adresu instance aplikace kontejneru.

Volitelné: Zrušení vazby aplikace kontejneru z komponenty Admin for Spring Java

Pokud chcete odebrat vazbu z aplikace kontejneru, použijte tuto --unbind možnost.

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

Zobrazení řídicího panelu

Důležité

Pokud chcete zobrazit řídicí panel, musíte mít přiřazenou alespoň Microsoft.App/managedEnvironments/write roli k vašemu účtu ve spravovaném prostředku prostředí. K prostředku můžete explicitně přiřadit Owner roli Contributor . Můžete také podle kroků vytvořit vlastní definici role a přiřadit ji k vašemu účtu.

  1. Vytvořte vlastní definici role.

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

    Nezapomeňte nahradit zástupné symboly mezi <> hranatými závorkami hodnotami.

  2. Přiřaďte vlastní roli k vašemu účtu u prostředku spravovaného prostředí.

    Získejte ID prostředku spravovaného prostředí:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Přiřaďte roli k účtu.

    Před spuštěním tohoto příkazu nahraďte zástupný symbol ( jak je uvedeno <> v hranatých závorkách) názvem uživatele nebo instančního objektu.

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

    Poznámka:

    Hodnota <USER_OR_SERVICE_PRINCIPAL_ID> by měla být identita, kterou používáte pro přístup k webu Azure Portal. Hodnota <ROLE_NAME> je název, který jste přiřadili v kroku 1.

  4. Získejte adresu URL řídicího panelu Správce pro 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
    

    Tento příkaz vrátí adresu URL, kterou můžete použít pro přístup k řídicímu panelu Admin for Spring. Na řídicím panelu můžete také zobrazit aplikaci kontejneru, jak je znázorněno na následujícím snímku obrazovky.

    Snímek obrazovky znázorňující přehled řídicího panelu Správce pro Spring

Vyčištění prostředků

Prostředky vytvořené v tomto kurzu mají vliv na fakturu za Azure. Pokud tyto služby nebudete používat dlouhodobě, spuštěním následujícího příkazu odeberte vše, co jste vytvořili v tomto kurzu.

az group delete --resource-group $RESOURCE_GROUP

Dependency

Když použijete součást správce ve vlastní aplikaci kontejneru, musíte do souboru pom.xml přidat následující závislost. Nahraďte číslo verze nejnovější verzí dostupnou v úložišti Maven.

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

Konfigurovatelné vlastnosti

Počínaje verzí Spring Boot 2 jsou koncové body jiné než health a info nejsou ve výchozím nastavení zpřístupněny. Můžete je zveřejnit přidáním následující konfigurace do souboru application.properties .

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

Seznam povolených konfigurací pro správce pro Spring

Následující seznam obsahuje podrobnosti o vlastnostech součásti správce, které můžete pro aplikaci nakonfigurovat. Další informace naleznete v tématu Spring Boot Admin.

Název vlastnosti Popis Default value
spring.boot.admin.server.enabled Povolí server správy Spring Boot. true
spring.boot.admin.context-path Předpona cesty, kde se obsluhují statické prostředky serveru pro správu a rozhraní API. Vzhledem k dispečer-Servletu.
spring.boot.admin.monitor.status-interval Časový interval v milisekundách pro kontrolu stavu instancí 10,000ms
spring.boot.admin.monitor.status-lifetime Životnost stavu v milisekundách Stav se neaktualizuje, dokud nevypršela platnost posledního stavu. 10 000 ms
spring.boot.admin.monitor.info-interval Časový interval v milisekundách pro kontrolu informací o instancích 1m
spring.boot.admin.monitor.info-lifetime Doba života informací v minutách. Informace se neaktualizují, pokud nevypršela platnost posledních informací. 1m
spring.boot.admin.monitor.default-timeout Výchozí časový limit při provádění požadavků Jednotlivé hodnoty pro konkrétní koncové body je možné přepsat pomocí spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* Páry klíč-hodnota s časovým limitem podle endpointId. Výchozí hodnota je default-timeout hodnota.
spring.boot.admin.monitor.default-retries Výchozí počet opakování neúspěšných požadavků Žádosti, které upravují data (PUT, POST, PATCH, DELETE) se nikdy opakovat. Jednotlivé hodnoty pro konkrétní koncové body je možné přepsat pomocí spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* Páry klíč-hodnota s počtem opakování za sekundu endpointId. Žádosti, které upravují data (PUT, POST, PATCH, DELETE) se nikdy opakovat. Výchozí hodnota je default-retries hodnota.
spring.boot.admin.metadata-keys-to-sanitize Hodnoty metadat pro klíče odpovídající těmto vzorům regulárních výrazů, které se používají k sanitizaci ve všech výstupech JSON. Počínaje verzí Spring Boot 3 jsou všechny hodnoty poháněcího zařízení ve výchozím nastavení maskovány. Další informace o konfiguraci procesu nesanitizace naleznete v tématu Sanitize Sensitive Values. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints V případě klientských aplikací Spring Boot 1.x sondy Spring Boot Admin pro zadané koncové body pomocí OPTIONS požadavku. Pokud se cesta liší od ID, můžete tuto hodnotu id:path zadat například 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 Hlavičky, které se nemají předávat při odesílání požadavků klientům. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title Zobrazený název stránky. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Doba trvání dotazování v milisekundách pro načtení nových dat mezipaměti 2500
spring.boot.admin.ui.poll-timer.datasource Doba trvání dotazování v milisekundách pro načtení nových dat zdroje dat 2500
spring.boot.admin.ui.poll-timer.gc Doba dotazování v milisekundách pro načtení nových dat gc. 2500
spring.boot.admin.ui.poll-timer.process Doba trvání dotazování v milisekundách pro načtení nových dat procesu 2500
spring.boot.admin.ui.poll-timer.memory Doba dotazování v milisekundách pro načtení nových dat paměti 2500
spring.boot.admin.ui.poll-timer.threads Doba trvání dotazování v milisekundách pro načtení dat nových vláken 2500
spring.boot.admin.ui.poll-timer.logfile Doba trvání dotazování v milisekundách pro načtení dat nového souboru protokolu 1000
spring.boot.admin.ui.enable-toasts Povolí nebo zakáže informační zprávy. false
spring.boot.admin.ui.title Hodnota názvu okna prohlížeče ""
spring.boot.admin.ui.brand Kód HTML vykreslený v navigačním záhlaví a ve výchozím nastavení se zobrazí popisek Spring Boot Admin. Ve výchozím nastavení následuje logo Spring Boot Admin a jeho název. ""
management.scheme Hodnota, která je nahrazena adresou URL služby použitou pro přístup ke koncovým bodům poháněcího zařízení.
management.address Hodnota, která je nahrazena adresou URL služby použitou pro přístup ke koncovým bodům poháněcího zařízení.
management.port Hodnota, která je nahrazena adresou URL služby použitou pro přístup ke koncovým bodům poháněcího zařízení.
management.context-path Hodnota připojená k adrese URL služby, která se používá pro přístup ke koncovým bodům poháněcího zařízení. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Hodnota, která je připojena k adrese URL služby použité pro kontrolu stavu. Ignorováno .EurekaServiceInstanceConverter ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled DiscoveryClient Povolí podporu serveru pro správu. true
spring.boot.admin.discovery.converter.management-context-path Hodnota, která je připojena ke service-url zjištěné službě při management-url převodu DefaultServiceInstanceConverterhodnoty pomocí . /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Hodnota, která je připojena ke management-url zjištěné službě při health-url převodu DefaultServiceInstanceConverterhodnoty pomocí . "health"
spring.boot.admin.discovery.ignored-services Služby, které jsou ignorovány při použití zjišťování a nejsou registrovány jako aplikace. Podporuje jednoduché vzory, jako "foo*"je , "*bar"a "foo*bar*".
spring.boot.admin.discovery.services Služby zahrnuté při používání zjišťování a registrované jako aplikace. Podporuje jednoduché vzory, jako "foo*"je , "*bar"a "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata Služby se ignorují, pokud obsahují aspoň jednu položku metadat, která odpovídá vzorům v tomto seznamu. Podporuje vzory, jako "discoverable=false"je .
spring.boot.admin.discovery.instances-metadata Služby zahrnuté, pokud obsahují aspoň jednu položku metadat, která odpovídá vzorům v seznamu. Podporuje vzory, jako "discoverable=true"je .

Běžné konfigurace

  • Protokolování souvisejících konfigurací:
    • logging.level.*
    • logging.group.*
    • Všechny ostatní konfigurace v oboru logging.* názvů by měly být zakázané. Například zápis souborů protokolu pomocí by logging.file měl být zakázán.

Integrace spravovaného správce pro Spring se serverem Eureka for Spring