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.
Ez a cikk a Spring Cloud Azure-alkalmazás konfigurációs kódtárát ismerteti. Ez a kódtár betölti a konfigurációkat és a funkciójelzőket a Azure-alkalmazás Konfigurációs szolgáltatásból. A kódtár absztrakciókat PropertySource hoz létre, hogy megfeleljenek a Spring-környezet által már létrehozott absztrakcióknak, például környezeti változóknak, parancssori konfigurációknak, helyi konfigurációs fájloknak stb.
A Spring a VMware által kifejlesztett nyílt forráskódú alkalmazás-keretrendszer, amely egyszerűsített, moduláris megközelítést biztosít a Java-alkalmazások létrehozásához. A Spring Cloud Azure egy nyílt forráskódú projekt, amely zökkenőmentes Spring-integrációt biztosít az Azure-szolgáltatásokkal.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen.
- A Java Development Kit (JDK) 8- vagy újabb verziója.
- Apache Maven
- Azure parancssori felület
Az Alkalmazáskonfigurációs áruház beállítása
Az alábbi paranccsal hozza létre a Azure-alkalmazás Konfigurációs tárat:
az appconfig create \
--resource-group <your-resource-group> \
--name <name-of-your-new-store> \
--sku Standard
Ez a parancs létrehoz egy új, üres konfigurációs tárolót. A konfigurációkat az alábbi importálási paranccsal töltheti fel:
az appconfig kv import \
--name <name-of-your-new-store> \
--source file \
--path <location-of-your-properties-file> \
--format properties \
--prefix /application/
Mielőtt betöltené őket, ellenőrizze a konfigurációkat. YAML-fájlokat úgy tölthet fel, hogy a formátumot YAML formátumra módosítja. Az előtagmező azért fontos, mert ez az ügyfélkódtár által betöltött alapértelmezett előtag.
Tárhasználat
Ha egy alkalmazásban szeretné használni a funkciót, spring boot-alkalmazásként kell létrehoznia. A függőség hozzáadásának legkényelmesebb módja a Spring Boot starter com.azure.spring:spring-cloud-azure-starter-appconfiguration-confighasználata. Az alábbi példa pom.xml fájl Azure-alkalmazás konfigurációt használ:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-version}</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>7.4.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-appconfiguration-config</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Az alábbi példa egy alapszintű Spring Boot-alkalmazást mutat be az alkalmazáskonfiguráció használatával:
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Ebben a példában az application.properties fájl a következő sort tartalmazza:
spring.config.import=azureAppConfiguration
spring.cloud.azure.appconfiguration.stores[0].endpoint=${CONFIG_STORE_ENDPOINT}
CONFIG_STORE_ENDPOINT az Azure App Configuration Store végponti URL-címével rendelkező környezeti változó.
Feljegyzés
A Microsoft az elérhető legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Ezt a folyamatot csak akkor használja, ha a biztonságosabb lehetőségek, például a jelszó nélküli vagy kulcs nélküli kapcsolatokhoz szükséges felügyelt identitások lehetőségként nem állnak rendelkezésre. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.
Alapértelmezés szerint, ha nem ad meg semmilyen konfigurációt, a(z) /application/ karakterrel kezdődő konfigurációk (No Label) alapértelmezett címkével töltődnek be, hacsak nem állít be Spring-profilt, amely esetben az alapértelmezett címke a Spring-profilja.
Létrejön egy névvel ellátott /application/https://<name-of-your-store>.azconfig.io/ tulajdonságforrás, amely az adott tároló tulajdonságait tartalmazza. A kérelemben használt címke hozzá van fűzve a név végéhez. Ha nem állít be címkét, a karakter \0 üres helyként jelenik meg.
Konfiguráció betöltése
A kódtár egy vagy több alkalmazáskonfigurációs tároló betöltését támogatja. Ha egy kulcs több üzletben duplikálva van, az utolsó nyer.
spring.cloud.azure.appconfiguration.stores[0].endpoint=[first-store-endpoint]
spring.cloud.azure.appconfiguration.stores[1].endpoint=[second-store-endpoint]
Ebben a példában, ha mindkét tároló azonos konfigurációs kulccsal rendelkezik, a második tároló konfigurációja a legmagasabb prioritással rendelkezik.
Feljegyzés
Használhatja Azure-alkalmazás konfigurációs beállításokat, mint bármely más Spring-konfigurációt. További információ: Alapvető funkciók a Spring Boot dokumentációjában vagy rövid útmutató: Java Spring-alkalmazás létrehozása Azure-alkalmazás konfigurációval.
Konfigurációk kiválasztása
A könyvtár a konfigurációkat a kulcsuk és címkéjük alapján, illetve pillanatkép alapján tölti be. Ha nem használ kiválasztási módszert, a függvénytár betölti az összes kulcsot a(z) /application/ előtaggal és a(z) \0 címkével, amely az Azure Portalon (No Label) néven jelenik meg.
Az alapértelmezett kulcsszűrő a következő /application/*. Az alapértelmezett címkeszűrő az \0, amely az Azure Portalon látható módon (No Label) jelenik meg. Ha egy Spring-profilt állít be, és nem ad meg címkét, az alapértelmezett címke a Spring-profil, amely a ${spring.profiles.active}.
A konfigurációkat egy adott pillanatképből is betöltheti. A pillanatkép a konfiguráció statikus nézete egy adott időpontban. Amikor betölt egy pillanatképet, betölti a konfigurációkat a pillanatkép létrehozásakor, és addig nem frissülnek, amíg létre nem hoz egy új pillanatképet, és be nem töltődik belőle. A pillanatképnek a kompozíció típusának Keykell lennie. A tulajdonság használatával megadhatja a betöltendő pillanatképet snapshot :
You can configure which configurations are loaded by selecting different key and label filters:
```properties
spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter=[my-key]
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=[my-label]
spring.cloud.azure.appconfiguration.stores[0].selects[1].snapshot=[snapshot-name]
Feljegyzés
A pillanatkép-kijelölés nem kombinálható kulcs- és címkeszűrőkkel. Pillanatkép kiválasztásakor a rendszer betölti a pillanatkép összes kulcsát.
A key-filter tulajdonság a következő szűrőket támogatja:
| Kulcsszűrő | Hatály |
|---|---|
* |
Bármely kulccsal megegyezik. |
abc |
Megfelel egy abc nevű kulcsnak. |
abc* |
A következővel abckezdődő kulcsneveknek felel meg: . |
abc,xyz |
A kulcsneveket illeszt abc vagy xyz. Legfeljebb öt vesszővel tagolt érték lehet. |
A label-filter tulajdonság a következő szűrőket támogatja:
| Címke | Leírás |
|---|---|
* |
Bármilyen címkével egyezik, beleértve a \0. |
\0 |
Megfelel a(z) null címkéknek, amelyek (No Label) címkeként jelennek meg az Azure portálon. |
1.0.0 |
Pontosan egyezik a címkével 1.0.0 . |
1.0.* |
Megegyezik a következővel kezdődő címkékkel 1.0.*: . |
,1.0.0 |
Megfelel a címkéknek null és 1.0.0. Legfeljebb öt vesszővel tagolt érték lehet. |
Ha a YAML-et címkeszűrőkkel használja, és címkével nem rendelkező konfigurációkat szeretne betölteni, és további konfigurációkat szeretne más címkékkel ellátni, akkor egy üreset ,kell tartalmaznia. Például a ,dev egyezik a \0 és dev címkékkel. Ebben az esetben a címkeszűrőt egyetlen idézőjellel kell körülvenni. Ez az érték lehetővé teszi, hogy a konfigurációt először címke nélkül töltse be, majd az adott címkékkel rendelkező konfigurációkat ugyanabban a szűrőben:
spring:
cloud:
azure:
appconfiguration:
stores:
- selects:
- label-filter: ',1.0.0'
Feljegyzés
Nem kombinálhatók a * és a , elemek a szűrőkben. Ebben az esetben további kiválasztási értéket kell használnia.
Ha a címkeszűrőben használja * , és több, azonos kulccsal rendelkező konfiguráció is betöltődik, azok betűrendben lesznek betöltve, és a címke utolsó betűrendben lesz használva.
Spring-profilok
Alapértelmezés szerint spring.profiles.active az összes kiválasztott konfiguráció alapértelmezett label-filter értéke. Ezt a funkciót felülbírálhatja a következővel label-filter: . A Spring Profiles a következő példában label-filter${spring.profiles.active} által használható, ahogy az alábbi példa mutatja:
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=,${spring.profiles.active}
spring.cloud.azure.appconfiguration.stores[0].selects[1].label-filter=${spring.profiles.active}_local
Az elsőben label-filter a könyvtár először betölti az összes \0 címkével rendelkező konfigurációt, majd az összes konfigurációt, amely megfelel a Spring Profiloknak. A spring profiles prioritást élvez a \0 konfigurációkkal szemben, mert a végén vannak.
A második label-filter esetben a sztring _local hozzá van fűzve a Spring Profiles végéhez, bár csak az utolsó Spring Profile-hoz, ha több is van.
Letiltott üzletek
A konfiguráció spring.cloud.azure.appconfiguration.enabledhasználatával letilthatja az összes konfigurációs tároló betöltését. A spring.cloud.azure.appconfiguration.stores[0].enabled konfigurációval letilthat egy adott tárolót.
Feljegyzés
Ha egészségügyi metrikákat használ, továbbra is megjelenik az áruházak listája, de az érték NOT LOADED. A betöltött tulajdonságforrások ellenőrzésekor továbbra is megjelennek a listában, de nem tartalmaznak értékeket. Ezt a viselkedést a spring.config.import beállított tulajdonság okozza. Ha azureAppConfiguration nincs beállítva spring.config.import esetében, akkor nem jelennek meg értékek.
Hitelesítés
A kódtár az Azure Identity Library által támogatott összes identitásformát támogatja. Kapcsolati sztringekhez és felügyelt identitáshoz való autentikációt konfiguráció segítségével végezhet.
Feljegyzés
A Microsoft az elérhető legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Ezt a folyamatot csak akkor használja, ha a biztonságosabb lehetőségek, például a jelszó nélküli vagy kulcs nélküli kapcsolatokhoz szükséges felügyelt identitások lehetőségként nem állnak rendelkezésre. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.
Kapcsolati karakterlánc (nem ajánlott)
A kapcsolati sztringen keresztüli hitelesítés a legegyszerűbb beállítási forma, bár nem ajánlott. Az áruház kapcsolati karakterláncát az alábbi paranccsal érheted el:
az appconfig credential list --name <name-of-your-store>
Ezután beállíthatja a spring.cloud.azure.appconfiguration.stores[0].connection-string tulajdonságot a kapcsolati karakterláncra. Ha ezt a módszert használja, javasoljuk, hogy a helyi konfigurációs fájlban található kapcsolati sztringet olyan helyőrző értékre állítsa, amely egy környezeti változóhoz van leképezve. Ezzel a módszerrel elkerülheti a kapcsolati sztring forrásvezérlőhöz való hozzáadását.
Spring Cloud Azure-konfiguráció
A spring cloud Azure-konfigurációval konfigurálhatja a kódtárat. A kódtár konfigurálásához az alábbi tulajdonságokat használhatja:
spring.cloud.azure.appconfiguration.stores[0].endpoint= <URI-of-your-configuration-store>
Ha csak a végpont van beállítva, az ügyfélkódtár a DefaultAzureCredential parancsot használja a hitelesítéshez.
Hozzá kell rendelnie a konfigurációk olvasásához használt identitást. Ezt a feladatot a következő paranccsal hozhatja létre:
az role assignment create \
--role "App Configuration Data Reader" \
--assignee <your-client-ID> \
--scope /subscriptions/<your-subscription>/resourceGroups/<your-stores-resource-group>/providers/Microsoft.AppConfiguration/configurationStores/<name-of-your-configuration-store>
Feljegyzés
Végpontonként csak egy hitelesítési módszert definiálhat: kapcsolati sztring, felhasználó által hozzárendelt identitást vagy jogkivonat hitelesítő adatait. Ha kombinálni és párosítani szeretne, ConfigurationClientCustomizer segítségével módosíthatja a ConfigurationClientBuilder-et különböző módszerek használatára.
Feljegyzés
A Microsoft az elérhető legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Ezt a folyamatot csak akkor használja, ha a biztonságosabb lehetőségek, például a jelszó nélküli vagy kulcs nélküli kapcsolatokhoz szükséges felügyelt identitások lehetőségként nem állnak rendelkezésre. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.
Georeplikáció
A kódtár támogatja Azure-alkalmazás Konfiguráció georeplikációs funkcióját. Ez a funkció lehetővé teszi, hogy más helyekre replikálja az adatokat. Ez a funkció a magas rendelkezésre állás és a vészhelyreállítás szempontjából hasznos.
Minden létrehozott replika rendelkezik egy dedikált végpontkal. Ha az alkalmazás több földrajzi helyen található, frissítheti az alkalmazás minden üzembe helyezését egy helyen, hogy a replikához az adott helyhez közelebb csatlakozzon, ami segít minimalizálni az alkalmazás és az alkalmazáskonfiguráció közötti hálózati késést. Mivel minden replika külön kérelemkvótával rendelkezik, ez a beállítás az alkalmazás méretezhetőségét is segíti, miközben többrégiós elosztott szolgáltatásra nő.
Alapértelmezés szerint a könyvtár automatikusan felderíti a konfigurációs tár összes létező replikáját. Ha egy kérés a megadott tárba kerül, és sikertelen, a tár automatikusan újrapróbálkozza a kérést az elérhető replikákon.
A feladatátvétel akkor következhet be, ha a könyvtár a következő feltételek valamelyikét észleli:
- A szolgáltatás nem elérhető állapotkóddal rendelkező (HTTP 500-as vagy annál magasabb) válaszokat fogad egy végpontról.
- Hálózati csatlakozási problémákat tapasztal.
- A kérelmek korlátozva vannak (HTTP-állapotkód: 429).
Miután a megadott tároló ismét online állapotba kerül, a könyvtár automatikusan újra megpróbálja teljesíteni a kérést a megadott tárolón.
Ha szabályozni szeretné a feladatátvételi viselkedést, manuálisan megadhatja a feladatátvételhez használni kívánt tárolók listáját.
spring.cloud.azure.appconfiguration.stores[0].endpoints[0]=[your primary store endpoint]
spring.cloud.azure.appconfiguration.stores[0].endpoints[1]=[your replica store endpoint]
vagy
spring.cloud.azure.appconfiguration.stores[0].connection-strings[0]=[your primary store connection string]
spring.cloud.azure.appconfiguration.stores[0].connection-strings[1]=[your replica store connection string]
Ha az összes megadott replikavégpont sikertelen, az erőforrástár megpróbál csatlakozni az elsődleges tár automatikusan felderített replikáihoz.
A replikációt letilthatja a beállítással spring.cloud.azure.appconfiguration.stores[0].replica-discovery-enabled=false.
Konfigurációs tároló létrehozása georeplikációs szolgáltatással
A konfigurációs tár replikáinak létrehozásához használhatja az Azure CLI-t vagy az Azure Portalt. Az alábbi példa az Azure CLI használatával hoz létre replikát az USA 2. keleti régiójában:
az appconfig replica create --location --name --store-name [--resource-group]
Kulcsértékek
Azure-alkalmazás Konfiguráció több kulcsértéktípust támogat, amelyek közül néhány speciális funkciókkal rendelkezik. Azure-alkalmazás konfiguráció beépített támogatást nyújt a JSON-tartalomtípushoz, a Spring-helyőrzőkhöz és a Key Vault-hivatkozásokhoz.
Kulcsok levágása
Ha kulcsokat tölt be az Azure App Configurationból, a kódtár alapértelmezés szerint levágja a kulcs által definiált spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter előtagot. Ha például rendelkezik egy elnevezett kulccsal /application/config.message és egy kulcsszűrővel /application/*, a kódtár levágja az előtagot /application/ , és betölti a kulcsot config.message. Ennek a vágásnak köszönhetően könnyebben hivatkozhat a kulcsokra a kódban.
Ezt a viselkedést felül lehet bírálni azzal, hogy spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix[0] más értékre van állítva. Ha ezt a tulajdonságot üres karakterláncra állítja, ezzel kikapcsolja a vágás funkciót, és a kulcs a teljes névvel töltődik be.
Helyőrzők
A könyvtár támogatja azokat a konfigurációkat, amelyek ${}-stílusú környezeti helyőrzőket használnak. Ha Azure-alkalmazás konfigurációs kulcsra hivatkozik helyőrzővel, távolítsa el az előtagokat a hivatkozásból. Például a /application/config.message hivatkozik a ${config.message} néven.
Feljegyzés
Az eltávolított előtag megegyezik az értékkel spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter. A levágott előtag módosítható egy érték spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix[0]beállításával.
JSON
JSON-kulcsértékeket az Alkalmazáskonfigurációban hozhat létre. Amikor kulcsértékeket tölt be az Azure App Configurationból, a konfigurációszolgáltató automatikusan átalakítja a konfigurációs beállításokat összetett objektumokká egy @ConfigurationPropertiesadott területen belül. Vegyük például a JSON-kulcsot /application/config.colors a következő értékkel:
{
"key": "font",
"label": null,
"value": "{\r\n\t\"size\": 12,\r\n\t\"color\": \"red\"\r\n}",
"content_type": "application/json"
}
Ez a JSON-tartalom a kulcs-érték betöltését { size: 12, color: "red" }eredményezi.
@ConfigurationProperties(prefix = "config")
public class MyConfigurations {
private Font font;
}
Feljegyzés
A konfigurációszolgáltató a (JSONC) spring-cloud-azure-appconfiguration-configverziójától kezdve lehetővé teszi a tartalomtípusú kulcsértékek megjegyzéseitapplication/json.
Key Vault-hivatkozások
Azure-alkalmazás konfiguráció és kódtárai támogatják a Key Vaultban tárolt titkos kódokra való hivatkozásokat. Az Alkalmazáskonfigurációban kulcsokat hozhat létre olyan értékekkel, amelyek a Key Vaultban tárolt titkos kulcsokhoz vannak megfeleltetve. A titkos kulcsok továbbra is biztonságosak maradnak a Key Vaultban, de az alkalmazás betöltésekor ugyanúgy érheti el őket, mint bármely más konfiguráció.
Az alkalmazás az ügyfélszolgáltatóval kéri le a Key Vault-referenciákat, ugyanúgy, mint az Alkalmazáskonfigurációban tárolt többi kulcs esetében. Mivel az ügyfél a kulcsokat Key Vault-hivatkozásként ismeri fel, ezért azok egyedi tartalomtípussal rendelkeznek, és az ügyfél a Key Vault-hoz csatlakozva lekéri az értékeiket az ön részére.
Feljegyzés
A Key Vault csak egyenként teszi lehetővé a titkos adatok lekérését, így az App Configuration-ben tárolt minden Key Vault-referencia egy lekérést eredményez a Key Vault felé.
Key Vault-hivatkozások létrehozása
Key Vault-referenciát az Azure portálon a Konfigurációs böngészőben > a > opcióval. Ezután kiválaszthat egy titkos kulcsot, amelyre hivatkozni szeretne bármelyik olyan Kulcstartóból, amelyhez hozzáférése van. A Bevitel lapon tetszőleges Key Vault-hivatkozásokat is létrehozhat. Az Azure Portalon adjon meg egy érvényes URI-t.
Key Vault-referenciát az Azure CLI-vel is létrehozhat az alábbi paranccsal:
az appconfig kv set-keyvault \
--name <name-of-your-store> \
--key <key-name> \
--secret-identifier <URI-to-your-secret>
Bármilyen titkos azonosítót létrehozhat az Azure CLI-vel. A titkos azonosítók csak azt a formátumot {vault}/{collection}/{name}/{version?} igénylik, amelyben a verziószakasz nem kötelező.
Key Vault-hivatkozások használata
A spring cloud Azure-konfigurációval konfigurálhatja a kódtárat. Az Azure Key Vaulthoz való csatlakozáshoz használhatja ugyanazt a hitelesítő adatot, amelyet az alkalmazáskonfigurációhoz használ.
Ugyanúgy hozhat létre SecretClientCustomizer, mint ahogyan ConfigurationClientCustomizer-t, hogy saját hitelesítési módszerét biztosítsa.
Nem Key Vault-titkok feloldása
Az App Configuration könyvtár egy metódust biztosít a Key Vault-hivatkozások feloldásának felülbírálásához. Használhatja például a dev környezetben lévő titkos kódok helyi feloldására. Ez a határozat a KeyVaultSecretProvider történt meg. Ha KeyVaultSecretProvidermeg van adva, a rendszer minden key vault-referenciára meghívja. Ha getSecret nem null értéket ad vissza, az titkos értékként lesz használva. Ellenkező esetben a Key Vault referenciája a szokásos módon lesz feloldva.
public class MySecretProvider implements KeyVaultSecretProvider {
@Override
public String getSecret(String uri) {
...
}
}
Funkciókezelés
A funkciókezelés lehetővé teszi, hogy a Spring Boot-alkalmazások dinamikusan elérhessék a tartalmakat. A funkciókezelés különböző funkciókkal rendelkezik, például a következőkkel:
- Tartalom engedélyezésére vagy letiltására alkalmas funkciójelzők
- Funkciószűrők a tartalom megjelenítésekor történő célzáshoz
- Testreszabott funkciószűrők
- Funkciókapuk a végpontok dinamikus engedélyezéséhez
A funkciójelzőket a következő konfigurációval engedélyezheti:
spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled= true
Az engedélyezett funkciójelzők az előtaggal feature-managementtöltődnek be a Spring konfigurációs rendszerbe. A funkciójelzőket a helyi konfigurációs fájlban is regisztrálhatja. További információt a Funkciójelölő deklaráció szakaszában talál.
A funkciókezelés használatának legegyszerűbb módja a spring-cloud-azure-feature-management és a spring-cloud-azure-feature-management-web könyvtárak használata. A két könyvtár közötti különbség az, hogy a spring-cloud-azure-feature-management-web függ a spring-web és a spring-webmvc könyvtáraktól, hogy több funkciót, például funkciókapukat adjon hozzá.
Alapértelmezés szerint a \0 címkével (No Label) látható összes funkciójelző betöltésre kerül. Az alábbi példában látható módon egy címkeszűrő beállításával konfigurálhatja a betöltött funkciójelzőket:
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].key-filter=A*
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter= dev
Funkciójelző telemetriai adatai
Ha engedélyezve van a funkciójelző telemetria, az Azure App Configuration szolgáltató további tulajdonságokat injektál a funkciójelző telemetriai adataihoz. Ezek a tulajdonságok további kontextust biztosítanak a funkciójelzőről és annak kiértékeléséről:
- AllocationID: A funkciójelző foglalásának állapotát jelképező egyedi azonosító.
- ETag: A funkciójelző aktuális ETagje.
-
FeatureFlagReference: Hivatkozás a funkciójelzőre a következő formátumban
<your_store_endpoint>kv/<feature_flag_key>: . Ha egy címke jelen van, a hivatkozás lekérdezési paraméterként tartalmazza:<your_store_endpoint>kv/<feature_flag_key>?label=<feature_flag_label>.
A szolgáltatáskezelés alapjai
Funkciójelölők
A funkciójelzők több részből állnak, köztük egy névből és a funkció bekapcsolásához használt funkciószűrők listájából. A funkciójelzők logikai állapota be- vagy kikapcsolható, vagy a funkciószűrők listájával is rendelkezhetnek. A funkciójelölők addig értékelik a funkciószűrőket, amíg az egyik vissza nem ad true. Ha egyik funkciószűrő sem ad vissza értéket true, akkor a funkciójelző zászló visszaadja false.
Funkciószűrők
A funkciószűrők meghatároznak egy forgatókönyvet, amikor engedélyezni kell egy funkciót. A funkciószűrők kiértékelése szinkron módon történik.
A szolgáltatásfelügyeleti kódtár négy előre definiált szűrővel rendelkezik: AlwaysOnFilter, PercentageFilter, TimeWindowFilter és TargetingFilter.
Egyéni funkciószűrőket is létrehozhat. Egy funkciószűrővel például egyéni élményt biztosíthat a Microsoft Edge böngészőt használó ügyfelek számára. A funkciószűrő funkcióit testreszabhatja például a Microsoft Edge böngésző célközönségének egy adott fejlécének megjelenítéséhez.
Funkciójelző deklarációja
A szolgáltatásfelügyeleti kódtár támogatja az Azure-alkalmazáskonfigurációt, valamint application.yml vagy application.properties szolgáltatást a funkciójelzők forrásaként. Íme egy példa a funkciójelölők application.yml fájlban való beállításához használt formátumra:
feature-management:
feature_flags:
- id: feature-t
enabled: false
- id: feature-u
conditions:
client_filters:
- name: Random
- id: feature-v
conditions:
client_filters:
- name: TimeWindowFilter
parameters:
Start: "Wed, 01 May 2019 13:59:59 GMT"
End: "Mon, 01 July 2019 00:00:00 GMT"
- id: feature-w
evaluate: false
conditions:
client_filters:
- name: AlwaysOnFilter
Ebben a példában a következő funkciójelölők szerepelnek:
-
feature-tbeállítás értéke :false. Ez a beállítás mindig a funkciójelző értékét adja vissza. -
feature-ufunkciószűrőkkel használható. Ezek a szűrők a tulajdonság alatt vannak definiálvaenabled-for. Ebben az esetben afeature-uegy funkciószűrővel rendelkezikRandom, amely nem igényel konfigurációt, ezért csak a név szükséges. -
feature-va nevű funkciószűrőtTimeWindowFilteradja meg. Ennek a funkciószűrőnek paraméterek adhatók át konfigurációként való használatra. Ebben a példában egyTimeWindowFiltera kezdési és befejezési időket adja meg bemenetként, amikor a szolgáltatás aktív. -
feature-w-t használják azAlwaysOnFilter-hez, amely mindigtrue-re értékelődik ki. Aevaluatemező a funkciószűrők kiértékelésének leállítására szolgál, és a funkciószűrő mindig visszatérfalse.
Funkciójelzők kiértékelése
A spring-cloud-azure-feature-management kódtár segítségével FeatureManager megállapíthatja, hogy engedélyezve van-e egy funkciójelző.
FeatureManager aszinkron módon ellenőrzi a jelölő állapotát.
A spring-cloud-azure-feature-management-weba FeatureManagernyújtása mellett tartalmazza a FeatureManagerSnapshot-t is, amely gyorsítótárazza a korábban kiértékelt funkciójelzők állapotát a @RequestScope-ban, így garantálva, hogy minden kérés ugyanazt az értéket adja vissza. Emellett a webtár is biztosít @FeatureGate, amely letilthatja vagy átirányíthatja a webes kérelmeket különböző végpontokra.
Funkciójelző ellenőrzése
FeatureManager olyan @Bean, amely @Autowired lehet, vagy @Component típusú objektumokba illeszthető.
FeatureManager olyan metódussal isEnabled rendelkezik, amely a funkciójelző nevének átadásakor visszaadja az állapotát.
@Autowired
FeatureManager featureManager;
...
if (featureManager.isEnabled("feature-t")) {
// Do Something
}
Feljegyzés
FeatureManager rendelkezik a(z) isEnabled aszinkron verziójával, amit isEnabledAsync-nek hívnak.
Szolgáltatásfelügyeleti konfiguráció nélkül, vagy ha a funkciójelző nem létezik, a isEnabled mindig false-t ad vissza. Ha egy meglévő funkciójelző ismeretlen funkciószűrővel van konfigurálva, akkor a rendszer egy jelölőt FilterNotFoundException ad meg. A viselkedést úgy változtathatja meg, hogy a false-t fail-fast-re konfigurálja, így a false-t adja vissza. Az alábbi táblázat a következőket ismerteti fail-fast:
| Név | Leírás | Kötelező | Alapértelmezett |
|---|---|---|---|
spring.cloud.azure.feature.management.fail-fast |
Kivétel esetén a rendszer egy RuntimeException hibát ad ki. Ha ez a tulajdonság be van állítva false, akkor a isEnabledfalse-t ad vissza helyette. |
Nem | true |
Az egyetlen különbség a FeatureManagerSnapshot és FeatureManager között az, hogy az eredményeket a @RequestScope -ben gyorsítótárazhassuk.
Funkciókapu
A szolgáltatásfelügyeleti webtárban megkövetelheti, hogy egy adott funkció engedélyezve legyen egy végpont végrehajtásához. Ezt a követelményt a @FeatureGate széljegyzet használatával állíthatja be, ahogyan az alábbi példában látható:
@GetMapping("/featureT")
@FeatureGate(feature = "feature-t")
@ResponseBody
public String featureT() {
...
}
A végpontot csak akkor érheti el, ha a featureT "feature-t" engedélyezve van.
Letiltott műveletkezelés
Ha egy végpont le van tiltva, mert az általa megadott funkció le van tiltva, DisabledFeaturesHandler a rendszer meghívja. Alapértelmezés szerint a rendszer egy HTTP 404-et ad vissza. A DisabledFeaturesHandler implementálásával felülbírálhatja ezt a viselkedést, ahogy az a következő példában is látható.
@Component
public class MyDisabledFeaturesHandler implements DisabledFeaturesHandler {
@Override
public HttpServletResponse handleDisabledFeatures(HttpServletRequest request, HttpServletResponse response) {
...
return response;
}
}
Útválasztás
A funkciók bizonyos útvonalakat nyithatnak meg, amelyek elérhetővé teszik az alkalmazás képességeit. Ha egy funkció le van tiltva, átirányíthatja ezeket az útvonalakat egy másik végpontra, ahogyan az alábbi példában látható:
@GetMapping("/featureT")
@FeatureGate(feature = "feature-t" fallback= "/oldEndpoint")
@ResponseBody
public String featureT() {
...
}
@GetMapping("/oldEndpoint")
@ResponseBody
public String oldEndpoint() {
...
}
Beépített funkciószűrők
Van néhány funkciószűrő, amelyek a spring-cloud-azure-feature-management csomaghoz tartoznak. Ezek a funkciószűrők automatikusan hozzáadódnak.
AlwaysOnFilter
Ez a szűrő mindig ad vissza true. Használati példaként tekintse meg a funkciójelző deklarálási szakaszát.
Százalékszűrő
PercentageFilter az egyes ellenőrzések során eltérő eredményt adhat vissza. Az inkonzisztenciát FeatureManagementSnapshot segítségével kerülheti meg, amely a funkciózászló eredményét az adott kéréshez gyorsítótárazza.
feature-management:
feature_flags:
- name: feature-v
conditions:
client_filters:
- name: PercentageFilter
parameters:
Value: 50
Időablak Szűrő
Ez a szűrő lehetővé teszi egy szolgáltatás időkereten alapuló engedélyezését. Ha csak a End-t adja meg, a funkció addig be van kapcsolva. Ha csak Start megadja, a funkció az adott időpont után minden időpontban bekapcsoltnak tekintett. Ha mindkettőt megadja, a szolgáltatás a két időpont között érvényesnek minősül.
feature-management:
feature_flags:
- name: feature-v
conditions:
client_filters:
- name: TimeWindowFilter
parameters:
Start: "Wed, 01 May 2019 13:59:59 GMT"
End: "Mon, 01 July 2019 00:00:00 GMT"
Ez a szűrő az ismétlődő időablak-szűrőket is támogatja. Támogatja a napi és heti ismétlődéseket, valamint a lejárati időt.
feature-management:
feature_flags:
- name: feature-v
conditions:
client_filters:
- name: TimeWindowFilter
parameters:
Start: "Mon, 01 July 2019 00:00:00 GMT"
End: "Mon, 01 July 2019 12:00:00 GMT"
Recurrence:
Pattern:
Type: Weekly
Interval: 1
FirstDayOfWeek: Sunday
DaysOfWeek:
- Monday
- Wednesday
Ez az ismétlődési minta minden héten hétfőn és szerdán történik 00:00:00 GMT és 12:00:00 GMT között, és nem jár le.
feature-management:
feature_flags:
- name: feature-v
conditions:
client_filters:
- name: TimeWindowFilter
parameters:
Start: "Mon, 01 July 2019 00:00:00 GMT"
End: "Mon, 01 July 2019 12:00:00 GMT"
Recurrence:
Pattern:
Type: Daily
Interval: 2
Range:
Type: EndDate
EndDate: "Fri, 15 Aug 2025 07:00:00 GMT"
Ez az ismétlődési minta minden második nap 00:00:00 GMT és 12:00:00 GMT között történik a befejezési dátumig.
Célzószűrő
Ez a szűrő lehetővé teszi egy szolgáltatás engedélyezését a célközönség számára. A célzás részletes magyarázatát a célzás szakaszában találja. A szűrőparaméterek közé tartozik egy célközönségobjektum, amely a felhasználókat, csoportokat és a felhasználói bázis azon alapértelmezett százalékos arányát írja le, amelyeknek hozzáféréssel kell rendelkezniük a szolgáltatáshoz. A célközönségben felsorolt összes csoportobjektumhoz szükség van egy százalékra, amely meghatározza a csoport azon tagjainak százalékos arányát, amelyek hozzáférnek a funkcióhoz. A felhasználó számára a funkció a következő esetekben engedélyezett:
- A felhasználó közvetlenül a felhasználók szakaszában van megadva.
- A felhasználó szerepel a csoportos bevezetések bármelyikének százalékos arányában.
- A felhasználó az alapértelmezett bevezetési százalékhoz tartozik.
feature-management:
feature_flags:
- name: target
conditions:
client_filters:
- name: targetingFilter
parameters:
users:
- Jeff
- Alicia
groups:
- name: Ring0
rollout-percentage: 100
- name: Ring1
rolloutPercentage: 100
default-rollout-percentage: 50
Egyéni funkciószűrők
Egyéni szolgáltatásszűrő létrehozása lehetővé teszi a szolgáltatások engedélyezését az Ön által megadott feltételek alapján. Egyéni funkciószűrő létrehozásához implementálnia kell a FeatureFilter felületet.
FeatureFilter egyetlen metódussal evaluaterendelkezik. Ha egy szolgáltatás megadja, hogy egy funkciószűrővel engedélyezhető legyen, a evaluate metódus meghívása történik. Ha evaluate visszaadja true, az azt jelenti, hogy a funkciót engedélyezni kell. Ha visszaadja false, a funkciószűrők kiértékelése mindaddig folytatódik, amíg vissza nem tér true. Ha az összes szűrő visszatér false, akkor a funkció ki van kapcsolva.
A funkciószűrők Spring Beans-ként vannak definiálva, tehát vagy @Component-ként vagy @Configuration-ben vannak definiálva.
@Component("Random")
public class Random implements FeatureFilter {
@Override
public boolean evaluate(FeatureFilterEvaluationContext context) {
double chance = Double.valueOf((String) context.getParameters().get("chance"));
return Math.random() > chance / 100;
}
}
Paraméteres funkciószűrők
Egyes funkciószűrőkhöz paraméterek szükségesek annak meghatározásához, hogy be kell-e kapcsolni egy funkciót. Előfordulhat például, hogy egy böngészőfunkció-szűrő bekapcsol egy funkciót egy bizonyos böngészőkészlethez. Előfordulhat, hogy engedélyezni szeretne egy funkciót a Microsoft Edge- és Chrome-böngészőkben, a Firefoxban azonban nem. A helyzet beállításához létrehozhat egy funkciószűrőt, amely paramétereket vár. Ezek a paraméterek a szolgáltatáskonfigurációban és a kódban lesznek megadva, és a FeatureFilterEvaluationContextevaluateparaméteren keresztül érhetők el.
FeatureFilterEvaluationContext van egy tulajdonsága parameters, amely egy Map<String, Object>.
Célcsoportkezelés
A célzás egy funkciókezelési stratégia, amely lehetővé teszi a fejlesztők számára, hogy fokozatosan új funkciókat vezessenek be a felhasználói bázisukra. A stratégia a célközönségként ismert felhasználók egy csoportjának megcélzására épül. A célközönség meghatározott felhasználókból, csoportokból és a teljes felhasználói bázis meghatározott százalékából áll. A közönségbe felvett csoportok további bontásban, a teljes tagok százalékos arányára bonthatók.
Az alábbi lépések egy új bétaverziós funkció fokozatos bevezetésére mutatnak be példát:
- Az egyes felhasználók Jeff és Alicia kapnak hozzáférést a bétaverzióhoz.
- Egy másik felhasználó, Mark, kéri, hogy jelentkezzen be, és szerepel benne.
- A "Ring1" nevű csoport felhasználóinak húsz százaléka szerepel a bétaverzióban.
- A bétaverzióban szereplő "Ring1" felhasználók száma 100%-ra nő.
- A felhasználói bázis öt százaléka szerepel a bétaverzióban.
- A bevezetési százalék akár 100 százalék is lehet, és a funkció teljesen ki lett adva.
Ez a funkció üzembehelyre kerülési stratégiája a beépített TargetingFilter funkciószűrőn keresztül van beépítve a kódtárba.
Célzás egy alkalmazásban
A célzási funkciószűrőt használó példa webalkalmazás a példaprojektben érhető el.
Ahhoz, hogy elkezdhesse használni a TargetingFilter egy alkalmazásban, hozzá kell adnia azt @Bean egy funkciószűrőként, mint ahogy bármelyik másikat is.
TargetingFilter egy másik @Bean-ra támaszkodik, amelyet az alkalmazáshoz TargetingContextAccessor hozzá kell adni. Ez TargetingContextAccessor lehetővé teszi az aktuális felhasználóazonosító és -csoportok meghatározásához használni kívánt aktuális TargetingContext érték meghatározását, ahogyan az alábbi példában látható:
public class MyTargetingContextAccessor implements TargetingContextAccessor {
@Override
public void configureTargetingContext(TargetingContext context) {
context.setUserId("Jeff");
ArrayList<String> groups = new ArrayList<String>();
groups.add("Ring0");
context.setGroups(groups);
}
}
A kiértékelési lehetőségek célzása
Lehetőségek állnak rendelkezésre a célzási értékelés végrehajtásának testreszabására egy adott TargetingFilter esetén. A létrehozás során megadhat egy opcionális paramétertTargetingEvaluationOptionsTargetingFilter.
@Bean
public TargetingFilter targetingFilter(MyTargetingContextAccessor contextAccessor) {
return new TargetingFilter(contextAccessor, new TargetingEvaluationOptions().setIgnoreCase(true));
}
Konfiguráció frissítése
A konfigurációk konfigurációfrissítésének engedélyezésével az alkalmazás újraindítása nélkül lekérheti a legújabb értékeket az Alkalmazáskonfigurációs áruházból vagy -tárolóból.
A frissítés engedélyezéséhez engedélyeznie kell a monitorozást és a monitorozási eseményindítókat. A monitorozási eseményindító egy olyan kulcs, amely opcionális címkével rendelkezik, amelyet a rendszer figyel a frissítések aktiválásához szükséges értékmódosításokért. A monitorozási eseményindító értéke bármilyen érték lehet, amennyiben megváltozik, amikor frissítésre van szükség.
Feljegyzés
Minden olyan művelet, amely módosítja a monitorozási eseményindító ETag-azonosítóját, frissítést okoz, például tartalomtípus-módosítást.
spring:
cloud:
azure:
appconfiguration:
stores:
- monitoring:
enabled: true
triggers:
- key: [my-watched-key]
label: [my-watched-label]
Konfigurációfrissítés aktiválásához módosítsa egy kulcs értékét a konfigurációs tárban. Ezután frissítse az egyik órakulcsot egy új értékre. Ez a módosítás elindítja a napló létrehozását. Például a /application/config.message értékének módosítása kiváltja a következő naplóüzenetet:
INFO 17496 --- [TaskScheduler-1] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [config.message]
Miután az alkalmazás létrehozta a naplót, frissíti a frissítési hatókörben lévő összes @Bean elemet.
Feljegyzés
Alapértelmezés szerint a @ConfigurationProperties jegyzetekkel ellátott babok szerepelnek ebben a hatókörben.
Lekéréses alapú frissítés
Az alkalmazáskonfigurációs spring-kódtárak támogatják a figyelési eseményindítókon végrehajtott módosítások frissítési időközeinek rendszeres ellenőrzését. Alapértelmezés szerint a frissítési időköz 30 másodpercre van állítva. A frissítési időköz eltelte után, amikor frissítési kísérlet történik, az adott tárolóban lévő összes eseményindítót ellenőrzik a módosítások szempontjából. A kulcs módosítása esetén a frissítés aktiválódik. Mivel a kódtárak integrálva vannak a Spring frissítési rendszerrel, minden frissítés újra betölti az összes konfigurációt az összes áruházból. A frissítési időközt tetszőleges, 1 másodpercnél hosszabb időközre állíthatja be. A frissítési időköz támogatott egységei: s másodpercek, m percek, h órák és d napok. Az alábbi példa 5 percre állítja a frissítési időközt:
spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 5m
Automatizált
A kódtár használatakor az spring-cloud-azure-appconfiguration-config-web alkalmazás automatikusan ellenőrzi a frissítést, amikor egy servlet-kérés történik, különösen ServletRequestHandledEvent. Az esemény küldésének leggyakoribb módja, hogy az a végpontokra kéréseket küld @RestController.
Kézikönyv
Azokban az alkalmazásokban, amelyek csak spring-cloud-azure-appconfiguration-config-t használnak, mint a konzolalkalmazások, manuálisan indíthat frissítést a AppConfigurationRefreshrefreshConfiguration metódusának meghívásával.
AppConfigurationRefresh egy @Bean, amelyet be tudsz injektálni bármelyik @Component-be.
Mivel a kódtár a Spring konfigurációs rendszerét használja, a frissítés aktiválása az összes konfiguráció frissítését eredményezi, nem csak az Azure App Configuration Store-ból származó konfigurációk újratöltését.
Push-alapú frissítés (nem ajánlott)
Feljegyzés
Ez a módszer már nem ajánlott, de jelenleg is támogatott.
Beállíthatja, hogy a spring-cloud-azure-appconfiguration-config-web könyvtár push értesítéseket kapjon az Azure App Configuration store-ból a konfigurációs értékek frissítésének céljából. Ezt a konfigurációt egy Azure Event Grid Web Hook használatával állíthatja be, amely konfigurálható úgy, hogy értesítéseket küldjön a megadott kulcsok módosításairól. Ha függőségként hozzáadja a Spring Actuator-kódtárat, közzéteheti az alkalmazáskonfiguráció frissítési végpontjait. Két különböző végpont létezik: appconfiguration-refresh és appconfiguration-refresh-bus. Ezek a végpontok hasonlóan működnek a megfelelőikhez refresh és refresh-bus. Az alkalmazáskonfigurációs végpontok lehetővé teszik, hogy a frissítési időköz lejárjon ahelyett, hogy frissítést kényszerítenek, amikor fogadnak valamit. Továbbra is használhatja az refresh és refresh-bus, de nem csatlakoztathatja őket közvetlenül az Azure Event Gridhez webhook használatával, mert a beállításhoz válaszra van szükség.
A appconfiguration-refresh tulajdonság lejártatja a frissítési időközt, így a fennmaradó frissítési időközt nem várják meg a következő frissítés előtt. A appconfiguration-refresh-bus tulajdonság értesítést küld egy csatlakoztatott üzenetküldő szolgáltatásnak, például az Azure Service Busnak, amely értesíti egy alkalmazás összes frissítési példányát. Mindkét esetben nem jár le teljesen a frissítési időközön belül, de kis mennyiségű jitter ki van kapcsolva. Ez a jitter biztosítja, hogy az alkalmazás minden példánya ne kíséreljen meg egyszerre frissíteni.
management.endpoints.web.exposure.include= appconfiguration-refresh, appconfiguration-refresh-bus
A frissítési végpontok felfedése mellett a kódtárnak szüksége van egy lekérdezési paraméterre a biztonság érdekében. Alapértelmezés szerint nincs jogkivonat neve vagy értéke, de be kell állítania egyet a végpontok használatára, ahogy az az alábbi példában látható:
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name=[primary-token-name]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret=[primary-token-secret]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.secondary-token.name=[secondary-token-name]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.secondary-token.secret=[secondary-token-secret]
Webes horgok beállítása
Webes horog beállításához nyissa meg a Azure-alkalmazás Konfigurációs tárat, és nyissa meg az Események parancsot a navigációs menüből. Ezután válassza az Esemény-előfizetés lehetőséget. Adja meg az esemény nevét, és válassza ki a webhook végponttípusát. A Web Hook kiválasztásakor megjelenik egy végpontbeállítás . Válassza a Végpont kiválasztása lehetőséget. A végpontnak a következő példához hasonlóan kell kinéznie: https://www.myaplication.com/actuator/appconfiguration-refresh?myTokenName=mySecret.
A Kiválasztás megerősítése beállítási értesítést küld a megadott URI-hoz, és elvárja a választ. Ha nem ad vissza választ, a telepítés meghiúsul. A azure-spring-cloud-appconfiguration-web végpontok kódtárbeállítása a megfelelő választ adja vissza, ha a Azure-alkalmazás konfigurációs tár az alkalmazáshoz van konfigurálva. Ezt a visszaigazolást más módon is elküldheti. A webhook kézbesítéséről további információt a Webhook eseménykézbesítésében talál.
Feljegyzés
Ez az ellenőrzés csak a végpont létrehozásakor vagy módosításakor történik.
Javasoljuk, hogy állítson be szűrőket, mert ellenkező esetben a rendszer minden kulcs létrehozása és módosítása után elindít egy frissítést.
Kényszerített ügyfélfrissítés
A kódtár úgy konfigurálható, hogy frissítési időközzel kényszerítse az összes konfiguráció frissítését. A következő táblázat a tulajdonságot refresh-interval ismerteti:
| Név | Leírás | Kötelező | Alapértelmezett |
|---|---|---|---|
spring.cloud.azure.appconfiguration.refresh-interval |
A frissítések közötti szokásos időtartam. Ez egy Duration. |
Nem | null |
A spring.cloud.azure.appconfiguration.refresh-interval frissítés nem ellenőrzi a konfigurált órakulcsokat. Ez a tulajdonság biztosítja, hogy a Key Vault titkos kulcsai naprakészek legyenek, mert Azure-alkalmazás konfiguráció nem tudja megállapítani, hogy mikor frissülnek.
Mivel az Azure Key Vault titkos kulcsként tárolja a tanúsítvány nyilvános és titkos kulcspárját, az alkalmazás bármely tanúsítványt lekérhet Key Vault-referenciaként az Alkalmazáskonfigurációban. Mivel a tanúsítványokat rendszeres időközönként kell elforgatni, az ügyfélalkalmazásoknak ugyanolyan gyakran kell frissülnie, ami az ügyfél frissítési időközével végezhető el.
Funkciójelző frissítése
Ha a funkciójelölők és a figyelés is engedélyezve van, akkor alapértelmezés szerint a funkciójelölők frissítési időköze 30 másodpercre van állítva. Amikor a frissítési időköz véget ér, a rendszer ellenőrzi az adott tár összes funkciójelzőjét a módosításokhoz. A kulcs módosítása esetén a frissítés aktiválódik. Mivel a kódtárak integrálva vannak a Spring frissítési rendszerrel, minden frissítés újra betölti az összes konfigurációt az összes áruházból. A frissítési időközt tetszőleges, 1 másodpercnél hosszabb időközre állíthatja be. A frissítési időköz támogatott egységei: s másodpercek, m percek, h órák és d napok. Az alábbi példa 5 percre állítja a frissítési időközt:
spring.cloud.azure.appconfiguration.stores[0].monitoring.feature-flag-refresh-interval= 5m
Állapotjelző
Az ügyfél-könyvtár állapotjelzővel rendelkezik, amely ellenőrzi, hogy az Azure App Configuration tárolóhoz vagy tárolókhoz való kapcsolat egészséges-e. Ha az egyes tárolók esetében engedélyezve van, az alábbi állapotértékek egyikét adja meg:
- UP – Az utolsó kapcsolat sikeres volt.
- DOWN – Az utolsó kapcsolat nem 200-as hibakódot eredményezett. Ez az állapot az olyan problémák miatt alakulhat ki, mint a hitelesítési adatokat érintő lejárat vagy a szolgáltatási probléma. Az ügyfélkódtár a következő frissítési időközön automatikusan újra megpróbál csatlakozni az áruházhoz.
- NINCS BETÖLTVE – A konfigurációs tár a helyi konfigurációs fájlban szerepel, de a konfigurációs tár nem lett betöltve a fájlból indításkor. A konfigurációs tároló le van tiltva a konfigurációs fájlban, vagy a konfiguráció vagy konfigurációk indításkor nem töltődtek be, miközben a
fail-fasttároló konfigurációjafalsevolt beállítva.
Az állapotjelzőt úgy engedélyezheti, hogy a management.health.azure-app-configuration.enabled=true beállítást megadja.
Ügyfél-specifikus testreszabás
Az alkalmazáskonfigurációs kódtár a Java-hoz készült Azure SDK-t használja a Azure-alkalmazás Konfigurációhoz és az Azure Key Vaulthoz való csatlakozáshoz. Két felület, ConfigurationClientCustomizer és SecretClientCustomizer, lett megadva az ügyfelek módosításához. Minden interfész rendelkezik egy customize metódussal, amely megkapja a megfelelő szerkesztőt és azt az URI értéket, amelyhez az ügyfél konfigurálva van, ahogy az az alábbi interfészdefiníciókban látható:
public interface ConfigurationClientCustomizer {
public void customize(ConfigurationClientBuilder builder, String endpoint);
}
public interface SecretClientCustomizer {
public void customize(SecretClientBuilder builder, String endpoint);
}
Ezek a felületek lehetővé teszik a HTTP-ügyfél és konfigurációi testreszabását. Az alábbi példa lecseréli az alapértelmezett HttpClient értéket egy másikra, amely proxyt használ az Alkalmazáskonfiguráció és a Key Vault felé irányuló összes forgalomhoz.
Feljegyzés
Az ConfigurationClientBuilder és SecretClientBuilder már be van állítva a használatra, amikor átkerül a customize-be. Az ügyfelek módosításai, beleértve a hitelesítő adatokat és az újrapróbálkozási szabályzatot, felülbírálják a már meglévő alapértelmezett értékeket.
Ezt a konfigurációt a Spring Cloud Azure-konfigurációval is elvégezheti.
public class CustomClient implements ConfigurationClientCustomizer, SecretClientCustomizer {
@Override
public void customize(ConfigurationClientBuilder builder, String endpoint) {
builder.httpClient(buildHttpClient());
}
@Override
public void customize(SecretClientBuilder builder, String endpoint) {
builder.httpClient(buildHttpClient());
}
private HttpClient buildHttpClient() {
String hostname = System.getProperty("https.proxyHosts");
String portString = System.getProperty("https.proxyPort");
int port = Integer.valueOf(portString);
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP,
new InetSocketAddress(hostname, port));
return new NettyAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
}
}