Metodtips för Azure App Configuration

I den här artikeln beskrivs vanliga mönster och metodtips när du använder Azure App Configuration.

Nyckelgruppering

Appkonfiguration innehåller två alternativ för att ordna nycklar:

  • Nyckelprefix
  • Etiketter

Du kan använda antingen ett eller båda alternativen för att gruppera dina nycklar.

Nyckelprefix är början delar av nycklar. Du kan logiskt gruppera en uppsättning nycklar med samma prefix i deras namn. Prefix kan innehålla flera komponenter som är anslutna med en avgränsare, till exempel , ungefär som /en URL-sökväg, för att bilda ett namnområde. Sådana hierarkier är användbara när du lagrar nycklar för många program och mikrotjänster i ett appkonfigurationsarkiv.

En viktig sak att tänka på är att nycklar är vad programkoden refererar till för att hämta värdena för motsvarande inställningar. Nycklar bör inte ändras, annars måste du ändra koden varje gång det händer.

Etiketter är ett attribut för nycklar. De används för att skapa varianter av en nyckel. Du kan till exempel tilldela etiketter till flera versioner av en nyckel. En version kan vara en iteration, en miljö eller någon annan sammanhangsbaserad information. Ditt program kan begära en helt annan uppsättning nyckelvärden genom att ange en annan etikett. Därför förblir alla nyckelreferenser oförändrade i koden.

Nyckelvärdessammansättningar

App Configuration behandlar alla nycklar som lagras med den som oberoende entiteter. App Configuration försöker inte härleda någon relation mellan nycklar eller ärva nyckelvärden baserat på deras hierarki. Du kan dock aggregera flera uppsättningar nycklar med hjälp av etiketter i kombination med korrekt konfigurationsstapling i programkoden.

Låt oss ta en titt på ett exempel. Anta att du har en inställning med namnet Asset1, vars värde kan variera beroende på utvecklingsmiljön. Du skapar en nyckel med namnet "Asset1" med en tom etikett och en etikett med namnet "Utveckling". I den första etiketten anger du standardvärdet för Asset1 och anger ett specifikt värde för "Utveckling" i det senare.

I koden hämtar du först nyckelvärdena utan etiketter och hämtar sedan samma uppsättning nyckelvärden en andra gång med etiketten "Utveckling". När du hämtar värdena andra gången skrivs de tidigare värdena för nycklarna över. Med .NET-konfigurationssystemet kan du "stapla" flera uppsättningar konfigurationsdata ovanpå varandra. Om det finns en nyckel i mer än en uppsättning används den sista uppsättningen som innehåller den. Med ett modernt programmeringsramverk, till exempel .NET, får du den här staplingsfunktionen kostnadsfritt om du använder en inbyggd konfigurationsprovider för att få åtkomst till App Configuration. Följande kodfragment visar hur du kan implementera stackning i ett .NET-program:

// 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");
});

Använd etiketter för att aktivera olika konfigurationer för olika miljöer är ett fullständigt exempel.

Referenser till externa data

Appkonfiguration är utformad för att lagra alla konfigurationsdata som du normalt skulle spara i konfigurationsfiler eller miljövariabler. Vissa typer av data kan dock vara bättre lämpade för att finnas i andra källor. Du kan till exempel lagra hemligheter i Key Vault, filer i Azure Storage, medlemskapsinformation i Microsoft Entra-grupper eller kundlistor i en databas.

Du kan fortfarande dra nytta av App Configuration genom att spara en referens till externa data i ett nyckelvärde. Du kan använda innehållstyp för att särskilja varje datakälla. När programmet läser en referens läser det in faktiska data från den refererade källan, förutsatt att det har nödvändig behörighet till källan. Om du ändrar platsen för dina externa data behöver du bara uppdatera referensen i App Configuration i stället för att uppdatera och distribuera om hela programmet.

Referensfunktionen För appkonfigurationsnyckelvalv är ett exempel i det här fallet. Det gör att hemligheterna som krävs för ett program uppdateras efter behov medan de underliggande hemligheterna själva finns kvar i Key Vault.

Bootstrap för appkonfiguration

