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óit Azure-alkalmazás Konfigurációval, hogy hatékonyan kezelje ezt a kihívást.

A következőt fogja áttekinteni:

  • ASP.NET alapkonfigurációs infrastruktúra.
  • Kubernetes-konfiguráció absztrakció – a ConfigMap.
  • Azure-alkalmazás Konfigurációs 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 regisztrált a láncban, mint önmagában. Az előző listában szereplő regisztrációs sorrend alapján egy UseFeatureManagement parancssori paraméter felülír egy környezeti változót UseFeatureManagement . Hasonlóképpen, a UseFeatureManagement benne lévő appsettings.json kulcsokat felül lehet bírálni egy UseFeatureManagement , a következőben appsettings.Development.jsontárolt kulccsal: .

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ál a rendszer a kulcsok elválasztásához kettőspont (:) helyett. A platformfüggetlen ekvivalens jelölés például eShop__Store__SeasonalSale a következőhöz eShop:Store:SeasonalSale: .

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ékelyítő módon történik. Például a ConnectionStringconnectionstring rendszer egyenértékű kulcsként kezeli őket. 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 fájljából docker-compose.yml :

services: 

  frontend:
    image: storeimage
    build:
      context: .
      dockerfile: DockerfileStore
    environment: 
      - ProductEndpoint=http://backend:8080
      - ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features.azconfig.io;Id=QWQy;Secret=V/4r/rhg/0tdy2L/AmMfBUcgTrYC4krRC7uFqbjRvDU=
    ports:
      - "32000:8080"
    depends_on: 
      - backend

A fájlrészlet a következőket határozza meg:

  • A YAML-fájl szakaszában environment tárolt változók az előző kódrészletben kiemelt módon.
  • A tárolóalapú alkalmazás környezeti változóként jelenik meg.
  • 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 a Azure-alkalmazás Konfiguráció szolgáltatást vezet 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 inaktív, 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 Azure-alkalmazás Konfiguráció 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 használatával kérhetők le. A NET konfigurációs absztrakciója – az IConfiguration interfész.

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árat a NuGeten keresztül osztja el két különböző, nevesített Microsoft.FeatureManagement csomag Microsoft.FeatureManagement.AspNetCoreformájában. Ez utóbbi csomag tag helpers for use in a ASP.NET Core project's Razor files. 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ódtár a tetején IConfigurationvan felépítve. Ezért kompatibilis bármely .NET-konfigurációszolgáltatóval, beleértve a Azure-alkalmazás Konfiguráció szolgáltatóját is. Mivel a kódtár leválasztva van Azure-alkalmazás konfigurációról, a kettő integrálása a konfigurációszolgáltatón keresztül lehetséges. A kódtár Azure-alkalmazás Konfigurációval való 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ó a Azure-alkalmazás-konfigurációval

A Azure-alkalmazás-konfigurá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 fájljábólProgram.cs:

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:

  • A rendszer meghívja az alkalmazás metódusátbuilder.Configuration, hogy regisztráljon egy konfigurációszolgáltatót a Azure-alkalmazás Configuration Store-hoz. A konfigurációszolgáltató regisztrálva van a következő AddAzureAppConfigurationhívással: .
  • A Azure-alkalmazás konfigurációszolgáltató viselkedése a következő beállításokkal van konfigurálva:
    • Hitelesítés a megfelelő Azure-szolgáltatásban a metódushívásnak Connect átadott kapcsolati sztring keresztül. A kapcsolati sztring lekéri a connectionString változóból. A regisztrált konfigurációs források a következőn keresztül builder.Configurationérhetők el: .
    • A funkciójelzők támogatásának engedélyezése a hívással.UseFeatureFlags
  • A Azure-alkalmazás konfiguráció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.

Tipp.

Egy ASP.NET Core-projektben a regisztrált szolgáltatók listájához a configBuilder.Sources /> tulajdonság ConfigureAppConfigurationelemzésével férhet hozzá.