Alkalmazáskonfigurációs fogalmak áttekintése

Befejeződött

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:

  1. JSON-fájl (appsettings.json)
  2. JSON-fájl (appsettings.{environment}.json)
  3. Felhasználói titkos kódok
  4. Környezeti változók
  5. 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 environment szakaszá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.Configuration metó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ó a AddAzureAppConfigurationhí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 Connect metódushívásnak átadott kapcsolati sztringen keresztül. A kapcsolati sztring a connectionString változóból van lekérve. A regisztrált konfigurációs források builder.Configurationkeresztül érhetők el.
    • A funkciójelzők támogatásának engedélyezése a UseFeatureFlagshívásával.
  • 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.