Dela via


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.

Med nyckelprefix kan du gruppera relaterade nycklar med hjälp av ett vanligt prefix i deras namn. Prefix kan innehålla flera segment avgränsade med avgränsare, till exempel / eller :, som bildar ett hierarkiskt namnområde. Den här metoden är användbar när du lagrar konfigurationsnycklar för flera program eller mikrotjänster i ett enda appkonfigurationsarkiv.

Det är viktigt att komma ihåg att nycklar refereras direkt av programkoden för att hämta motsvarande värden. Därför bör nycklarna förbli stabila för att undvika kodändringar. Om det behövs kan du använda appkonfigurationsleverantören för att trimma nyckelprefix vid körning.

Med etiketter kan du skapa varianter av en nyckel, till exempel olika versioner eller miljöspecifika inställningar. Genom att tilldela etiketter kan du underhålla flera värden för samma nyckel. Ditt program kan sedan hämta olika uppsättningar med nyckelvärden genom att ange lämplig etikett, så att dina nyckelreferenser i koden kan förbli konsekventa.

Nyckelvärdessammansättningar

App Configuration behandlar varje nyckel som lagras i den som en oberoende entitet. Den härleder inte relationer mellan nycklar eller ärver värden baserat på nyckelhierarki. Du kan dock aggregera flera uppsättningar nycklar effektivt med hjälp av etiketter i kombination med konfigurationsstapling i ditt program.

Tänk dig ett exempel där du har en konfigurationsinställning med namnet TestApp:MySetting, vars värde varierar beroende på miljön. Du kan skapa två nycklar med samma namn, men tilldela olika etiketter – en utan etikett (standard) och en annan med etiketten Utveckling. Den omärkta nyckeln innehåller standardvärdet, medan den märkta nyckeln innehåller det miljöspecifika värdet.

I programkoden läser du först in standardnyckelvärdena (omärkta) och läser sedan in de miljöspecifika nyckelvärdena med hjälp av etiketten Utveckling . När du läser in den andra satsen skriver matchande nycklar över de tidigare inlästa värdena. Med den här metoden kan du "stapla" flera konfigurationsuppsättningar, där det senast inlästa värdet har företräde. Appkonfigurationsleverantörer på stödda språk och plattformar erbjuder denna staplingskapabilitet.

I följande exempel visas hur du implementerar nyckel/värde-sammansättning i ett .NET-program:

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

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

Uppdatering av konfiguration

Azure App Configuration stöder dynamisk konfigurationsuppdatering utan att programmet behöver startas om. Appkonfigurationsprovidrar kan övervaka konfigurationsändringar med hjälp av två metoder:

Övervaka alla markerade nycklar

I den här metoden övervakar providern alla valda nycklar. Om en ändring identifieras i något av de valda nyckelvärdena läses hela konfigurationen in igen. Den här metoden säkerställer omedelbara uppdateringar utan att ytterligare viktiga ändringar krävs.

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();
           });
});

Övervaka en sentinel-nyckel

Du kan också övervaka en enskild nyckel, som ofta kallas sentinel-nyckeln. Den här metoden är användbar när du uppdaterar flera nyckelvärden. Genom att uppdatera sentinel-nyckeln först när alla andra konfigurationsändringar har slutförts säkerställer du att ditt program bara läser in konfigurationen en gång till, vilket upprätthåller konsekvens.

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

Båda metoderna är tillgängliga via appkonfigurationsprovidrar på språk och plattformar som stöds.

Använd konfigurationsögonblicksbilder för att säkerställa konfigurationsintegriteten för att minska risken för inkonsekvenser i konfigurationen.

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.

Funktionen för appkonfigurationens Key Vault-referens ä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

För att få åtkomst till ett Azure App Configuration Store kan du autentisera med antingen en anslutningssträng eller Microsoft Entra-ID. Även om anslutningssträngar är lättillgängliga i Azure-portalen innehåller de information om autentiseringsuppgifter och måste behandlas som hemligheter. Om du väljer den här metoden lagrar du anslutningssträngen på ett säkert sätt i Azure Key Vault och ser till att ditt program autentiserar till Key Vault för att hämta den.

En säkrare och mer rekommenderad metod är att använda Microsoft Entra ID-autentisering. Om ditt program finns i Azure, till exempel i Azure Kubernetes Service, App Service eller Azure Functions, kan du använda hanterade identiteter som tillhandahålls av Microsoft Entra-ID. Hanterade identiteter eliminerar behovet av att hantera hemligheter explicit. Med den här metoden kräver ditt program endast appkonfigurationens slutpunkts-URL, som på ett säkert sätt kan bäddas in i programkoden eller konfigurationsfilerna.

Mer information finns i Använda hanterade identiteter för att komma åt 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 pod i klustret. Den kan konstruera ConfigMaps 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 genererade ConfigMaps 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.jsoch 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 laddas och från vilken App Configuration-butik för varje applikation.

  • 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 uppdateringsintervallet, särskilt om konfigurationsvärdena inte ändras ofta. Ange ett nytt uppdateringsintervall genom att använda SetRefreshInterval 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 Kubernetes-providern för appkonfiguration om du kör flera arbetsbelastningar i ett Kubernetes-kluster, var och en hämtar data från App Configuration individuellt. Kubernetes-providern hämtar data från App Configuration och gör den tillgänglig som Kubernetes ConfigMaps och Secrets. På så sätt kan dina arbetsbelastningar komma åt data via ConfigMaps och Hemligheter utan att behöva hämta data från App Configuration separat.

  • Aktivera geo-replikering av din App Configuration-butik och sprid dina begäranden över flera kopior. 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 använder Konfiguration som kod och hanterar dina konfigurationer i GitHub eller Azure DevOps kan du konfigurera pågående konfigurationsfilimport med hjälp av GitHub Actions eller Azure Pipeline Import Task.

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 din konfigurationsbutik 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 eller distribuerar belastningen 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 leveransmetoder (SDP) använder du en modell för stegvis exponering för att minimera den potentiella skadeomfattningen vid leveransrelaterade 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 säkerställer enhetlighet 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.

Klientapplikationer i App Konfiguration

När du använder App Configuration i klientprogram ska du se till att du överväger två viktiga faktorer. För det första, om du använder anslutningssträngen i en klientapplikation riskerar du att exponera åtkomstnyckeln för din App Configuration-tjänst för offentligheten. 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 säkert autentisera sig mot appkonfigurationslagringen utan att riskera säkerhetsproblem med att autentiseringsinformation läcker ut. 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. Du kan också referera till exempelkoden för programkonfiguration med flera klientorganisationer.

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 appkonfigurationsarkivet.

  • För GitHub kan du importera konfigurationsfiler från din GitHub-lagringsplats till appkonfigurationsarkivet med hjälp av GitHub Actions
  • För Azure DevOps kan du inkludera Azure App Configuration Import, en Azure-pipelineaktivitet, i dina bygg- eller versionspipelines för datasynkronisering.
  • För andra kan du importera konfigurationsfiler till App Configuration med hjälp av Azure CLI som en del av ditt CI/CD-system. För mer information, se 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