Om du vill komma åt ett App Configuration Store kan du använda dess anslutningssträng, som finns i Azure-portalen. Eftersom anslutningssträng innehåller information om autentiseringsuppgifter betraktas de som hemligheter. Dessa hemligheter måste lagras i Azure Key Vault och koden måste autentiseras till Key Vault för att hämta dem.

Ett bättre alternativ är att använda funktionen för hanterade identiteter i Microsoft Entra-ID. Med hanterade identiteter behöver du bara appkonfigurationens slutpunkts-URL för att starta åtkomsten till appkonfigurationsarkivet. Du kan bädda in URL:en i programkoden (till exempel i filen appsettings.json ). Mer information finns i Använda hanterade identiteter för att få åtkomst till App Configuration .

Azure Kubernetes Service-åtkomst till App Configuration

Följande alternativ är tillgängliga för arbetsbelastningar som finns i Azure Kubernetes Service (AKS) för åtkomst till Azure App Configuration. De här alternativen gäller även för Kubernetes i allmänhet.

  • Lägg till Kubernetes-providern för Azure App Configuration i ditt AKS-kluster. Kubernetes-providern körs som en podd i klustret. Den kan konstruera Config Kartor och hemligheter från nyckelvärden och Key Vault-referenser i appkonfigurationsarkivet. ConfigMap och Secret kan användas som miljövariabler eller monterade filer utan att du behöver ändra programkoden. Om du har flera program som körs i samma AKS-kluster kan de alla komma åt den genererade konfigurationen Kartor och hemligheter, vilket eliminerar behovet av enskilda begäranden till App Configuration. Kubernetes-providern stöder även dynamiska konfigurationsuppdateringar. Det här är det rekommenderade alternativet om det är möjligt för dig.

  • Uppdatera programmet så att det använder Azure App Configuration-providerbibliotek. Providerbiblioteken är tillgängliga i många ramverk och språk, till exempel ASP.NET, .NET, Java Spring, JavaScript/Node.js och Python. Den här metoden ger dig fullständig åtkomst till App Configurations funktioner, inklusive dynamisk konfiguration och funktionshantering. Du har detaljerad kontroll över vilka data som ska läsas in och från vilket App Configuration Store för varje program.

  • Integrera med Kubernetes-distribution med Helm. Om du inte vill uppdatera ditt program eller lägga till en ny podd i AKS-klustret kan du välja att hämta data från App Configuration till kubernetes-klustret med hjälp av Helm via distribution. Med den här metoden kan ditt program fortsätta att komma åt konfigurationen från Kubernetes-variabler och hemligheter. Du kan köra Helm-uppgraderingen när du vill att programmet ska innehålla nya konfigurationsändringar.

App Service- eller Azure Functions-åtkomst till App Configuration

Använd appkonfigurationsprovidern eller SDK-biblioteken för att få åtkomst till App Configuration direkt i ditt program. Den här metoden ger dig fullständig åtkomst till App Configurations funktioner, inklusive dynamisk konfiguration och funktionshantering. Ditt program som körs på App Service eller Azure Functions kan få åtkomst till appkonfigurationsarkivet via någon av följande metoder:

Du kan också göra dina appkonfigurationsdata tillgängliga för ditt program som programinställningar eller miljövariabler. Med den här metoden kan du undvika att ändra programkoden.

Minska begäranden som görs till App Configuration

Överdrivna begäranden till App Configuration kan leda till begränsningar eller överförbrukningsavgifter. Så här minskar du antalet begäranden som görs:

  • Öka tidsgränsen för uppdatering, särskilt om konfigurationsvärdena inte ändras ofta. Ange en ny tidsgräns för uppdatering med hjälp av SetCacheExpiration metoden .

  • Titta på en enda sentinel-nyckel i stället för att titta på enskilda nycklar. Uppdatera endast alla konfigurationer om sentinel-nyckeln ändras. Ett exempel finns i Använda dynamisk konfiguration i en ASP.NET Core-app .

  • Använd Azure Event Grid för att ta emot meddelanden när konfigurationen ändras, i stället för att ständigt söka efter ändringar. Mer information finns i Använda Event Grid för meddelanden om ändring av appkonfigurationsdata.

  • Aktivera geo-replikering av appkonfigurationsarkivet och sprid dina begäranden över flera repliker. Använd till exempel en annan replik från varje geografisk region för ett globalt distribuerat program. Varje appkonfigurationsreplik har sin separata kvot för begäranden. Den här konfigurationen ger dig en modell för skalbarhet och förbättrad återhämtning mot tillfälliga och regionala avbrott.

