Csatlakozás felügyelt Config Server for Springhez az Azure Container Appsben
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 1 van á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 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 Azure Container Apps-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 Config Server for Spring Java-összetevőt. IMAGE
A tárolóalkalmazásban használt tárolórendszerkép. URI
Az 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 login
Hozzon létre egy erőforráscsoportot.
az group create --name $RESOURCE_GROUP --location $LOCATION
Hozza 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=$URI
Frissí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=60
Itt azt mondja meg az összetevőnek, hogy hol keresse meg azt az adattárat, amely a tulajdonságon keresztül tárolja a
uri
konfigurációs adatokat. Arefresh-rate
tulajdonsá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.fqdn
Ez 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
connectTimeout
visszaadott érték az alapértelmezett érték.0
Kötés a Config Server for Springhez.
Most, hogy létrejött a tárolóalkalmazás és a Config Server, a parancsot
update
a tárolóalkalmazáshoz kell kötnie.az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $JAVA_COMPONENT_NAME
A
--bind $JAVA_COMPONENT_NAME
paramé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 10000
az . 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.tryMasterBranch false : . |
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, true akkor be kell állítaniignore-local-ssh-settings , é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-nistp384 vagy 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.file
tiltani 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=true
jelö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-empty
Beállíthatjafalse
, hogy a kiszolgáló HTTP-állapotot404
adjon vissza, ha az alkalmazás nem található. Ez a jelző alapértelmezés szerint a következőretrue
van á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
false
kiszolgá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/refresh
tö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
autorefresh
60 másodpercre van állítvafalse
refresh-interval
.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Adja hozzá
@RefreshScope
a kódot. A következő példában a változóconnectTimeout
60 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}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
Frissí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=false
Az ügyfélalkalmazásban adja hozzá a visszafejtési kulcsot
ENCRYPT_KEY=randomKey
környezeti változóként.Másik lehetőségként, ha
spring-cloud-starter-bootstrap
szerepel a beállításban,classpath
vagy rendszertulajdonságként van beállítvabootstrap.properties
spring.cloud.bootstrap.enabled=true
encrypt.key
.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