Sdílet prostřednictvím


Osvědčené postupy konfigurace Aplikace Azure

Tento článek popisuje běžné vzory a osvědčené postupy při používání služby Azure App Configuration.

Klíčová seskupení

App Configuration nabízí dvě možnosti pro uspořádání klíčů:

  • Předpony klíčů
  • Štítky

K seskupení klíčů můžete použít jednu nebo obě možnosti.

Předpony klíčů umožňují seskupit související klíče pomocí společné předpony v jejich názvech. Předpony můžou zahrnovat více segmentů oddělených oddělovači, jako jsou například / nebo :, čímž tvoří hierarchický obor názvů. Tento přístup je užitečný při ukládání konfiguračních klíčů pro více aplikací nebo mikroslužeb v rámci jednoho úložiště App Configuration.

Je důležité si uvědomit, že klíče jsou ve vašem aplikačním kódu přímo zmiňované k načtení jejich odpovídajících hodnot. Klíče by proto měly zůstat stabilní, aby se zabránilo změnám kódu. V případě potřeby můžete pomocí zprostředkovatele konfigurace aplikace oříznout předpony klíčů během běhu.

Popisky umožňují vytvářet varianty klíče, jako jsou různé verze nebo nastavení specifické pro prostředí. Přiřazením popisků můžete zachovat více hodnot pro stejný klíč. Aplikace pak může načíst různé sady klíč-hodnot zadáním příslušného štítku, což zajistí, že odkazy na klíče v kódu zůstanou konzistentní.

Kombinace klíč-hodnota

App Configuration považuje každý klíč uložený v něm za nezávislou entitu. Neodvozuje relace mezi klíči ani nedědí hodnoty na základě hierarchie klíčů. Více sad klíčů ale můžete efektivně agregovat pomocí štítků v kombinaci se skládáním konfigurací ve vaší aplikaci.

Představte si příklad, kdy máte konfigurační nastavení s názvem TestApp:MySetting, jehož hodnota se liší v závislosti na prostředí. Můžete vytvořit dva klíče se stejným názvem, ale přiřadit různé popisky – jeden bez popisku (výchozí) a jiný označený vývoj. Neoznačené klíče obsahuje výchozí hodnotu, zatímco označený klíč obsahuje hodnotu specifickou pro prostředí.

V kódu aplikace nejprve načtete výchozí (neoznačené) hodnoty klíče a pak načtete hodnoty klíče specifické pro prostředí pomocí popisku Vývoj . Při načítání druhé sady všechny odpovídající klíče přepíší dříve načtené hodnoty. Tento přístup umožňuje stohovat více konfiguračních sad, přičemž poslední načtená hodnota má přednost. Poskytovatelé služby App Configuration napříč podporovanými jazyky a platformami nabízejí tuto možnost stackingu.

Následující příklad ukazuje, jak implementovat složení klíč-hodnota v aplikaci .NET:

configBuilder.AddAzureAppConfiguration(options => {
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and compose with two different labels
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .Select(keyFilter: "TestApp:*", labelFilter: "Development");
});

Použití popisků k povolení různých konfigurací pro různá prostředí poskytuje úplný příklad.

Aktualizace konfigurace

Azure App Configuration podporuje dynamickou aktualizaci konfigurace bez nutnosti restartování aplikace. Poskytovatelé konfigurace aplikací můžou monitorovat změny konfigurace pomocí dvou přístupů:

Monitorování všech vybraných klíčů

V tomto přístupu poskytovatel monitoruje všechny vybrané klíče. Pokud se v některé z vybraných hodnot klíčů zjistí změna, celá konfigurace se znovu načte. Tento přístup zajišťuje okamžité aktualizace bez nutnosti dalších klíčových úprav.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh when any selected key changes.
               refreshOptions.RegisterAll();
           });
});

Monitorování hlídacího klíče

Alternativně můžete monitorovat jednotlivé klíče, často označované jako klíč sentinelu. Tento přístup je užitečný při aktualizaci více hodnot klíče. Aktualizací klíče sentinelu až po dokončení všech ostatních změn konfigurace zajistíte, že vaše aplikace znovu načte konfiguraci jen jednou a zachová konzistenci.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh only if the `SentinelKey` changes.
               refreshOptions.Register("SentinelKey", refreshAll: true);
           });
});

