Csatlakozás a Spring felügyelt rendszergazdájához az Azure Container Appsben
A Spring-felügyelet által felügyelt összetevő egy felügyeleti felületet biztosít a Spring Boot-webalkalmazásokhoz, amelyek aktuátorvégpontokat fednek le. Az Azure Container Apps felügyelt összetevőjeként egyszerűen kötheti a tárolóalkalmazást a Spring rendszergazdájához a zökkenőmentes integráció és felügyelet érdekében.
Ez az oktatóanyag bemutatja, hogyan hozhat létre rendszergazdai szerepkört a Spring Java-összetevőhöz, és hogyan kötheti azt a tárolóalkalmazáshoz, hogy könnyedén monitorozza és kezelje a Spring-alkalmazásokat.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy Rendszergazda a Spring Java-összetevőhöz.
- Kösse a tárolóalkalmazást egy Spring Java-összetevő rendszergazdájához.
Ha integrálni szeretné a Spring rendszergazdát az Eureka Server for Spring szolgáltatással, olvassa el a Spring rendszergazdájának integrálása a Spring-hez készült Eureka Serverrel a Container Appsben című témakört.
Fontos
Ez az oktatóanyag olyan szolgáltatásokat használ, amelyek hatással lehetnek az Azure-számlájára. Ha úgy dönt, hogy követi a műveletet, a váratlan számlázás elkerülése érdekében törölje a cikkben szereplő erőforrásokat.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha még nincs ilyenje, ingyenesen létrehozhat egyet.
- Azure parancssori felület (CLI).
Megfontolások
Amikor futtatja a Spring-rendszergazda összetevőt a Container Appsben, vegye figyelembe az alábbi részleteket:
Elem | Magyarázat |
---|---|
Hatókör | Az összetevők ugyanabban a környezetben futnak, mint a csatlakoztatott tárolóalkalmazás. |
Méretezés | Az összetevő nem skálázható. A skálázási tulajdonságok minReplicas és maxReplicas mindkettő a következőre 1 van állítva: . |
Források | Az összetevők tárolóerőforrás-lefoglalása ki van javítva. A processzormagok száma 0,5, a memória mérete pedig 1 Gi. |
Díjszabás | Az összetevők számlázása a használatalapú díjszabás alá tartozik. A felügyelt összetevők által felhasznált erőforrások számlázása az aktív/tétlen díjszabás szerint van kiszámlázva. Törölheti azokat az összetevőket, amelyek már nincsenek használatban a számlázás leállításához. |
Kötés | A tárolóalkalmazások kötéssel csatlakoznak egy összetevőhöz. A kötések konfigurációkat injektálnak a tárolóalkalmazás környezeti változóiba. A kötés létrehozása után a tárolóalkalmazás beolvassa a környezeti változók konfigurációs értékeit, és csatlakozhat az összetevőhöz. |
Beállítás
Mielőtt elkezdene dolgozni a Spring-rendszergazda összetevővel, először létre kell hoznia a szükséges erőforrásokat.
Az alábbi parancsok segítségével létrehozhatja az erőforráscsoportot és a tárolóalkalmazás-környezetet.
Hozzon létre változókat az alkalmazáskonfiguráció támogatásához. Ezeket az értékeket a lecke céljaira biztosítjuk.
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"
Változó Leírás LOCATION
Az Azure-régió helye, ahol a tárolóalkalmazást és a Java-összetevőt hozza létre. ENVIRONMENT
A bemutató alkalmazás tárolóalkalmazás-környezetének neve. RESOURCE_GROUP
A bemutató alkalmazás Azure-erőforráscsoportjának neve. JAVA_COMPONENT_NAME
A tárolóalkalmazáshoz létrehozott Java-összetevő neve. Ebben az esetben létre kell hoznia egy Rendszergazda a Spring Java-összetevőhöz. IMAGE
A tárolóalkalmazásban használt tárolórendszerkép. Jelentkezzen be az Azure-ba az Azure CLI-vel.
az login
Hozzon létre egy erőforráscsoportot.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
A paraméter használatakor a
--query
válasz egy egyszerű sikeres vagy sikertelen üzenetre szűr.Hozza létre a tárolóalkalmazás-környezetet.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Az összetevő használata
Most, hogy már rendelkezik egy meglévő környezettel, létrehozhatja a tárolóalkalmazást, és egy Rendszergazda for Spring-összetevő Java-összetevőpéldányához kötheti.
Hozza létre a Spring Java rendszergazdája összetevőt.
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
Frissítse a Spring Java rendszergazdája összetevőt.
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
A tárolóalkalmazás kötése a Spring Java rendszergazdájához összetevőhöz
Hozza létre a tárolóalkalmazást, és kösse hozzá a Spring-rendszergazda összetevőhöz.
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
A kötési művelet a tárolóalkalmazást a Spring Java felügyeleti összetevőjéhez köti. A tárolóalkalmazás mostantól beolvassa a környezeti változók konfigurációs értékeit, elsősorban a SPRING_BOOT_ADMIN_CLIENT_URL
tulajdonságot, és csatlakozhat a Spring-rendszergazda összetevőhöz.
A kötés a következő tulajdonságot is injektálja:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Ez a tulajdonság azt jelzi, hogy a Spring-összetevő rendszergazdájának előnyben kell részesítenie a tárolóalkalmazás-példány IP-címét, amikor a Spring-kiszolgáló rendszergazdájához csatlakozik.
Nem kötelező: A tárolóalkalmazás leválasztása a Spring Java felügyeleti összetevőjéről
Ha el szeretne távolítani egy kötést egy tárolóalkalmazásból, használja a --unbind
lehetőséget.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Az irányítópult megtekintése
Fontos
Az irányítópult megtekintéséhez legalább a Microsoft.App/managedEnvironments/write
fiókhoz hozzárendelt szerepkört kell hozzárendelnie a felügyelt környezeti erőforráshoz. Explicit módon hozzárendelheti az erőforráshoz a szerepkört vagy Contributor
a Owner
szerepkört. A lépéseket követve létrehozhat egy egyéni szerepkördefiníciót, és hozzárendelheti azt a fiókjához.
Feljegyzés
Az irányítópult nem érhető el az Azure China 21Vianetben.
Hozza létre az egyéni szerepkördefiníciót.
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>"] }'
Ügyeljen arra, hogy a zárójelek közötti
<>
helyőrzőket cserélje le az értékekre.Rendelje hozzá az egyéni szerepkört a fiókjához a felügyelt környezeti erőforráson.
A felügyelt környezet erőforrás-azonosítójának lekérése:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Rendelje hozzá a szerepkört a fiókjához.
A parancs futtatása előtt cserélje le a helyőrzőt – a
<>
zárójelek szerint – a felhasználó vagy szolgáltatásnév azonosítójára vagy szerepkörnevére.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Feljegyzés
Az
<USER_OR_SERVICE_PRINCIPAL_ID>
értéknek az Azure Portal eléréséhez használt identitásnak kell lennie. Az<ROLE_NAME>
érték az 1. lépésben hozzárendelt név.Kérje le a Rendszergazda a Springhez irányítópult URL-címét.
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
Ez a parancs azt az URL-címet adja vissza, amellyel hozzáférhet a Rendszergazda a Spring-irányítópulthoz. Az irányítópulton a tárolóalkalmazás is látható, ahogy az alábbi képernyőképen is látható.
Az erőforrások eltávolítása
Az oktatóanyagban létrehozott erőforrások hatással vannak az Azure-számlára. Ha nem fogja hosszú távon használni ezeket a szolgáltatásokat, futtassa az alábbi parancsot az oktatóanyagban létrehozott összes eltávolításához.
az group delete --resource-group $RESOURCE_GROUP
Dependency
Ha a felügyeleti összetevőt a saját tárolóalkalmazásában használja, a következő függőséget kell hozzáadnia a pom.xml fájlhoz. Cserélje le a verziószámot a Maven-adattárban elérhető legújabb verzióra.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Konfigurálható tulajdonságok
A Spring Boot 2-től kezdve a végpontok health
info
alapértelmezés szerint nem jelennek meg. Ezeket az alábbi konfigurációval teheti elérhetővé az application.properties fájlban.
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
A spring-hez készült rendszergazda engedélyezett konfigurációs listája
Az alábbi lista az alkalmazáshoz konfigurálható rendszergazdai összetevő tulajdonságait ismerteti. További információ: Spring Boot Admin.
Tulajdonság neve | Leírás | Alapértelmezett érték |
---|---|---|
spring.boot.admin.server.enabled |
Engedélyezi a Spring Boot felügyeleti kiszolgálót. | true |
spring.boot.admin.context-path |
Az elérési út előtagja, ahol a rendszergazdai kiszolgáló statikus objektumai és API-ja kiszolgálva van. A Dispatcher-Servlethez viszonyítva. | |
spring.boot.admin.monitor.status-interval |
A példányok állapotának ellenőrzéséhez ezredmásodpercben megadott időintervallum. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Az állapot élettartama ezredmásodpercben. Az állapot nem frissül, amíg az utolsó állapot nem járt le. | 10 000 ms |
spring.boot.admin.monitor.info-interval |
Időintervallum ezredmásodpercben a példányok adatainak ellenőrzéséhez. | 1m |
spring.boot.admin.monitor.info-lifetime |
Az információk élettartama percek alatt. Az adatok nem frissülnek, amíg az utolsó információ nem járt le. | 1m |
spring.boot.admin.monitor.default-timeout |
Alapértelmezett időtúllépés kérések esetén. Az egyes végpontok egyedi értékei felülírhatók a használatával spring.boot.admin.monitor.timeout.* . |
10,000 |
spring.boot.admin.monitor.timeout.* |
Kulcs-érték párok az időkorlát per endpointId . |
Alapértelmezett érték.default-timeout |
spring.boot.admin.monitor.default-retries |
A sikertelen kérések újrapróbálkozásának alapértelmezett száma. Az adatokat módosító kérések (PUT , POST , , PATCH DELETE ) soha nem lesznek újrapróbálkozottak. Az egyes végpontok egyedi értékei felülírhatók a használatával spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Kulcs-érték párok az újrapróbálkozások endpointId számával . Az adatokat módosító kérések (PUT , POST , , PATCH DELETE ) soha nem lesznek újrapróbálkozottak. |
Alapértelmezett érték.default-retries |
spring.boot.admin.metadata-keys-to-sanitize |
Az összes JSON-kimenetben a megtisztításhoz használt regex mintáknak megfelelő kulcsok metaadat-értékei. A Spring Boot 3-tól kezdve az összes működtető érték alapértelmezés szerint maszkolt. Az egyhangúsági folyamat konfigurálásáról további információt a Bizalmas értékek megtisztítása című témakörben talál. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
A Spring Boot 1.x-ügyfélalkalmazások esetében a Spring Boot rendszergazda egy OPTIONS kéréssel mintavételezi a megadott végpontokat. Ha az elérési út eltér az azonosítótól, ezt az értéket id:path megadhatja például 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 |
Az ügyfeleknek küldött kérések során nem továbbítandó fejlécek. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
A megjelenített oldal címe. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Lekérdezési időtartam ezredmásodpercben az új gyorsítótáradatok lekéréséhez. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Lekérdezés időtartama ezredmásodpercben az új adatforrásadatok lekéréséhez. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Lekérdezési időtartam ezredmásodpercben az új gc-adatok lekéréséhez. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Lekérdezési időtartam ezredmásodpercben az új folyamatadatok lekéréséhez. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
A lekérdezés időtartama ezredmásodpercben új memóriaadatok beolvasásához. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Lekérdezési időtartam ezredmásodpercben az új szálak adatainak lekéréséhez. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Lekérdezési időtartam ezredmásodpercben az új naplófájladatok lekéréséhez. | 1000 |
spring.boot.admin.ui.enable-toasts |
Engedélyezi vagy letiltja a bejelentési értesítéseket. | false |
spring.boot.admin.ui.title |
A böngésző ablakcímének értéke. | "" |
spring.boot.admin.ui.brand |
A navigációs fejlécben renderelt HTML-kód, és alapértelmezés szerint a Spring Boot felügyeleti címkéje lesz. Alapértelmezés szerint a Spring Boot Felügyeleti emblémát a neve követi. | "" |
management.scheme |
Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték. | |
management.address |
Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték. | |
management.port |
Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték. | |
management.context-path |
Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címéhez hozzáfűzött érték. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Az állapot-ellenőrzéshez használt szolgáltatás URL-címéhez hozzáfűzött érték. Figyelmen kívül hagyja a EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Engedélyezi a DiscoveryClient rendszergazdai kiszolgáló támogatását. |
true |
spring.boot.admin.discovery.converter.management-context-path |
A felderített szolgáltatáshoz service-url fűzött érték, amikor az értéket a management-url rendszer átalakítja.DefaultServiceInstanceConverter |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
A felderített szolgáltatáshoz management-url fűzött érték, amikor az értéket a health-url rendszer átalakítja.DefaultServiceInstanceConverter |
"health" |
spring.boot.admin.discovery.ignored-services |
A felderítés használatakor figyelmen kívül hagyott és alkalmazásként nem regisztrált szolgáltatások. Támogatja az olyan egyszerű mintákat, mint a "foo*" , "*bar" és "foo*bar*" . |
|
spring.boot.admin.discovery.services |
A felderítés és az alkalmazásként regisztrált szolgáltatások. Támogatja az olyan egyszerű mintákat, mint a "foo*" , "*bar" és "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
A szolgáltatások figyelmen kívül hagyva, ha legalább egy olyan metaadatelemet tartalmaznak, amely megfelel a lista mintáinak. Támogatja az olyan mintákat, mint a "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
Szolgáltatások, ha legalább egy olyan metaadatelemet tartalmaznak, amely megfelel a lista mintáinak. Támogatja az olyan mintákat, mint a "discoverable=true" . |
Gyakori konfigurációk
- Naplózással kapcsolatos konfigurációk:
- logging.level.*
- logging.group.*
- A névtérben lévő
logging.*
egyéb konfigurációknak tilosnak kell lenniük. Például a naplófájlok használatátlogging.file
tiltani kell.
Korlátozások
- A Spring Boot felügyeleti irányítópultja nem érhető el az Azure China 21Vianetben.
Kapcsolódó tartalom
A Spring felügyelt rendszergazdájának integrálása az Eureka Server for Spring szolgáltatással