Importera konfigurationsdata till App Configuration

Med App Configuration kan du massimportera konfigurationsinställningarna från dina aktuella konfigurationsfiler med hjälp av antingen Azure-portalen eller CLI. Du kan också använda samma alternativ för att exportera nyckelvärden från App Configuration, till exempel mellan relaterade butiker. Om du vill konfigurera en pågående synkronisering med din lagringsplats i GitHub eller Azure DevOps kan du använda vår GitHub Action - eller Azure Pipeline Push-uppgift så att du kan fortsätta använda dina befintliga källkontrollmetoder samtidigt som du får fördelarna med App Configuration.

Distribution i flera regioner i App Configuration

Om ditt program distribueras i flera regioner rekommenderar vi att du aktiverar geo-replikering av appkonfigurationsarkivet. Du kan låta ditt program i första hand ansluta till repliken som matchar den region där instanser av ditt program distribueras och låta dem redundansväxla till repliker i andra regioner. Den här konfigurationen minimerar svarstiden mellan programmet och appkonfigurationen, sprider belastningen eftersom varje replik har separata begränsningskvoter och förbättrar programmets återhämtning mot tillfälliga och regionala avbrott. Mer information finns i Återhämtning och haveriberedskap .

Skapa program med hög återhämtning

Program förlitar sig ofta på att konfigurationen ska starta, vilket gör Azure App Configurations högtillgänglighet kritisk. För bättre återhämtning bör program använda App Configurations tillförlitlighetsfunktioner och överväga att vidta följande åtgärder baserat på dina specifika krav.

  • Etablera i regioner med stöd för Azure-tillgänglighetszoner. Med tillgänglighetszoner kan program vara motståndskraftiga mot avbrott i datacenter. App Configuration erbjuder zonredundans för alla kunder utan extra avgifter. Vi rekommenderar att du skapar appkonfigurationsarkivet i regioner med stöd för tillgänglighetszoner. Du hittar en lista över regioner där App Configuration har aktiverat stöd för tillgänglighetszoner.
  • Aktivera geo-replikering och tillåt att programmet redundansväxlar mellan repliker. Den här konfigurationen ger dig en modell för skalbarhet och förbättrad återhämtning mot tillfälliga fel och regionala avbrott. Mer information finns i Återhämtning och haveriberedskap .
  • Distribuera konfiguration med säkra distributionsmetoder. Felaktiga eller oavsiktliga konfigurationsändringar kan ofta orsaka programavbrott. Du bör undvika att göra konfigurationsändringar som påverkar produktionen direkt från till exempel Azure-portalen när det är möjligt. I säkra distributionsmetoder (SDP) använder du en distributionsmodell för progressiv exponering för att minimera den potentiella explosionsradien för distributionsrelaterade problem. Om du använder SDP kan du skapa och testa en konfigurationsögonblicksbild innan du distribuerar den till produktion. Under distributionen kan du uppdatera instanser av ditt program för att successivt hämta den nya ögonblicksbilden. Om problem identifieras kan du återställa ändringen genom att omdistribuera den senaste kända ögonblicksbilden (LKG). Ögonblicksbilden är oföränderlig, vilket garanterar konsekvens i alla distributioner. Du kan använda ögonblicksbilder tillsammans med dynamisk konfiguration. Använd en ögonblicksbild för din grundläggande konfiguration och dynamiska konfiguration för åsidosättningar av nödkonfiguration och funktionsflaggor.
  • Inkludera konfiguration med ditt program. Om du vill se till att ditt program alltid har åtkomst till en kopia av konfigurationen, eller om du föredrar att undvika ett körningsberoende av App Configuration helt och hållet, kan du hämta konfigurationen från App Configuration under bygg- eller lanseringstiden och inkludera den med ditt program. Mer information finns i exempel på hur du integrerar App Configuration med din CI/CD-pipeline eller Kubernetes-distribution.
  • Använd appkonfigurationsprovidrar. Program spelar en viktig roll för att uppnå hög återhämtning eftersom de kan ta hänsyn till problem som uppstår under deras körning, till exempel nätverksproblem, och svara på fel snabbare. Appkonfigurationsprovidrar erbjuder en rad inbyggda återhämtningsfunktioner, inklusive automatisk replikidentifiering, replikredundans, startförsök med anpassningsbara tidsgränser, konfigurationscachelagring och anpassningsbara strategier för tillförlitlig konfigurationsuppdatering. Vi rekommenderar starkt att du använder appkonfigurationsleverantörer för att dra nytta av dessa funktioner. Om det inte är ett alternativ bör du överväga att implementera liknande funktioner i din anpassade lösning för att uppnå den högsta återhämtningsnivån.