Oba přístupy jsou dostupné prostřednictvím poskytovatelů služby App Configuration napříč podporovanými jazyky a platformami.

Pokud chcete snížit riziko nekonzistence konfigurace, použijte snímky konfigurace k zajištění integrity konfigurace.

Odkazy na externí data

App Configuration je navržený tak, aby ukládaly všechna konfigurační data, která byste normálně uložili do konfiguračních souborů nebo proměnných prostředí. Některé typy dat ale můžou být vhodnější pro použití v jiných zdrojích. Například ukládat tajné kódy ve službě Key Vault, soubory ve službě Azure Storage, informace o členství ve skupinách Microsoft Entra nebo seznamy zákazníků v databázi.

Službu App Configuration můžete dál využívat uložením odkazu na externí data do dvojice klíč-hodnota. Typ obsahu můžete použít k rozlišení jednotlivých zdrojů dat. Když aplikace přečte odkaz, načte skutečná data z odkazovaného zdroje za předpokladu, že má potřebná oprávnění ke zdroji. Pokud změníte umístění externích dat, stačí aktualizovat odkaz pouze v Konfiguraci aplikace místo aktualizace a opětovného nasazení celé aplikace.

Funkce referenční služby Key Vault pro konfiguraci aplikace je v tomto případě příkladem. Umožňuje, aby se tajné kódy potřebné pro aplikaci aktualizovaly podle potřeby, zatímco samotné základní tajné kódy zůstanou ve službě Key Vault.

Bootstrap konfigurace aplikace

Pokud chcete získat přístup ke službě Azure App Configuration Store, můžete se ověřit pomocí připojovacího řetězce nebo ID Microsoft Entra. I když jsou připojovací řetězce snadno dostupné na webu Azure Portal, obsahují informace o přihlašovacích údajích a musí se považovat za tajné kódy. Pokud zvolíte tento přístup, uložte připojovací řetězec bezpečně ve službě Azure Key Vault a ujistěte se, že se vaše aplikace ověří ve službě Key Vault, aby ho načetla.

Bezpečnějším a doporučeným přístupem je použití ověřování Microsoft Entra ID. Pokud je vaše aplikace hostovaná v Azure, například ve službě Azure Kubernetes Service, App Service nebo Azure Functions, můžete použít spravované identity poskytované ID Microsoft Entra. Spravované identity eliminují potřebu explicitně spravovat tajné kódy. Při použití této metody vyžaduje vaše aplikace jenom adresu URL koncového bodu konfigurace aplikace, která může být bezpečně vložena do kódu aplikace nebo konfiguračních souborů.

Další informace najdete v tématu Použití spravovaných identit pro přístup ke službě App Configuration.

Přístup služby Azure Kubernetes Service ke službě App Configuration

Pro úlohy hostované ve službě Azure Kubernetes Service (AKS) jsou k dispozici následující možnosti pro přístup ke konfiguraci Aplikace Azure. Tyto možnosti platí také pro Kubernetes obecně.

  • Přidejte poskytovatele Azure App Configuration Kubernetes do svého clusteru AKS. Poskytovatel Kubernetes běží v clusteru jako pod. V obchodě App Configuration může vytvářet objekty ConfigMap a Tajnosti z klíčových hodnot a odkazů na Key Vault. Objekt ConfigMap a Secret jsou možné použít jako proměnné prostředí nebo připojené soubory bez nutnosti jakýchkoli úprav kódu aplikace. Pokud máte ve stejném clusteru AKS spuštěných více aplikací, můžou všechny přistupovat ke vygenerovaným objektům ConfigMap a tajným kódům, což eliminuje potřebu jednotlivých požadavků na konfiguraci aplikace. Poskytovatel Kubernetes podporuje také dynamické aktualizace konfigurace. Toto je doporučená možnost, pokud je to pro vás možné.

  • Aktualizujte aplikaci tak, aby používala knihovny poskytovatele konfigurace Aplikace Azure. Knihovny poskytovatelů jsou dostupné v mnoha rámcích a jazycích, jako ASP.NET, .NET, Java Spring, JavaScript/Node.js a Python. Tento přístup poskytuje úplný přístup k funkcím služby App Configuration, včetně dynamické konfigurace a správy funkcí. Máte podrobnou kontrolu nad tím, jaká data se mají načíst a ze kterého úložiště App Configuration pro každou aplikaci.

  • Integrace s nasazením Kubernetes pomocí Helmu Pokud nechcete aktualizovat aplikaci nebo do clusteru AKS přidat nový pod, máte možnost převést data z konfigurace aplikace do clusteru Kubernetes pomocí nástroje Helm prostřednictvím nasazení. Tento přístup umožňuje vaší aplikaci pokračovat v přístupu ke konfiguraci z proměnných a tajných kódů Kubernetes. Upgrade Helmu můžete spustit vždy, když chcete, aby vaše aplikace zahrnovala nové změny konfigurace.

