Przegląd pojęć dotyczących konfiguracji aplikacji
Tworzenie mikrousług dla środowiska rozproszonego stanowi istotne wyzwanie. Mikrousługi hostowane w chmurze często działają w wielu kontenerach w różnych regionach. Implementowanie rozwiązania oddzielające kod każdej usługi od konfiguracji ułatwia klasyfikowanie problemów we wszystkich środowiskach.
W tej lekcji dowiesz się, jak zintegrować funkcje konfiguracji ASP.NET Core i Docker z usługą aplikacja systemu Azure Configuration, aby skutecznie rozwiązać ten problem.
Zapoznasz się z artykułem:
- ASP.NET Podstawowa infrastruktura konfiguracji.
- Abstrakcję konfiguracji platformy Kubernetes — ConfigMap.
- aplikacja systemu Azure Usługa konfiguracji.
- Biblioteka zarządzania funkcjami platformy .NET.
- Składniki flagi funkcji zaimplementowane w aplikacji.
Konfiguracja na platformie ASP.NET Core
Konfiguracja w projekcie ASP.NET Core jest zawarta w co najmniej jednym dostawcy konfiguracji platformy .NET. Dostawca konfiguracji jest abstrakcją dla określonego źródła konfiguracji, takiego jak plik JSON. Wartości źródła konfiguracji są reprezentowane jako kolekcja par klucz-wartość.
Aplikacja ASP.NET Core może zarejestrować wielu dostawców konfiguracji w celu odczytu ustawień z różnych źródeł. Przy użyciu domyślnego hosta aplikacji kilku dostawców konfiguracji jest automatycznie rejestrowanych. Następujące źródła konfiguracji są dostępne w podanej kolejności:
- Plik JSON (appsettings.json)
- Plik JSON (appsettings.{environment}.json)
- Wpisy tajne użytkownika
- Zmienne środowiskowe
- Wiersz polecenia
Każdy dostawca konfiguracji może współtworzyć własną wartość klucza. Ponadto każdy dostawca może zastąpić wartość od dostawcy, który został zarejestrowany wcześniej w łańcuchu niż sam. Biorąc pod uwagę kolejność rejestracji na powyższej liście, UseFeatureManagement
parametr wiersza polecenia zastępuje zmienną środowiskową UseFeatureManagement
. UseFeatureManagement
Podobnie klucz w ramach appsettings.json programu może zostać zastąpiony przez UseFeatureManagement
klucz przechowywany w pliku appsettings.Development.json.
Nazwy kluczy konfiguracji mogą opisywać hierarchię. Na przykład notacja eShop:Store:SeasonalSale odnosi się do funkcji SeasonalSale w ramach mikrousługi Store aplikacji eShop. Ta struktura może również mapować wartości konfiguracji na wykres obiektu lub tablicę.
Ważne
Niektóre platformy nie obsługują dwukropka w nazwach zmiennych środowiskowych. Aby zapewnić zgodność międzyplatformową, podwójne podkreślenie (__
) jest używane zamiast dwukropka (:
) do rozdzielenia kluczy. Na przykład eShop__Store__SeasonalSale
to notacja równoważna międzyplatformowa dla elementu eShop:Store:SeasonalSale
.
ASP.NET Core używa klasy ConfigurationBinder do mapowania wartości konfiguracji na obiekty i tablice. Mapowanie na nazwy kluczy odbywa się w sposób bez uwzględniania wielkości liter. Na przykład ConnectionString
i connectionstring
są traktowane jako klucze równoważne. Aby uzyskać więcej informacji, zobacz klucze i wartości.
Konfiguracja platformy Docker
W usłudze Docker jedną abstrakcją do obsługi konfiguracji jako kolekcji par klucz-wartość jest sekcja zmiennej środowiskowej pliku YAML kontenera. Poniższy fragment kodu to fragment pliku aplikacji 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=<ID>;Secret=<SECRET>
ports:
- "32000:8080"
depends_on:
- backend
Fragment kodu pliku definiuje:
- Zmienne przechowywane w
environment
sekcji pliku YAML, jak wyróżniono w poprzednim fragmencie kodu. - Przedstawiana aplikacji konteneryzowanej jako zmienne środowiskowe.
- Mechanizm utrwalania wartości konfiguracji platformy .NET w aplikacjach mikrousług.
Zmienne środowiskowe to międzyplatformowy mechanizm zapewniający konfigurację środowiska uruchomieniowego aplikacjom hostowanymi w kontenerach platformy Docker.
Azure App Configuration
Scentralizowana usługa konfiguracji jest szczególnie przydatna w aplikacjach mikrousług i innych aplikacjach rozproszonych. W tym module przedstawiono aplikacja systemu Azure Configuration as a service na potrzeby centralnego zarządzania wartościami konfiguracji — w szczególności flag funkcji. Usługa ułatwia rozwiązywanie problemów z błędami, które pojawiają się podczas wdrażania konfiguracji z aplikacją.
App Configuration to w pełni zarządzana usługa, która szyfruje wartości kluczy magazynowanych i przesyłanych. Wartości konfiguracji przechowywane za jej pomocą można aktualizować w czasie rzeczywistym bez konieczności ponownego wdrażania lub ponownego uruchamiania aplikacji.
W aplikacji ASP.NET Core usługa aplikacja systemu Azure Configuration jest zarejestrowana jako dostawca konfiguracji. Oprócz rejestracji dostawcy aplikacja nie wie o sklepie App Configuration. Wartości konfiguracji można pobrać z niej za pomocą polecenia . Abstrakcja konfiguracji platformy NET — IConfiguration
interfejs.
Biblioteka zarządzania funkcjami
Biblioteka zarządzania funkcjami udostępnia ustandaryzowane interfejsy API platformy .NET do zarządzania flagami funkcji w aplikacjach. Biblioteka jest dystrybuowana za pośrednictwem narzędzia NuGet w postaci dwóch różnych pakietów o nazwie Microsoft.FeatureManagement
i Microsoft.FeatureManagement.AspNetCore
. Ten ostatni pakiet udostępnia pomocników tagów do użycia w plikach Razor projektu ASP.NET Core. Poprzedni pakiet jest wystarczający, gdy pomocnicy tagów nie są potrzebne lub nie są używane z projektem ASP.NET Core.
Biblioteka jest zbudowana na szczycie IConfiguration
. Z tego powodu jest on zgodny z dowolnym dostawcą konfiguracji platformy .NET, w tym dostawcą aplikacja systemu Azure Configuration. Ponieważ biblioteka jest oddzielona od konfiguracji aplikacja systemu Azure, integracja tych dwóch elementów jest możliwa za pośrednictwem dostawcy konfiguracji. Połączenie tej biblioteki z konfiguracją aplikacja systemu Azure umożliwia dynamiczne przełączanie funkcji bez implementowania pomocniczej infrastruktury.
Integracja z konfiguracją aplikacja systemu Azure
Aby zrozumieć integrację aplikacja systemu Azure Configuration i biblioteki zarządzania funkcjami, zapoznaj się z następującym fragmentem pliku projektu Program.cs
ASP.NET Core:
string connectionString = builder.Configuration.GetConnectionString("AppConfig");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
options.Connect(connectionString)
.UseFeatureFlags();
});
W poprzednim fragmentze kodu:
- Metoda aplikacji jest wywoływana w celu zarejestrowania
builder.Configuration
dostawcy konfiguracji dla magazynu aplikacja systemu Azure Configuration. Dostawca konfiguracji jest zarejestrowany za pośrednictwem wywołania metodyAddAzureAppConfiguration
. - Zachowanie dostawcy aplikacja systemu Azure Configuration jest konfigurowane przy użyciu następujących opcji:
- Uwierzytelnij się w odpowiedniej usłudze platformy Azure za pośrednictwem parametry połączenia przekazanej do wywołania
Connect
metody. Parametry połączenia jest pobierana ze zmiennejconnectionString
. Zarejestrowane źródła konfiguracji są udostępniane za pośrednictwem programubuilder.Configuration
. - Włącz obsługę flag funkcji za pośrednictwem wywołania metody
UseFeatureFlags
.
- Uwierzytelnij się w odpowiedniej usłudze platformy Azure za pośrednictwem parametry połączenia przekazanej do wywołania
- Dostawca aplikacja systemu Azure Configuration zastępuje wszystkich innych zarejestrowanych dostawców konfiguracji, ponieważ jest on zarejestrowany po innych.
Napiwek
W projekcie ASP.NET Core można uzyskać dostęp do listy zarejestrowanych dostawców, analizując configBuilder.Sources
właściwość wewnątrz ConfigureAppConfiguration
elementu .