Klientprogram i App Configuration

När du använder App Configuration i klientprogram ska du se till att du överväger två viktiga faktorer. Om du först använder anslutningssträng i ett klientprogram riskerar du att exponera åtkomstnyckeln för appkonfigurationsarkivet för allmänheten. För det andra kan den typiska skalan för ett klientprogram orsaka överdrivna begäranden till appkonfigurationsarkivet, vilket kan leda till överförbrukningsavgifter eller begränsning. Mer information om begränsning finns i Vanliga frågor och svar.

För att lösa dessa problem rekommenderar vi att du använder en proxytjänst mellan dina klientprogram och appkonfigurationsarkivet. Proxytjänsten kan autentiseras säkert med appkonfigurationsarkivet utan ett säkerhetsproblem med läckande autentiseringsinformation. Du kan skapa en proxytjänst med hjälp av något av appkonfigurationsproviderbiblioteken, så att du kan dra nytta av inbyggda cachelagrings- och uppdateringsfunktioner för att optimera mängden begäranden som skickas till App Configuration. Mer information om hur du använder appkonfigurationsproviders finns i artiklar i Snabbstarter och Självstudier. Proxytjänsten hanterar konfigurationen från cacheminnet till dina klientprogram och du undviker de två potentiella problem som beskrivs i det här avsnittet.

Program för flera klienter i App Configuration

Ett program med flera klienter bygger på en arkitektur där en delad instans av ditt program hanterar flera kunder eller klienter. Du kan till exempel ha en e-posttjänst som erbjuder användarna separata konton och anpassade upplevelser. Ditt program hanterar vanligtvis olika konfigurationer för varje klientorganisation. Här följer några arkitekturöverväganden för att använda App Configuration i ett program med flera klienter.

Konfiguration som kod

Konfiguration som kod är en metod för att hantera konfigurationsfiler under källkontrollsystemet, till exempel en git-lagringsplats. Det ger dig fördelar som spårnings- och godkännandeprocess för eventuella konfigurationsändringar. Om du använder konfiguration som kod har App Configuration verktyg som hjälper dig att hantera dina konfigurationsdata i filer och distribuera dem som en del av din bygg-, versions- eller CI/CD-process. På så sätt kan dina program komma åt de senaste data från appkonfigurationsarkiven.

  • För GitHub kan du aktivera GitHub-åtgärden För appkonfigurationssynkronisering för lagringsplatsen. Ändringar i konfigurationsfiler synkroniseras automatiskt till App Configuration när en pull-begäran slås samman.
  • För Azure DevOps kan du inkludera Azure App Configuration Push, en Azure-pipelineaktivitet, i dina bygg- eller versionspipelines för datasynkronisering.
  • Du kan också importera konfigurationsfiler till App Configuration med Hjälp av Azure CLI som en del av ditt CI/CD-system. Mer information finns i az appconfig kv import.

Med den här modellen kan du inkludera verifierings- och testningssteg innan du checkar in data i App Configuration. Om du använder flera App Configuration-butiker kan du också skicka konfigurationsdata till dem stegvis eller alla samtidigt.

Nästa steg