Přístup služby App Service nebo Azure Functions ke službě App Configuration

Pro přístup ke službě App Configuration přímo ve vaší aplikaci použijte zprostředkovatele služby App Configuration nebo knihovny sdk. Tento přístup poskytuje úplný přístup k funkcím služby App Configuration, včetně dynamické konfigurace a správy funkcí. Vaše aplikace spuštěná ve službě App Service nebo Azure Functions může získat přístup ke službě App Configuration Store pomocí některé z následujících metod:

Data konfigurace aplikace můžete také zpřístupnit vaší aplikaci jako nastavení aplikace nebo proměnné prostředí. Díky tomuto přístupu se můžete vyhnout změnám kódu aplikace.

Omezení požadavků provedených ve službě App Configuration

Nadměrné požadavky na konfiguraci aplikace můžou vést k omezování nebo poplatkům za nadlimitní využití. Pro snížení počtu žádostí:

  • Zvyšte interval aktualizace, zejména pokud se hodnoty konfigurace často nemění. Zadejte nový interval aktualizace pomocí SetRefreshInterval metody.

  • Místo sledování jednotlivých klíčů sledujte jeden sentinelový klíč. Aktualizujte všechny konfigurace pouze v případě, že se změní klíč sentinelu. Příklad najdete v tématu Použití dynamické konfigurace v aplikaci ASP.NET Core.

  • Použijte Poskytovatel App Configuration pro Kubernetes, pokud spouštíte více úloh v clusteru Kubernetes, kde každá tahá data z App Configuration samostatně. Zprostředkovatel Kubernetes načte data z konfigurace aplikace a zpřístupní je jako objekty ConfigMap a tajné kódy Kubernetes. Díky tomu můžou vaše úlohy přistupovat k datům prostřednictvím objektů ConfigMap a Tajných kódů, aniž by bylo nutné načíst data ze služby App Configuration samostatně.

  • Povolte geografickou replikaci úložiště App Configuration a rozložte požadavky mezi více replik. Například pro globálně nasazenou aplikaci použijte jinou repliku z každé geografické oblasti. Každá replika konfigurace aplikace má svou samostatnou kvótu požadavků. Toto nastavení poskytuje model pro škálovatelnost a vylepšenou odolnost proti přechodným a regionálním výpadkům.

Import konfiguračních dat do služby App Configuration

App Configuration nabízí možnost hromadně importovat nastavení konfigurace z aktuálních konfiguračních souborů pomocí webu Azure Portal nebo rozhraní příkazového řádku. Stejné možnosti můžete použít také k exportu hodnot klíčů z Konfigurace aplikace, například mezi souvisejícími obchody. Pokud přijmete konfiguraci jako kód a spravujete konfigurace v GitHubu nebo Azure DevOps, můžete nastavit průběžný import konfiguračních souborů pomocí GitHub Actions nebo úlohy importu kanálu Azure.

Nasazení ve více oblastech ve službě App Configuration

