Kontrola konceptů konfigurace aplikací

Dokončeno

Vytváření mikroslužeb pro distribuované prostředí představuje významnou výzvu. Mikroslužby hostované v cloudu se často spouštějí v několika kontejnerech v různých oblastech. Implementace řešení, které odděluje kód jednotlivých služeb od konfigurace, usnadňuje třídění problémů ve všech prostředích.

V této lekci se dozvíte, jak integrovat funkce konfigurace ASP.NET Core a Dockeru se službou Azure App Configuration, abyste mohli tento problém efektivně řešit.

Projdete si následující:

  • ASP.NET základní konfigurační infrastrukturu.
  • Abstrakce konfigurace systému Kubernetes – prvek ConfigMap.
  • Služba Azure App Configuration.
  • Knihovna pro správu funkcí .NET.
  • Součásti přepínače funkcí implementované v aplikaci

konfigurace ASP.NET Core

Konfigurace v projektu ASP.NET Core je obsažena v jednom nebo několika poskytovatelích konfigurace rozhraní .NET . zprostředkovatel konfigurace představuje abstrakci konkrétního zdroje konfigurace, jako je soubor JSON. Hodnoty zdroje konfigurace jsou reprezentovány jako kolekce párů klíč-hodnota.

Aplikace ASP.NET Core může zaregistrovat více poskytovatelů konfigurace ke čtení nastavení z různých zdrojů. U výchozího hostitele aplikace se automaticky zaregistruje několik zprostředkovatelů konfigurace. V uvedeném pořadí jsou k dispozici následující zdroje konfigurace:

  1. Soubor JSON (appsettings.json)
  2. Soubor JSON (appsettings.{environment}.json)
  3. Tajné kódy uživatelů
  4. Proměnné prostředí
  5. Příkazový řádek

Každý poskytovatel konfigurace může přidat svou vlastní hodnotu klíče. Každý zprostředkovatel může navíc přepsat hodnotu od poskytovatele, který byl zaregistrován dříve v řetězci než sám. S ohledem na pořadí registrace v předchozím seznamu, parametr příkazového řádku UseFeatureManagement přepíše proměnnou prostředí UseFeatureManagement. Podobně lze klíč UseFeatureManagement v rámci appsettings.json přepsat klíčem UseFeatureManagement uloženým v appsettings.Development.json.

Názvy konfiguračních klíčů mohou popisovat hierarchii. Například notace eShop:Store:SeasonalSale odkazuje na funkci SeasonalSale v mikroslužbě obchodu aplikace eShop . Tato struktura může také mapovat konfigurační hodnoty na objektový graf nebo pole.

Důležitý

Některé platformy nepodporují dvojtečku v názvech proměnných prostředí. K zajištění kompatibility mezi platformami se k oddělovači klíčů používá dvojité podtržítko (__) místo dvojtečky (:). Například eShop__Store__SeasonalSale je ekvivalentní zápis pro eShop:Store:SeasonalSalepro různé platformy .

ASP.NET Core používá ConfigurationBinder k mapování hodnot konfigurace na objekty a pole. Mapování na názvy klíčů probíhá bez ohledu na velikost písmen. Například ConnectionString a connectionstring se považují za ekvivalentní klíče. Další informace najdete v tématu klíče a hodnoty.

Konfigurace Dockeru

V Dockeru slouží k zpracování konfigurace jako kolekce dvojic klíč-hodnota sekce proměnných prostředí v YAML souboru kontejneru. Následující fragment kódu je výňatek ze souboru docker-compose.yml aplikace:

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

Fragment kódu souboru definuje:

  • Proměnné uložené v části environment souboru YAML, jak je zvýrazněno v předchozím fragmentu kódu.
  • Kontejnerizované aplikaci jsou předloženy jako proměnné prostředí.
  • Mechanismus pro zachování hodnot konfigurace .NET v aplikacích mikroslužeb

Proměnné prostředí jsou mechanismem pro více platforem, který poskytuje konfiguraci za běhu aplikacím hostovaným v kontejnerech Dockeru.

Azure App Configuration

Centralizovaná konfigurační služba je zvlášť užitečná v aplikacích mikroslužeb a dalších distribuovaných aplikacích. Tento modul představuje Azure App Configuration jako službu pro centrální správu hodnot konfigurace – konkrétně pro příznaky funkcí. Služba usnadňuje řešení chyb, ke kterým dochází při nasazení konfigurace s aplikací.

App Configuration je plně spravovaná služba, která šifruje klíčové hodnoty jak v klidu, tak při přenosu. Konfigurační hodnoty uložené s ním je možné aktualizovat v reálném čase bez nutnosti opětovného nasazení nebo restartování aplikace.

V aplikaci ASP.NET Core je služba Azure App Configuration zaregistrovaná jako poskytovatel konfigurace. Kromě registrace poskytovatele aplikace neví o obchodě App Configuration Store. Hodnoty konfigurace lze z ní načíst prostřednictvím abstrakce konfigurace v .NETu – rozhraní IConfiguration.

Knihovna správy funkcí

Knihovna Správa funkcí poskytuje standardizovaná rozhraní .NET API pro správu příznaků funkcí v aplikacích. Knihovna se distribuuje prostřednictvím NuGetu ve formě dvou různých balíčků s názvem Microsoft.FeatureManagement a Microsoft.FeatureManagement.AspNetCore. Druhý balíček poskytuje tagové pomocníky pro použití v Razor souborech projektu ASP.NET Core. Předchozí balíček stačí, když nejsou potřeba Tag Helpers nebo pokud se nepoužívají s projektem ASP.NET Core.

Knihovna je postavena na IConfiguration. Z tohoto důvodu je kompatibilní s jakýmkoli poskytovatelem konfigurace .NET, včetně zprostředkovatele pro Azure App Configuration. Vzhledem k tomu, že je knihovna oddělená od služby Azure App Configuration, je integrace těchto dvou možností možná prostřednictvím zprostředkovatele konfigurace. Kombinace této knihovny se službou Azure App Configuration umožňuje dynamicky přepínat funkce bez implementace podpůrné infrastruktury.

Integrace se službou Azure App Configuration

Pokud chcete porozumět integraci služby Azure App Configuration a knihovny pro správu funkcí, přečtěte si následující výňatek ze souboru Program.cs projektu ASP.NET Core:

string connectionString = builder.Configuration.GetConnectionString("AppConfig");

// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
  options.Connect(connectionString)
    .UseFeatureFlags();
});

V předchozím fragmentu kódu:

  • Metoda builder.Configuration aplikace se volá k registraci zprostředkovatele konfigurace pro Azure App Configuration Store. Zprostředkovatel konfigurace je registrován prostřednictvím volání AddAzureAppConfiguration.
  • Chování poskytovatele azure App Configuration je nakonfigurované s následujícími možnostmi:
    • Ověřte se u příslušné služby Azure pomocí připojovacího řetězce, který je předán metodě volání Connect. Připojovací řetězec se načte z proměnné connectionString. Registrované zdroje konfigurace jsou zpřístupněny prostřednictvím builder.Configuration.
    • Povolte podporu příznaků funkcí prostřednictvím volání UseFeatureFlags.
  • Zprostředkovatel azure App Configuration nahrazuje všechny ostatní registrované poskytovatele konfigurace, protože je zaregistrovaný po všech ostatních.

Spropitné

V projektu ASP.NET Core můžete získat přístup k seznamu registrovaných poskytovatelů analýzou vlastnosti configBuilder.Sources uvnitř ConfigureAppConfiguration.