najlepsze rozwiązania dotyczące konfiguracji aplikacja systemu Azure
W tym artykule omówiono typowe wzorce i najlepsze rozwiązania dotyczące korzystania z usługi aplikacja systemu Azure Configuration.
Grupowania kluczy
Usługa App Configuration udostępnia dwie opcje organizowania kluczy:
- Prefiksy kluczy
- Etykiety
Do grupowania kluczy można użyć jednej lub obu opcji.
Prefiksy kluczy to początkowe części kluczy. Zestaw kluczy można logicznie zgrupować przy użyciu tego samego prefiksu w nazwach. Prefiksy mogą zawierać wiele składników połączonych przez ogranicznik, na /
przykład , podobny do ścieżki adresu URL, aby utworzyć przestrzeń nazw. Takie hierarchie są przydatne podczas przechowywania kluczy dla wielu aplikacji i mikrousług w jednym magazynie usługi App Configuration.
Ważne jest, aby pamiętać, że klucze są tym, do czego odwołuje się kod aplikacji, aby pobrać wartości odpowiednich ustawień. Klucze nie powinny się zmieniać lub trzeba będzie modyfikować kod za każdym razem, gdy tak się stanie.
Etykiety są atrybutem kluczy. Są one używane do tworzenia wariantów klucza. Można na przykład przypisać etykiety do wielu wersji klucza. Wersja może być iteracją, środowiskiem lub innymi informacjami kontekstowymi. Aplikacja może zażądać zupełnie innego zestawu klucz-wartości, określając inną etykietę. W rezultacie wszystkie odwołania do kluczy pozostają niezmienione w kodzie.
Kompozycje par klucz-wartość
Usługa App Configuration traktuje wszystkie klucze przechowywane z nim jako niezależne jednostki. Usługa App Configuration nie próbuje wywnioskować żadnej relacji między kluczami ani dziedziczyć wartości kluczy na podstawie ich hierarchii. Można jednak agregować wiele zestawów kluczy, używając etykiet połączonych z odpowiednim stosem konfiguracji w kodzie aplikacji.
Spójrzmy na przykład. Załóżmy, że masz ustawienie o nazwie Asset1, którego wartość może się różnić w zależności od środowiska deweloperskiego. Należy utworzyć klucz o nazwie "Asset1" z pustą etykietą i etykietą o nazwie "Programowanie". W pierwszej etykiecie należy umieścić wartość domyślną elementu Asset1 i umieścić konkretną wartość "Programowanie" w drugim.
W kodzie należy najpierw pobrać wartości kluczy bez żadnych etykiet, a następnie pobrać ten sam zestaw klucz-wartości po raz drugi z etykietą "Programowanie". Po pobraniu wartości po raz drugi poprzednie wartości kluczy zostaną zastąpione. System konfiguracji platformy .NET umożliwia "stos" wiele zestawów danych konfiguracji nawzajem. Jeśli klucz istnieje w więcej niż jednym zestawie, używany jest ostatni zestaw zawierający go. Dzięki nowoczesnej strukturze programowania, takiej jak .NET, możesz bezpłatnie uzyskać tę funkcję stosu, jeśli do uzyskiwania dostępu do usługi App Configuration używasz natywnego dostawcy konfiguracji. Poniższy fragment kodu przedstawia sposób implementowania stosu w aplikacji .NET:
// Augment the ConfigurationBuilder with Azure App Configuration
// Pull the connection string from an environment variable
configBuilder.AddAzureAppConfiguration(options => {
options.Connect(configuration["connection_string"])
.Select(KeyFilter.Any, LabelFilter.Null)
.Select(KeyFilter.Any, "Development");
});
Użyj etykiet, aby włączyć różne konfiguracje dla różnych środowisk , zawiera kompletny przykład.
Odwołania do danych zewnętrznych
Usługa App Configuration jest przeznaczona do przechowywania wszelkich danych konfiguracji, które zwykle są zapisywane w plikach konfiguracji lub zmiennych środowiskowych. Jednak niektóre typy danych mogą być lepiej dostosowane do przechowywania w innych źródłach. Na przykład przechowuj wpisy tajne w usłudze Key Vault, pliki w usłudze Azure Storage, informacje o członkostwie w grupach firmy Microsoft lub listy klientów w bazie danych.
Nadal możesz korzystać z usługi App Configuration, zapisując odwołanie do danych zewnętrznych w klucz-wartość. Możesz użyć typu zawartości, aby odróżnić każde źródło danych. Gdy aplikacja odczytuje odwołanie, ładuje rzeczywiste dane ze źródła, do których odwołuje się odwołanie, przy założeniu, że ma niezbędne uprawnienia do źródła. Jeśli zmienisz lokalizację danych zewnętrznych, wystarczy zaktualizować odwołanie w usłudze App Configuration zamiast aktualizować i ponownie wdrażać całą aplikację.
Funkcja referencyjna usługi Key Vault usługi App Configuration jest przykładem w tym przypadku. Umożliwia ona aktualizowanie wpisów tajnych wymaganych przez aplikację w razie potrzeby, podczas gdy same podstawowe wpisy tajne pozostają w usłudze Key Vault.
Uruchamianie konfiguracji aplikacji
Aby uzyskać dostęp do sklepu App Configuration, możesz użyć jej parametry połączenia, która jest dostępna w witrynie Azure Portal. Ponieważ parametry połączenia zawierają informacje o poświadczeniach, są uznawane za wpisy tajne. Te wpisy tajne muszą być przechowywane w usłudze Azure Key Vault, a kod musi uwierzytelnić się w usłudze Key Vault, aby je pobrać.
Lepszym rozwiązaniem jest użycie funkcji tożsamości zarządzanych w usłudze Microsoft Entra ID. W przypadku tożsamości zarządzanych adres URL punktu końcowego konfiguracji aplikacji jest potrzebny tylko do uruchamiania dostępu do magazynu usługi App Configuration. Adres URL można osadzić w kodzie aplikacji (na przykład w pliku appsettings.json ). Aby uzyskać szczegółowe informacje, zobacz Używanie tożsamości zarządzanych do uzyskiwania dostępu do usługi App Configuration .
Dostęp usługi Azure Kubernetes Service do usługi App Configuration
Następujące opcje są dostępne dla obciążeń hostowanych w usłudze Azure Kubernetes Service (AKS) w celu uzyskania dostępu do konfiguracji aplikacja systemu Azure. Te opcje dotyczą również ogólnie platformy Kubernetes.
Dodaj dostawcę kubernetes konfiguracji aplikacja systemu Azure do klastra usługi AKS. Dostawca Kubernetes działa jako zasobnik w klastrze. Może on tworzyć ConfigMaps i Secrets z kluczy-wartości i odwołań usługi Key Vault w magazynie usługi App Configuration. ConfigMap i Secret są używane jako zmienne środowiskowe lub zainstalowane pliki bez konieczności modyfikacji kodu aplikacji. Jeśli masz wiele aplikacji działających w tym samym klastrze usługi AKS, wszystkie te aplikacje mogą uzyskiwać dostęp do wygenerowanych map konfiguracji i wpisów tajnych, eliminując potrzebę poszczególnych żądań do usługi App Configuration. Dostawca Kubernetes obsługuje również aktualizacje konfiguracji dynamicznej. Jest to zalecana opcja, jeśli jest to możliwe dla Ciebie.
Zaktualizuj aplikację, aby korzystała z bibliotek dostawcy aplikacja systemu Azure Configuration. Biblioteki dostawcy są dostępne w wielu strukturach i językach, takich jak ASP.NET, .NET, Java Spring, JavaScript/Node.js i Python. Takie podejście zapewnia pełny dostęp do funkcji usługi App Configuration, w tym dynamicznej konfiguracji i zarządzania funkcjami. Masz szczegółową kontrolę nad tym, jakie dane mają być ładowane, oraz z którego magazynu usługi App Configuration dla każdej aplikacji.
Integracja z wdrożeniem platformy Kubernetes przy użyciu programu Helm. Jeśli nie chcesz aktualizować aplikacji ani dodawać nowego zasobnika do klastra usługi AKS, możesz dodawać dane z usługi App Configuration do klastra Kubernetes przy użyciu narzędzia Helm za pośrednictwem wdrożenia. Takie podejście umożliwia aplikacji kontynuowanie uzyskiwania dostępu do konfiguracji ze zmiennych kubernetes i wpisów tajnych. Uaktualnienie programu Helm można uruchomić za każdym razem, gdy aplikacja ma uwzględniać nowe zmiany konfiguracji.
Dostęp usługi App Service lub usługi Azure Functions do usługi App Configuration
Użyj dostawcy usługi App Configuration lub bibliotek zestawu SDK, aby uzyskać dostęp do usługi App Configuration bezpośrednio w aplikacji. Takie podejście zapewnia pełny dostęp do funkcji usługi App Configuration, w tym dynamicznej konfiguracji i zarządzania funkcjami. Aplikacja działająca w usłudze App Service lub usłudze Azure Functions może uzyskać dostęp do magazynu usługi App Configuration za pomocą dowolnej z następujących metod:
- Włącz tożsamość zarządzaną w usłudze App Service lub usłudze Azure Functions i przyznaj jej dostęp do magazynu usługi App Configuration. Aby uzyskać więcej informacji, zobacz Używanie tożsamości zarządzanych do uzyskiwania dostępu do usługi App Configuration.
- Zapisz parametry połączenia w magazynie usługi App Configuration w ustawieniach aplikacji usługi App Service lub Azure Functions. W celu zapewnienia zwiększonych zabezpieczeń zapisz parametry połączenia w usłudze Key Vault i odwołaj się do niej z usługi App Service lub usługi Azure Functions.
Możesz również udostępnić dane konfiguracji aplikacji jako ustawienia aplikacji lub zmienne środowiskowe. Dzięki temu podejściu można uniknąć zmiany kodu aplikacji.
- Dodaj odwołania do danych usługi App Configuration w ustawieniach aplikacji usługi App Service lub usługi Azure Functions. Usługa App Configuration oferuje narzędzia do eksportowania kolekcji klucz-wartości jako odwołań jednocześnie. Aby uzyskać więcej informacji, zobacz Use App Configuration references for App Service and Azure Functions (Używanie odwołań do konfiguracji aplikacji dla usług App Service i Azure Functions).
- Wyeksportuj dane konfiguracji aplikacji do ustawień aplikacji usługi App Service lub usługi Azure Functions bez wybierania opcji eksportu jako odwołania. Ponownie wyeksportuj dane za każdym razem, gdy wprowadzasz nowe zmiany w usłudze App Configuration, jeśli chcesz, aby aplikacja pobierała zmiany.
Ograniczanie żądań wysyłanych do usługi App Configuration
Nadmierne żądania do usługi App Configuration mogą spowodować ograniczenie przepustowości lub opłaty nadwyżkowe. Aby zmniejszyć liczbę wykonanych żądań:
Zwiększ interwał odświeżania, zwłaszcza jeśli wartości konfiguracji nie zmieniają się często. Określ nowy interwał odświeżania
SetCacheExpiration
przy użyciu metody .Obejrzyj pojedynczy klucz sentinel, zamiast obserwować poszczególne klucze. Odśwież wszystkie konfiguracje tylko wtedy, gdy klucz sentinel ulegnie zmianie. Zobacz Używanie konfiguracji dynamicznej w aplikacji ASP.NET Core, aby zapoznać się z przykładem.
Użyj dostawcy Kubernetes konfiguracji aplikacji, jeśli uruchamiasz wiele obciążeń w klastrze Kubernetes, z których każde ściąga dane z usługi App Configuration pojedynczo. Dostawca Kubernetes pobiera dane z usługi App Configuration i udostępnia je jako kubernetes ConfigMaps i secrets. Dzięki temu obciążenia mogą uzyskiwać dostęp do danych za pośrednictwem obiektów ConfigMaps i Secret bez konieczności oddzielnego ściągania danych z usługi App Configuration.
Włącz replikację geograficzną magazynu usługi App Configuration i rozłóż żądania w wielu replikach. Na przykład użyj innej repliki z każdego regionu geograficznego dla globalnie wdrożonej aplikacji. Każda replika usługi App Configuration ma swój oddzielny limit przydziału żądań. Ta konfiguracja zapewnia model umożliwiający skalowalność i zwiększoną odporność na przejściowe i regionalne awarie.
Importowanie danych konfiguracji do usługi App Configuration
Usługa App Configuration oferuje opcję zbiorczego importowania ustawień konfiguracji z bieżących plików konfiguracji przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia. Możesz również użyć tych samych opcji, aby wyeksportować wartości kluczy z usługi App Configuration, na przykład między powiązanymi magazynami. Jeśli konfiguracja została przyjęta jako kod i zarządzasz konfiguracjami w usłudze GitHub lub Azure DevOps, możesz skonfigurować ciągły import plików konfiguracji przy użyciu funkcji GitHub Actions lub zadania importu potoku platformy Azure.
Wdrażanie w wielu regionach w usłudze App Configuration
Jeśli aplikacja jest wdrożona w wielu regionach, zalecamy włączenie replikacji geograficznej magazynu App Configuration. Możesz zezwolić aplikacji na łączenie się głównie z repliką zgodną z regionem, w którym wdrożono wystąpienia aplikacji, i umożliwić im przełączanie w tryb failover do replik w innych regionach. Ta konfiguracja minimalizuje opóźnienie między aplikacją a usługą App Configuration, rozkłada obciążenie, ponieważ każda replika ma oddzielne przydziały ograniczania przepustowości i zwiększa odporność aplikacji na przejściowe i regionalne awarie. Aby uzyskać więcej informacji, zobacz Odporność i odzyskiwanie po awarii.
Kompilowanie aplikacji z wysoką odpornością
Aplikacje często opierają się na konfiguracji, aby rozpocząć, co aplikacja systemu Azure Konfiguracja ma krytyczne znaczenie dla wysokiej dostępności. Aby zapewnić lepszą odporność, aplikacje powinny korzystać z funkcji niezawodności usługi App Configuration i rozważyć podjęcie następujących działań na podstawie określonych wymagań.
- Aprowizuj obsługę stref dostępności platformy Azure w regionach. Strefy dostępności umożliwiają aplikacjom odporność na awarie centrum danych. Usługa App Configuration oferuje nadmiarowość stref dla wszystkich klientów bez dodatkowych opłat. Zaleca się utworzenie magazynu usługi App Configuration w regionach z obsługą stref dostępności. Listę regionów , w których usługa App Configuration włączyła obsługę stref dostępności.
- Włącz replikację geograficzną i zezwól aplikacji na przejście w tryb failover lub rozłożenie obciążenia między replikami. Ta konfiguracja zapewnia model umożliwiający skalowalność i zwiększoną odporność na błędy przejściowe i awarie regionalne. Aby uzyskać więcej informacji, zobacz Odporność i odzyskiwanie po awarii.
- Wdrażanie konfiguracji przy użyciu bezpiecznych rozwiązań wdrażania. Nieprawidłowe lub przypadkowe zmiany konfiguracji mogą często powodować przestoje aplikacji. Należy unikać wprowadzania zmian konfiguracji, które mają wpływ na produkcję bezpośrednio z witryny Azure Portal, jeśli jest to możliwe. W przypadku bezpiecznych praktyk wdrażania (SDP) należy użyć progresywnego modelu wdrażania ekspozycji, aby zminimalizować potencjalny promień wybuchu problemów spowodowanych wdrożeniem. W przypadku wdrożenia protokołu SDP można skompilować i przetestować migawkę konfiguracji przed wdrożeniem jej w środowisku produkcyjnym. Podczas wdrażania można zaktualizować wystąpienia aplikacji, aby stopniowo pobierać nową migawkę. Jeśli wykryto problemy, możesz wycofać zmianę, ponownie wdrażając migawkę ostatniego znanego dobrego (LKG). Migawka jest niezmienna i gwarantuje spójność we wszystkich wdrożeniach. Migawki można używać wraz z konfiguracją dynamiczną. Użyj migawki dla konfiguracji podstawowej i konfiguracji dynamicznej dla przesłonięć konfiguracji awaryjnej i flag funkcji.
- Dołącz konfigurację do aplikacji. Jeśli chcesz mieć pewność, że aplikacja zawsze ma dostęp do kopii konfiguracji lub jeśli wolisz uniknąć zależności środowiska uruchomieniowego od usługi App Configuration, możesz całkowicie ściągnąć konfigurację z usługi App Configuration podczas kompilacji lub wydania i dołączyć ją do aplikacji. Aby dowiedzieć się więcej, zapoznaj się z przykładami integracji usługi App Configuration z potokiem ciągłej integracji/ciągłego wdrażania lub wdrożeniem rozwiązania Kubernetes.
- Użyj dostawców usługi App Configuration. Aplikacje odgrywają kluczową rolę w osiąganiu wysokiej odporności, ponieważ mogą uwzględniać problemy występujące w czasie wykonywania, takie jak problemy z siecią, i szybciej reagować na błędy. Dostawcy usługi App Configuration oferują szereg wbudowanych funkcji odporności, w tym automatyczne odnajdywanie replik, tryb failover repliki, ponawianie prób uruchamiania z dostosowywalnymi limitami czasu, buforowaniem konfiguracji i strategiami adaptacyjnymi na potrzeby niezawodnego odświeżania konfiguracji. Zdecydowanie zaleca się korzystanie z tych funkcji za pomocą dostawców usługi App Configuration. Jeśli nie jest to opcja, rozważ zaimplementowanie podobnych funkcji w rozwiązaniu niestandardowym, aby osiągnąć najwyższy poziom odporności.
Aplikacje klienckie w usłudze App Configuration
W przypadku korzystania z usługi App Configuration w aplikacjach klienckich należy wziąć pod uwagę dwa główne czynniki. Po pierwsze, jeśli używasz parametry połączenia w aplikacji klienckiej, ryzykujesz ujawnienie klucza dostępu magazynu App Configuration do publicznej wiadomości. Po drugie, typowa skala aplikacji klienckiej może powodować nadmierne żądania do magazynu usługi App Configuration, co może spowodować obciążenie nadwyżkowe lub ograniczenie przepustowości. Aby uzyskać więcej informacji na temat ograniczania przepustowości, zobacz często zadawane pytania.
Aby rozwiązać te problemy, zalecamy użycie usługi proxy między aplikacjami klienckimi a magazynem App Configuration. Usługa proxy może bezpiecznie uwierzytelniać się w magazynie usługi App Configuration bez problemu z zabezpieczeniami polegającego na wycieku informacji uwierzytelniania. Usługę serwera proxy można utworzyć przy użyciu jednej z bibliotek dostawcy usługi App Configuration, dzięki czemu można korzystać z wbudowanych funkcji buforowania i odświeżania w celu optymalizacji liczby żądań wysyłanych do usługi App Configuration. Aby uzyskać więcej informacji na temat korzystania z dostawców usługi App Configuration, zobacz artykuły w przewodnikach Szybki start i samouczkach. Usługa proxy obsługuje konfigurację z pamięci podręcznej do aplikacji klienckich i unikasz dwóch potencjalnych problemów omówionych w tej sekcji.
Aplikacje wielodostępne w usłudze App Configuration
Aplikacja wielodostępna jest oparta na architekturze, w której współużytkowane wystąpienie aplikacji obsługuje wielu klientów lub dzierżawców. Na przykład możesz mieć usługę poczty e-mail, która oferuje użytkownikom oddzielne konta i dostosowane środowiska. Aplikacja zwykle zarządza różnymi konfiguracjami dla każdej dzierżawy. Poniżej przedstawiono niektóre zagadnienia dotyczące architektury dotyczące używania usługi App Configuration w aplikacji wielodostępnej.
Konfiguracja jako kod
Konfiguracja jako kod to praktyka zarządzania plikami konfiguracji w systemie kontroli źródła, na przykład repozytorium git. Zapewnia korzyści, takie jak śledzenie i proces zatwierdzania dla wszelkich zmian konfiguracji. Jeśli przyjmujesz konfigurację jako kod, usługa App Configuration ma narzędzia ułatwiające zarządzanie danymi konfiguracji w plikach i wdrażanie ich w ramach procesu kompilacji, wydania lub ciągłego wdrażania. Dzięki temu aplikacje mogą uzyskiwać dostęp do najnowszych danych ze sklepów App Configuration.
- W przypadku usługi GitHub możesz zaimportować pliki konfiguracji z repozytorium GitHub do magazynu usługi App Configuration przy użyciu funkcji GitHub Actions
- W przypadku usługi Azure DevOps możesz dołączyć aplikacja systemu Azure Configuration Import, zadanie potoku platformy Azure w potokach kompilacji lub wydania na potrzeby synchronizacji danych.
- Możesz również zaimportować pliki konfiguracji do usługi App Configuration przy użyciu interfejsu wiersza polecenia platformy Azure w ramach systemu ciągłej integracji/ciągłego wdrażania. Aby uzyskać więcej informacji, zobacz az appconfig kv import.
Ten model umożliwia uwzględnienie kroków weryfikacji i testowania przed zatwierdzeniem danych w usłudze App Configuration. Jeśli używasz wielu magazynów usługi App Configuration, możesz również wypchnąć dane konfiguracji do nich przyrostowo lub jednocześnie.