Pokud je vaše aplikace nasazená ve více oblastech, doporučujeme povolit geografickou replikaci úložiště App Configuration Store. Aplikaci můžete nastavit tak, aby se primárně připojila k replice odpovídající regionu, ve kterém jsou nasazené instance vaší aplikace, a umožnit jim převzít službu v případě selhání na repliky v jiných regionech. Toto nastavení minimalizuje latenci mezi vaší aplikací a službou App Configuration, rozdělí zatížení, protože každá replika má samostatné kvóty omezování a zvyšuje odolnost vaší aplikace proti přechodným a regionálním výpadkům. Další informace najdete v tématu Odolnost a zotavení po havárii.

Sestavování aplikací s vysokou odolností

Aplikace často spoléhají na konfiguraci ke spuštění, což činí vysokou dostupnost Azure App Configuration kritickou. Kvůli lepší odolnosti by aplikace měly používat funkce spolehlivosti služby App Configuration a zvážit přijetí následujících opatření na základě vašich konkrétních požadavků.

  • Zřizování v oblastech s podporou zóny dostupnosti Azure Zóny dostupnosti umožňují aplikacím být odolné vůči výpadkům datových center. App Configuration nabízí zónovou redundanci pro všechny zákazníky bez dalších poplatků. Doporučujeme vytvořit úložiště App Configuration v oblastech s podporou zón dostupnosti. Můžete najít seznam oblastí , ve kterých služba App Configuration povolila podporu zóny dostupnosti.
  • Povolte geografickou replikaci a umožněte vaší aplikaci přepínání při selhání nebo rozložení zátěže mezi repliky. Toto nastavení poskytuje model pro škálovatelnost a vylepšenou odolnost proti přechodným selháním a oblastním výpadkům. Další informace najdete v tématu Odolnost a zotavení po havárii.
  • Nasazení konfigurace s využitím postupů bezpečného nasazení Nesprávné nebo náhodné změny konfigurace můžou často způsobit výpadky aplikace. Pokud je to možné, měli byste se vyhnout změnám konfigurace, které mají vliv na produkční prostředí přímo z webu Azure Portal. V postupech bezpečného nasazení (SDP) využíváte model postupného nasazování s vystavením, aby se minimalizoval potenciální rozsah dopadu problémů způsobených nasazením. Pokud přijmete protokol SDP, můžete vytvořit a otestovat snímek konfigurace před jeho nasazením do produkčního prostředí. Během nasazování můžete aktualizovat instance aplikace, aby postupně implementovaly nový snímek. Pokud se zjistí problémy, můžete změnu vrátit zpět opětovným nasazením posledního známého snímku (LKG). Snímek je neměnný a zaručuje konzistenci ve všech nasazeních. Snímky můžete využít společně s dynamickou konfigurací. Použijte snímek pro základní konfiguraci a dynamickou konfiguraci pro přepsání konfigurace tísňového volání a příznaky funkcí.
  • Zahrňte konfiguraci do aplikace. Pokud chcete zajistit, aby vaše aplikace vždy získala přístup ke kopii konfigurace, nebo pokud chcete zabránit úplné závislosti modulu runtime na konfiguraci aplikace, můžete konfiguraci stáhnout z konfigurace aplikace během sestavování nebo vydání a zahrnout ji do aplikace. Další informace najdete v příkladech integrace služby App Configuration s kanálem CI/CD nebo nasazením Kubernetes.
  • Použijte zprostředkovatele konfigurace aplikací. Aplikace hrají důležitou roli při dosažení vysoké odolnosti, protože můžou zohledňovat problémy vzniklé během běhu, jako jsou problémy se sítí, a rychleji reagovat na selhání. Poskytovatelé konfigurace aplikací nabízejí řadu integrovaných funkcí odolnosti, včetně automatického zjišťování replik, přepnutí při selhání repliky, opakovaných pokusů při spuštění s přizpůsobitelnými časovými limity, ukládání do mezipaměti konfigurace a adaptivní strategie zajišťující spolehlivou aktualizaci konfigurace. Důrazně doporučujeme, abyste tyto funkce využili pomocí zprostředkovatelů služby App Configuration. Pokud to není možnost, měli byste zvážit implementaci podobných funkcí ve vlastním řešení, abyste dosáhli nejvyšší úrovně odolnosti.

