Alkalmazáskonfigurációs fogalmak áttekintése
Az elosztott környezet mikroszolgáltatásainak létrehozása jelentős kihívást jelent. A felhőalapú mikroszolgáltatások gyakran több tárolóban futnak különböző régiókban. Egy olyan megoldás implementálása, amely elválasztja az egyes szolgáltatások kódját a konfigurációtól, megkönnyíti a problémák osztályozását minden környezetben.
Ebben a leckében megtudhatja, hogyan integrálhatja ASP.NET Core- és Docker-konfigurációs funkciókat az Azure App Configuration szolgáltatással, hogy hatékonyan kezelje ezt a kihívást.
A következőt fogja áttekinteni:
- ASP.NET alapkonfigurációs infrastruktúra.
- Az absztrakció a Kubernetes-konfigurációban – a ConfigMap.
- Azure App Configuration szolgáltatás.
- .NET szolgáltatásfelügyeleti kódtár.
- Az alkalmazásban implementált funkciójelző összetevők.
ASP.NET Core-konfiguráció
Egy ASP.NET Core-projekt konfigurációja egy vagy több . NET-konfigurációszolgáltatóban található. A konfigurációszolgáltató egy adott konfigurációs forrás, például egy JSON-fájl absztrakciója. A konfigurációs forrás értékei kulcs-érték párok gyűjteményeként jelennek meg.
A ASP.NET Core-alkalmazások több konfigurációszolgáltatót is regisztrálhatnak a különböző forrásokból származó beállítások olvasásához. Az alapértelmezett alkalmazásgazda esetén a rendszer több konfigurációszolgáltatót is automatikusan regisztrál. A következő konfigurációs források érhetők el a felsorolt sorrendben:
- JSON-fájl (appsettings.json)
- JSON-fájl (appsettings.{environment}.json)
- Felhasználói titkos kódok
- Környezeti változók
- Parancssor
Minden konfigurációszolgáltató saját kulcsértéket adhat hozzá. Ezenkívül bármely szolgáltató felülbírálhat egy olyan szolgáltató értékét, amely korábban lett regisztrálva a láncban, mint magánál. Az előző listában szereplő regisztrációs sorrend alapján egy UseFeatureManagement parancssori paraméter felülír egy UseFeatureManagement környezeti változót. Hasonlóképpen, a UseFeatureManagement kulcsot a appsettings.json-ben felül lehet bírálni egy UseFeatureManagement kulccsal, amelyet a appsettings.Development.jsontárol.
A konfigurációs kulcsok nevei leírhatják a hierarchiát. Az eShop:Store:SeasonalSale jelölés például az eShop alkalmazás Áruház mikroszolgáltatásában található Szezonális értékesítés funkcióra utal. Ez a struktúra a konfigurációs értékeket objektumdiagramra vagy tömbre is megfeleltetheti.
Fontos
Egyes platformok nem támogatják a környezeti változók neveinek kettőspontját. A platformfüggetlen kompatibilitás érdekében kettős aláhúzásjelet (__) használunk kettőspont (:) helyett a kulcsok elválasztásához. A eShop__Store__SeasonalSale például a eShop:Store:SeasonalSaleplatformfüggetlen egyenértékű jelölése.
ASP.NET Core egy ConfigurationBinderrel rendeli le a konfigurációs értékeket objektumokra és tömbökre. A kulcsnevek leképezése kis- és nagybetűket nem érzékenyítő módon történik. A ConnectionString és a connectionstring például egyenértékű kulcsként kezelik. További információ: kulcsok és értékek.
Docker-konfiguráció
A Dockerben a konfiguráció kulcs-érték párok gyűjteményként való kezelésére az egyik absztrakció a tároló YAML-fájljának környezeti változó szakasza. Az alábbi kódrészlet egy részlet az alkalmazás docker-compose.yml fájljából:
services:
frontend:
image: storeimage
build:
context: .
dockerfile: DockerfileStore
environment:
- ProductEndpoint=http://backend:8080
- ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features.azconfig.io;Id=<ID>;Secret=<SECRET>
ports:
- "32000:8080"
depends_on:
- backend
A fájlrészlet a következőket határozza meg:
- A YAML-fájl
environmentszakaszában tárolt változók az előző kódrészletben kiemelt módon. - A tárolóalapú alkalmazásnak környezeti változókként kerül bemutatásra.
- A .NET-konfigurációs értékek mikroszolgáltatás-alkalmazásokban való megőrzésének mechanizmusa.
A környezeti változók platformfüggetlen mechanizmusok, amelyek futtatókörnyezeti konfigurációt biztosítanak a Docker-tárolókban üzemeltetett alkalmazások számára.
Azure App Configuration
A központosított konfigurációs szolgáltatás különösen hasznos mikroszolgáltatás-alkalmazásokban és más elosztott alkalmazásokban. Ez a modul az Azure App Configuration szolgáltatást mutatja be a konfigurációs értékek központi kezeléséhez– különösen a funkciójelzőkhöz. A szolgáltatás megkönnyíti a konfiguráció alkalmazással való üzembe helyezésekor felmerülő hibák elhárítását.
Az Alkalmazáskonfiguráció egy teljes mértékben felügyelt szolgáltatás, amely titkosítja a kulcsértékeket mind nyugalmi állapotban, mind átvitel közben. A benne tárolt konfigurációs értékek valós időben frissíthetők anélkül, hogy újra kellene üzembe helyeznie vagy újra kellene indítania egy alkalmazást.
Egy ASP.NET Core-alkalmazásban az Azure App Configuration konfigurációszolgáltatóként van regisztrálva. A szolgáltatói regisztráción kívül az alkalmazás nem tud az Alkalmazáskonfigurációs áruházról. A konfigurációs értékek a .NET konfigurációs absztrakciója, a IConfiguration felület, használatával kérhetők le.
Funkciókezelési kódtár
A szolgáltatásfelügyeleti kódtár szabványosított .NET API-kat biztosít a funkciójelzők alkalmazásokon belüli kezeléséhez. A kódtár két különböző, Microsoft.FeatureManagement és Microsoft.FeatureManagement.AspNetCorenevű csomag formájában van elosztva a NuGeten keresztül. Ez utóbbi csomag segítő tagokat biztosít ASP.NET Core projekt Razor fájljaiban való használatra. A korábbi csomag akkor elegendő, ha nincs szükség a címkesegítőkre, vagy ha nem ASP.NET Core-projekttel használja.
A könyvtár a(z) IConfigurationtetejére épült. Ezért kompatibilis bármely .NET-konfigurációs szolgáltatóval, beleértve az Azure App Configuration szolgáltatóját is. Mivel a kódtár leválasztva van az Azure App Configurationról, a kettő integrálása a konfigurációszolgáltatón keresztül lehetséges. A kódtár és az Azure App Configuration kombinálásával dinamikusan válthat a funkciók között a támogató infrastruktúra implementálása nélkül.
Integráció az Azure-alkalmazáskonfigurációval
Az Azure-alkalmazáskonfiguráció és a szolgáltatásfelügyeleti kódtár integrációjának megismeréséhez tekintse meg az alábbi részletet egy ASP.NET Core-projekt Program.cs fájljából:
string connectionString = builder.Configuration.GetConnectionString("AppConfig");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
options.Connect(connectionString)
.UseFeatureFlags();
});
Az előző kódrészletben:
- Az alkalmazás
builder.Configurationmetódusának meghívásával regisztrálhat egy konfigurációszolgáltatót az Azure App Configuration Store-ban. A konfigurációszolgáltató aAddAzureAppConfigurationhívásán keresztül regisztrálódik. - Az Azure Alkalmazáskonfigurációs szolgáltató viselkedése a következő beállításokkal van konfigurálva:
- Hitelesítés a megfelelő Azure-szolgáltatásban a
Connectmetódushívásnak átadott kapcsolati sztringen keresztül. A kapcsolati sztring aconnectionStringváltozóból van lekérve. A regisztrált konfigurációs forrásokbuilder.Configurationkeresztül érhetők el. - A funkciójelzők támogatásának engedélyezése a
UseFeatureFlagshívásával.
- Hitelesítés a megfelelő Azure-szolgáltatásban a
- Az Azure Alkalmazáskonfigurációs szolgáltató felülírja az összes többi regisztrált konfigurációs szolgáltatót, mert az a többi után van regisztrálva.
Borravaló
Egy ASP.NET Core-projektben a regisztrált szolgáltatók listáját a configBuilder.SourcesConfigureAppConfiguration tulajdonság elemzésével érheti el.