Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Config Server for Spring központosított helyet biztosít a konfigurációs adatok több alkalmazás számára való elérhetővé tétele érdekében. Ebből a cikkből megtudhatja, hogyan csatlakoztathat egy Azure Container Appsben üzemeltetett alkalmazást egy Java Config Server for Spring-példányhoz.
A Config Server for Spring Java összetevő egy GitHub-adattárat használ a konfigurációs beállítások forrásaként. A konfigurációs értékek az összetevő és a tárolóalkalmazás közötti kötésen keresztül érhetők el a tárolóalkalmazás számára. Ahogy az értékek megváltoznak a konfigurációs kiszolgálón, azok automatikusan átfolynak az alkalmazásba anélkül, hogy újrafordítanák vagy újra üzembe helyezik az alkalmazást.
Eben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Config Server for Spring Java-összetevő létrehozása
- A Config Server for Spring kötése a tárolóalkalmazáshoz
- A konfigurációs értékek megfigyelése a konfigurációs kiszolgáló alkalmazáshoz való csatlakoztatása előtt és után
- Konfigurációs értékek titkosítása és visszafejtése szimmetrikus kulccsal
Fontos
Ez az oktatóanyag olyan szolgáltatásokat használ, amelyek hatással lehetnek az Azure-számlájára. Ha lépésről lépésre halad, 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 a Config Server for Springben fut az Azure Container Appsben, vegye figyelembe az alábbi részleteket:
| Elem | Magyarázat |
|---|---|
| Hatókör | A Config Server for Spring ugyanabban a környezetben fut, mint a csatlakoztatott tárolóalkalmazás. |
| Méretezés | Egyetlen igazságforrás fenntartása érdekében a Config Server for Spring nem méretezhető. A skálázási tulajdonságok minReplicas és maxReplicas mindkettő a következőre 1van állítva: . |
| Erőforrások | A Config Server for Spring tárolóerőforrás-lefoglalása rögzített, a processzormagok száma 0,5, a memória mérete pedig 1Gi. |
| Árképzés | A Config Server for Spring számlázása a fogyasztásalapú díjszabás alá tartozik. A felügyelt Java-ö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ás egy kötésen keresztül csatlakozik egy Config Server for Springhez. A kötés konfigurációkat injektál 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. |
Beállítás
Mielőtt megkezdené a Config Server for Spring használatát, először létre kell hoznia a szükséges erőforrásokat.
Hajtsa végre az alábbi parancsokat az erőforráscsoport és a Container Apps-környezet létrehozásához.
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-services-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=configserver export APP_NAME=my-config-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest" export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"Változó Leírás LOCATIONAz Azure-régió helye, ahol a tárolóalkalmazást és a Java-összetevőt hozza létre. ENVIRONMENTA bemutató alkalmazás Azure Container Apps-környezetének neve. RESOURCE_GROUPA bemutató alkalmazás Azure-erőforráscsoportjának neve. JAVA_COMPONENT_NAMEA tárolóalkalmazáshoz létrehozott Java-összetevő neve. Ebben az esetben létre kell hoznia egy Config Server for Spring Java-összetevőt. IMAGEA tárolóalkalmazásban használt tárolórendszerkép. URIAz URI-t lecserélheti a Git-adattár URL-címére, ha privát, adja hozzá a kapcsolódó hitelesítési konfigurációkat, például spring.cloud.config.server.git.usernameésspring.cloud.config.server.git.password.Jelentkezzen be az Azure-ba az Azure CLI-vel.
az loginHozzon létre egy erőforráscsoportot.
az group create --name $RESOURCE_GROUP --location $LOCATIONHozza létre a tárolóalkalmazás-környezetet.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Ez a környezet a Config Server for Spring Java összetevő és a tárolóalkalmazás üzemeltetésére szolgál.
A Config Server for Spring Java összetevő létrehozása
Most, hogy már rendelkezik Container Apps-környezettel, létrehozhatja a tárolóalkalmazást, és egy Config Server for Spring Java-összetevőhöz kötheti. A tárolóalkalmazás kötésekor a konfigurációs értékek automatikusan szinkronizálódnak a Config Server összetevőből az alkalmazásba.
Hozza létre a Config Server for Spring Java összetevőt.
az containerapp env java-component config-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1 \ --configuration spring.cloud.config.server.git.uri=$URIFrissítse a Config Server for Spring Java összetevőt.
az containerapp env java-component config-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2 \ --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60Itt azt mondja meg az összetevőnek, hogy hol keresse meg azt az adattárat, amely a tulajdonságon keresztül tárolja a
urikonfigurációs adatokat. Arefresh-ratetulajdonság azt jelzi, hogy a Container Apps milyen gyakran ellenőrizze a Git-adattár módosításait.
A tárolóalkalmazás kötése a Config Server for Spring Java összetevőhöz
Hozza létre a konfigurációs adatokat használó tárolóalkalmazást.
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 \ --query properties.configuration.ingress.fqdnEz a parancs a konfigurációs adatokat használó tárolóalkalmazás URL-címét adja vissza. Másolja az URL-címet egy szövegszerkesztőbe, hogy egy következő lépésben használhassa.
Ha böngészőben látogatja meg az alkalmazást, a
connectTimeoutvisszaadott érték az alapértelmezett érték.0Kötés a Config Server for Springhez.
Most, hogy létrejött a tárolóalkalmazás és a Config Server, a parancsot
updatea tárolóalkalmazáshoz kell kötnie.az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $JAVA_COMPONENT_NAMEA
--bind $JAVA_COMPONENT_NAMEparaméter létrehozza a kapcsolatot a tárolóalkalmazás és a konfigurációs összetevő között.
Miután a tárolóalkalmazás és a Config Server összetevő össze van kötve, a konfigurációs módosítások automatikusan szinkronizálódnak a tárolóalkalmazással.
Amikor ismét megtekinti az alkalmazás URL-címét, az érték connectTimeout most már 10000az . Ez az érték az eredetileg a konfigurációs összetevő forrásaként beállított változóban $URI lévő Git-adattárból származik. Ez az érték az connectionTimeout adattár application.yml fájljában található tulajdonságból származik.
A kötési kérelem környezeti változóként injektálja a konfigurációs beállítást az alkalmazásba. Ezek az értékek mostantól elérhetők az alkalmazáskód számára a konfigurációs beállítások konfigurációs kiszolgálóról való lekéréséhez.
Ebben az esetben a következő környezeti változók érhetők el az alkalmazás számára:
SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI
Ha testre szeretné szabni a sajátját SPRING_CONFIG_IMPORT, hivatkozhat a környezeti változóra SPRING_CLOUD_CONFIG_COMPONENT_URI – például parancssori argumentumokkal felülbírálhatja azokat, például Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.
A kötéseket az alkalmazásból is eltávolíthatja.
(Nem kötelező) A tárolóalkalmazás leválasztása a Config Server for Spring Java összetevő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
Amikor ismét felkeresi az alkalmazás URL-címét, a módosítások értéke connectTimeout vissza fog változni 0.
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 a következő parancsot az oktatóanyagban létrehozott összes eltávolításához.
az group delete --resource-group $RESOURCE_GROUP
Konfigurációs lehetőségek
A az containerapp update parancs a --configuration paraméterrel szabályozza a Config Server for Spring konfigurálását. Egyszerre több paramétert is használhat, ha szóköz választja el őket egymástól. További információ: Spring Cloud Config Server.
Az alábbi táblázat a különböző Elérhető Git-háttérkonfigurációs értékeket ismerteti:
| Név | Leírás |
|---|---|
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
A távoli adattár URI-ja. |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
Felhasználónév távoli adattárral történő hitelesítéshez. |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
A távoli adattárral való hitelesítés jelszava. |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
A helyi munkapéldányban használandó keresési útvonalak. Alapértelmezés szerint csak a gyökérben keres. |
spring.cloud.config.server.git.force-pull spring.cloud.config.server.git.repos.{repoName}.force-pull |
Jelző, amely jelzi, hogy az adattárnak kényszerítenie kell a lekérést. Ha true, elveti a helyi módosításokat, és a távoli adattárból veszi át. |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
A Githez használt alapértelmezett címke a fő. Ha nem állítja be a beállítástspring.cloud.config.server.git.default-label, és a főág nevű ág nem létezik, a konfigurációs kiszolgáló alapértelmezés szerint egy főágat is megpróbál kivenni. Ha le szeretné tiltani a tartalék ág viselkedését, beállíthatja a következőt spring.cloud.config.server.git.tryMasterBranchfalse: . |
spring.cloud.config.server.git.try-master-branch spring.cloud.config.server.git.repos.{repoName}.try-master-branch |
A konfigurációs kiszolgáló alapértelmezés szerint megpróbál kivételt tenni egy főág nevű ágból. |
spring.cloud.config.server.git.skip-ssl-validation spring.cloud.config.server.git.repos.{repoName}.skip-ssl-validation |
Letilthatja a konfigurációs kiszolgálónak a Git-kiszolgáló TLS/SSL-tanúsítványának érvényesítését, ha a tulajdonságot a git.skipSslValidation következőre trueállítja. |
spring.cloud.config.server.git.clone-on-start spring.cloud.config.server.git.repos.{repoName}.clone-on-start |
Jelző, amely azt jelzi, hogy az adattárat indításkor kell klónozni, nem igény szerint. Általában lassabb indításhoz, de gyorsabb első lekérdezéshez vezet. |
spring.cloud.config.server.git.timeout spring.cloud.config.server.git.repos.{repoName}.timeout |
Http- vagy SSH-kapcsolat beszerzésének időtúllépése másodpercben, ha van ilyen. Az alapértelmezett érték 5 másodperc. |
spring.cloud.config.server.git.refresh-rate spring.cloud.config.server.git.repos.{repoName}.refresh-rate |
Milyen gyakran olvassa be a konfigurációs kiszolgáló a frissített konfigurációs adatokat a Git-háttérrendszerből. |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
Érvényes SSH titkos kulcs. Ha igen, ignore-local-ssh-settings akkor be kell állítanitrue, és a Git URI SSH formátumban van. |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
Érvényes SSH-gazdagépkulcs. Ha a beállítás is be van állítva, be kell állítani host-key-algorithm . |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
Az egyik ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384vagy ecdsa-sha2-nistp521. Ha a beállítás is be van állítva, be kell állítani host-key . |
spring.cloud.config.server.git.strict-host-key-checking spring.cloud.config.server.git.repos.{repoName}.strict-host-key-checking |
true vagy false. Ha false, hagyja figyelmen kívül a gazdagépkulcs hibáit. |
spring.cloud.config.server.git.repos.{repoName} |
A távoli adattár URI-ja. |
spring.cloud.config.server.git.repos.{repoName}.pattern |
A mintaformátum a helyettesítő karaktereket tartalmazó nevek vesszővel tagolt listája {application}/{profile} . Ha {application}/{profile} nem egyezik meg egyik mintával sem, akkor a megadott alapértelmezett URI-t használja. |
Az alábbi lista a gyakori konfigurációkat ismerteti:
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 írását a használatávallogging.filetiltani kell.
spring.cloud.config.server.overrides- További térkép egy tulajdonságforráshoz, amelyet feltétel nélkül kell elküldeni az összes ügyfélnek.
spring.cloud.config.override-none- Az ügyfélben lévő összes felülbírálás prioritását az alapértelmezett értékekhez hasonlóan módosíthatja, így az alkalmazások saját értékeket adhatnak meg a környezeti változókban vagy a rendszertulajdonságokban, ha beállítják a
spring.cloud.config.override-none=truejelölőt – az alapértelmezett érték hamis – a távoli adattárban.
- Az ügyfélben lévő összes felülbírálás prioritását az alapértelmezett értékekhez hasonlóan módosíthatja, így az alkalmazások saját értékeket adhatnak meg a környezeti változókban vagy a rendszertulajdonságokban, ha beállítják a
spring.cloud.config.allow-override- Ha először engedélyezi a konfigurációs konfigurációt, engedélyezheti, hogy az ügyfélalkalmazások felülbírálják a konfigurációs kiszolgáló konfigurációját úgy, hogy két tulajdonságot helyeznek el a konfigurációs kiszolgálóról érkező alkalmazáskonfigurációban.
spring.cloud.config.server.health.*- Az állapotjelzőt úgy konfigurálhatja, hogy további alkalmazásokat ellenőrizzen egyéni profilokkal és egyéni címkékkel együtt.
spring.cloud.config.server.accept-empty-
spring.cloud.config.server.accept-emptyBeállíthatjafalse, hogy a kiszolgáló HTTP-állapotot404adjon vissza, ha az alkalmazás nem található. Ez a jelző alapértelmezés szerint a következőretruevan állítva: .
-
Titkosítás és visszafejtés (szimmetrikus):
encrypt.key- Szimmetrikus kulcs használata esetén kényelmes, mert egyetlen tulajdonságérték konfigurálható.
spring.cloud.config.server.encrypt.enabled- Állítsa be ezt a tulajdonságot a
falsekiszolgálóoldali visszafejtés letiltásához.
- Állítsa be ezt a tulajdonságot a
Frissítés
A tulajdonságokat használó szolgáltatásoknak tudniuk kell a módosításról, mielőtt ez bekövetkezik. A Config Server for Spring alapértelmezett értesítési módszere magában foglalja a frissítési esemény manuális aktiválását, például egy hívással https://<YOUR_CONFIG_CLIENT_HOST_NAME>/actuator/refreshtörténő frissítést, ami sok alkalmazáspéldány esetén nem feltétlenül valósítható meg.
Ehelyett automatikusan frissítheti a konfigurációs kiszolgáló értékeit úgy, hogy a konfigurációs ügyfél belső frissítés alapján lekérdezi a módosításokat. Az alábbi lépésekkel automatikusan frissíthet értékeket a Config Serverről:
Ütemezett feladat regisztrálása a környezet adott időközönkénti frissítéséhez, ahogyan az a következő példában is látható:
@Configuration @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class}) @EnableScheduling public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer { @Value("${spring.cloud.config.refresh-interval:60}") private long refreshInterval; @Value("${spring.cloud.config.auto-refresh:false}") private boolean autoRefresh; private final RefreshEndpoint refreshEndpoint; public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) { this.refreshEndpoint = refreshEndpoint; } @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { if (autoRefresh) { // set minimal refresh interval to 5 seconds refreshInterval = Math.max(refreshInterval, 5); scheduledTaskRegistrar.addFixedRateTask(refreshEndpoint::refresh, Duration.ofSeconds(refreshInterval)); } } }Engedélyezze
autorefreshés állítsa be a megfelelő frissítési időközt a application.yml fájlban. Az alábbi példában az ügyfél 60 másodpercenként kérdez le egy konfigurációmódosítást, amely a frissítési időközhöz megadható minimális érték.Alapértelmezés szerint
autorefresh60 másodpercre van állítvafalserefresh-interval.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refreshAdja hozzá
@RefreshScopea kódot. A következő példában a változóconnectTimeout60 másodpercenként automatikusan frissül:@RestController @RefreshScope public class HelloController { @Value("${timeout:4000}") private String connectTimeout; }
Titkosítás és visszafejtés szimmetrikus kulccsal
Kiszolgálóoldali visszafejtés
Alapértelmezés szerint a kiszolgálóoldali titkosítás engedélyezve van. Az alábbi lépésekkel engedélyezheti a visszafejtést az alkalmazásban:
Adja hozzá a titkosított tulajdonságot a Git-adattár .properties fájljában.
A fájlnak az alábbi példához hasonlónak kell lennie:
message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282fFrissítse a Config Server for Spring Java összetevőt a titkosított tulajdonságot tartalmazó Git-adattár használatára, és állítsa be a titkosítási kulcsot.
A következő parancs futtatása előtt cserélje le az értékekkel körülvett
<>helyőrzőket.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> encrypt.key=randomKey
Ügyféloldali visszafejtés
A tulajdonságok ügyféloldali visszafejtése a következő lépésekkel használható:
Adja hozzá a titkosított tulajdonságot a Git-adattár .properties fájljában.
Frissítse a Config Server for Spring Java összetevőt a titkosított tulajdonságot tartalmazó Git-adattár használatára, és tiltsa le a kiszolgálóoldali visszafejtést.
A következő parancs futtatása előtt cserélje le az értékekkel körülvett
<>helyőrzőket.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> spring.cloud.config.server.encrypt.enabled=falseAz ügyfélalkalmazásban adja hozzá a visszafejtési kulcsot
ENCRYPT_KEY=randomKeykörnyezeti változóként.Másik lehetőségként, ha
spring-cloud-starter-bootstrapszerepel a beállításban,classpathvagy rendszertulajdonságként van beállítvaspring.cloud.bootstrap.enabled=trueencrypt.keybootstrap.properties.A következő parancs futtatása előtt cserélje le az értékekkel körülvett
<>helyőrzőket.az containerapp update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --set-env-vars "ENCRYPT_KEY=randomKey"encrypt: key: somerandomkey