Klientské aplikace v App Configuration

Při použití konfigurace aplikace v klientských aplikacích se ujistěte, že zvažujete dva hlavní faktory. Za prvé, pokud používáte připojovací řetězec v klientské aplikaci, riskujete zveřejnění přístupového klíče úložiště App Configuration pro veřejnost. Za druhé, typická škála zákaznické aplikace může způsobit nadměrné požadavky na vaše úložiště App Configuration, což může vést k poplatkům za nadlimitní využití nebo k omezení. Další informace o omezování najdete v nejčastějších dotazech.

Pokud chcete tyto obavy vyřešit, doporučujeme použít proxy službu mezi klientskými aplikacemi a úložištěm App Configuration. Proxy služba se může bezpečně ověřit ve službě App Configuration Store bez bezpečnostních problémů s únikem ověřovacích informací. Proxy službu můžete vytvořit pomocí jedné z knihoven zprostředkovatele konfigurace aplikace, abyste mohli využít integrované funkce ukládání do mezipaměti a aktualizace pro optimalizaci objemu požadavků odesílaných do služby App Configuration. Další informace o používání zprostředkovatelů konfigurace aplikací najdete v článcích Začínáme. Proxy služba obsluhuje konfiguraci z mezipaměti do klientských aplikací a vy se vyhnete dvěma potenciálním problémům, které jsou popsány v této části.

Při zpřístupnění konfigurace klientským aplikacím je důležité vzít v úvahu, že hodnoty konfigurace budou viditelné koncovým uživatelům. Je třeba dbát na to, aby nedocházelo k neúmyslnému vystavení citlivých údajů. Například názvy uživatelů a skupin v nastavení cílení příznaků funkcí se můžou považovat za EUII (identifikovatelné informace koncového uživatele). Pokud chcete toto riziko zmírnit, zvažte použití samostatného prostředku app Configuration Store vyhrazeného pro konfiguraci klientské aplikace nebo konfiguraci segmentů pomocí mechanismů filtrování, jako jsou předpony klíčů, popisky nebo značky, a odpovídajícím způsobem vyfiltrujte proxy server.

Víceklientské aplikace v App Configuration

Víceklientová aplikace je postavená na architektuře, ve které sdílená instance vaší aplikace obsluhuje více zákazníků nebo tenantů. Můžete mít například e-mailovou službu, která uživatelům nabízí samostatné účty a přizpůsobené prostředí. Vaše aplikace obvykle spravuje různé konfigurace pro každého tenanta. Tady je několik aspektů architektury pro použití služby App Configuration ve víceklientské aplikaci. Můžete také odkazovat na ukázkový kód pro nastavení víceklientských aplikací.

Konfigurace jako kód

Konfigurace jako kód je postup správy konfiguračních souborů ve vašem systému správy zdrojového kódu, například úložiště Git. Poskytuje výhody, jako je sledovatelnost a proces schvalování pro všechny změny konfigurace. Pokud konfiguraci přijmete jako kód, App Configuration obsahuje nástroje, které vám pomohou při správě konfiguračních dat v souborech a jejich nasazení v rámci procesu sestavení, uvolnění nebo CI/CD. Aplikace tak budou mít přístup k nejnovějším datům z obchodu App Configuration Store.

  • Pro GitHub můžete importovat konfigurační soubory z úložiště GitHub do úložiště App Configuration pomocí GitHub Actions.
  • Pro Azure DevOps můžete zahrnout Aplikace Azure Import konfigurace, úlohu kanálu Azure do kanálů buildu nebo verze pro synchronizaci dat.
  • Pro ostatní můžete importovat konfigurační soubory do služby App Configuration pomocí Azure CLI jako součást systému CI/CD. Další informace najdete v tématu az appconfig kv import.

Tento model umožňuje zahrnout kroky ověření a testování před potvrzením dat do služby App Configuration. Pokud používáte více úložišť App Configuration, můžete do nich také odeslat konfigurační data přírůstkově nebo všechny najednou.

Další krok