Azure App Configuration best practices
In dit artikel worden algemene patronen en best practices besproken wanneer u gebruik Azure App Configuration.
Sleutelgroeperingen
App Configuration biedt twee opties voor het ordenen van sleutels:
- Sleutel voorvoegsels
- Labels
U kunt een of beide opties gebruiken om uw sleutels te groepen.
Sleutel voorvoegsels zijn de beginonderdelen van sleutels. U kunt een set sleutels logisch groepen met behulp van hetzelfde voorvoegsel in hun namen. Voorvoegsels kunnen meerdere onderdelen bevatten die zijn verbonden door een scheidingsteken, zoals , vergelijkbaar met een / URL-pad om een naamruimte te vormen. Dergelijke hiërarchieën zijn handig wanneer u sleutels voor veel toepassingen en microservices in één App Configuration opslaat.
Het is belangrijk om te weten dat sleutels zijn waarnaar uw toepassingscode verwijst om de waarden van de bijbehorende instellingen op te halen. Sleutels mogen niet worden gewijzigd, anders moet u uw code telkens wijzigen wanneer dat gebeurt.
Labels zijn een kenmerk voor sleutels. Ze worden gebruikt om varianten van een sleutel te maken. U kunt bijvoorbeeld labels toewijzen aan meerdere versies van een sleutel. Een versie kan een iteratie, een omgeving of andere contextuele informatie zijn. Uw toepassing kan een geheel andere set sleutelwaarden aanvragen door een ander label op te geven. Als gevolg hiervan blijven alle sleutelverwijzingen ongewijzigd in uw code.
Sleutel-waardesamenstellingen
App Configuration behandelt alle sleutels die met deze sleutel zijn opgeslagen als onafhankelijke entiteiten. App Configuration probeert geen relatie tussen sleutels af te afleiden of sleutelwaarden over te nemen op basis van hun hiërarchie. U kunt echter meerdere sets sleutels aggregeren door labels te gebruiken die zijn gekoppeld aan de juiste configuratiestacking in uw toepassingscode.
We kijken naar een voorbeeld. Stel dat u een instelling hebt met de naam Asset1, waarvan de waarde kan variëren op basis van de ontwikkelomgeving. U maakt een sleutel met de naam 'Asset1' met een leeg label en een label met de naam 'Ontwikkeling'. In het eerste label zet u de standaardwaarde voor Asset1 en in het laatste label een specifieke waarde voor 'Ontwikkeling'.
In uw code haalt u eerst de sleutelwaarden op zonder labels en vervolgens haalt u de dezelfde set sleutelwaarden een tweede keer op met het label 'Ontwikkeling'. Wanneer u de waarden de tweede keer op haalt, worden de vorige waarden van de sleutels overschreven. Met het .NET Core-configuratiesysteem kunt u meerdere sets configuratiegegevens op elkaar 'stapelen'. Als een sleutel in meer dan één set bestaat, wordt de laatste set met deze sleutel gebruikt. Met een modern programmeerkader, zoals .NET Core, krijgt u deze stapelmogelijkheid gratis als u een systeemeigen configuratieprovider gebruikt om toegang te krijgen tot App Configuration. Het volgende codefragment laat zien hoe u stacking kunt implementeren in een .NET Core-toepassing:
// 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");
});
Labels gebruiken om verschillende configuraties in te stellen voor verschillende omgevingen biedt een volledig voorbeeld.
Verwijzingen naar externe gegevens
App Configuration is ontworpen voor het opslaan van configuratiegegevens die u normaal gesproken opgeslagen in configuratiebestanden of omgevingsvariabelen. Sommige typen gegevens kunnen echter beter geschikt zijn voor gebruik in andere bronnen. Sla bijvoorbeeld geheimen op in Key Vault, bestanden in Azure Storage, lidmaatschapsgegevens in Azure AD-groepen of klantlijsten in een database.
U kunt nog steeds profiteren van App Configuration door een verwijzing naar externe gegevens op te slaan in een sleutelwaarde. U kunt inhoudstype gebruiken om onderscheid te maken tussen elke gegevensbron. Wanneer uw toepassing een verwijzing leest, laadt u de gegevens uit de bron waarnaar wordt verwezen. Als u de locatie van uw externe gegevens wijzigt, hoeft u de verwijzing alleen bij te werken in App Configuration in plaats van uw hele toepassing bij te werken en opnieuw teployeren.
De functie App Configuration Key Vault is in dit geval een voorbeeld. Hiermee kunnen de geheimen die vereist zijn voor een toepassing zo nodig worden bijgewerkt, terwijl de onderliggende geheimen zelf in de Key Vault.
App Configuration bootstrap
Voor toegang tot App Configuration store kunt u de connection string gebruiken. Deze is beschikbaar in de Azure Portal. Omdat verbindingsreeksen referentiegegevens bevatten, worden ze beschouwd als geheimen. Deze geheimen moeten worden opgeslagen in Azure Key Vault en uw code moet worden geverifieerd om ze Key Vault op te halen.
Een betere optie is om de functie beheerde identiteiten te gebruiken in Azure Active Directory. Met beheerde identiteiten hebt u alleen de url App Configuration-eindpunt nodig om toegang tot uw App Configuration op te slaan. U kunt de URL in uw toepassingscode insluiten (bijvoorbeeld in het bestand appsettings.json). Zie Integreren met beheerde Azure-identiteiten voor meer informatie.
App- of functietoegang tot App Configuration
U kunt toegang tot App Configuration voor Web Apps of Azure Functions met behulp van een van de volgende methoden:
- Via de Azure Portal voert u de connection string naar uw App Configuration opslag in de toepassingsinstellingen van App Service.
- Sla de connection string op in App Configuration opslag in Key Vault en verwijs hier vanuit App Service.
- Gebruik door Azure beheerde identiteiten om toegang te krijgen tot App Configuration store. Zie Integreren met beheerde Azure-identiteiten voor meer informatie.
- Push-configuratie van App Configuration naar App Service. App Configuration biedt een exportfunctie (in Azure Portal en de Azure CLI) die gegevens rechtstreeks naar de App Service. Met deze methode hoeft u de toepassingscode helemaal niet te wijzigen.
Aanvragen voor App Configuration
Overmatige aanvragen voor App Configuration kunnen leiden tot kosten voor bandbreedtebeperking of uitval. Het aantal aanvragen verminderen:
Verhoog de time-out voor vernieuwen, met name als uw configuratiewaarden niet regelmatig veranderen. Geef een nieuwe time-out voor vernieuwen op met behulp van de
SetCacheExpirationmethode.Bekijk één Sentinel-sleutel in plaats van afzonderlijke sleutels te bekijken. Vernieuw alle configuratie alleen als de Sentinel-sleutel wordt gewijzigd. Zie Dynamische configuratie gebruiken in een ASP.NET Core app voor een voorbeeld.
Gebruik Azure Event Grid om meldingen te ontvangen wanneer de configuratie wordt gewijzigd, in plaats van voortdurend te zoeken naar wijzigingen. Zie Use Event Grid for App Configuration data change notificationsvoor meer informatie.
Verspreid uw aanvragen over meerdere App Configuration winkels. Gebruik bijvoorbeeld een ander winkel dan elke geografische regio voor een wereldwijd geïmplementeerde toepassing. Elk App Configuration heeft een eigen aanvraagquotum. Deze installatie biedt u een model voor schaalbaarheid en voorkomt single point of failure.
Configuratiegegevens importeren in App Configuration
App Configuration biedt de mogelijkheid om uw configuratie-instellingen bulksgewijs te importeren uit uw huidige configuratiebestanden met behulp van de Azure Portal of CLI. U kunt ook dezelfde opties gebruiken om sleutelwaarden te exporteren uit App Configuration, bijvoorbeeld tussen gerelateerde winkels. Als u een continue synchronisatie wilt instellen met uw repo in GitHub of Azure DevOps, kunt u onze GitHub Action- of Azure Pipeline Push-taak gebruiken, zodat u uw bestaande broncodebeheerprocedures kunt blijven gebruiken terwijl u de voordelen van App Configuration.
Implementatie in meerdere regio's in App Configuration
App Configuration is een regionale service. Voor toepassingen met verschillende configuraties per regio kan het opslaan van deze configuraties in één exemplaar één storingspunt vormen. Het implementeren van App Configuration exemplaren per regio in meerdere regio's is mogelijk een betere optie. Het kan helpen bij regionaal herstel na noodherstel, prestaties en beveiligingssilo's. Configureren per regio verbetert ook de latentie en maakt gebruik van gescheiden beperkingsquota, omdat beperking per exemplaar is. Als u noodherstel wilt beperken, kunt u meerdere configuratieopslagen gebruiken.
Clienttoepassingen in App Configuration
Wanneer u App Configuration in clienttoepassingen, moet u rekening houden met twee belangrijke factoren. Ten eerste, als u de connection string in een clienttoepassing gebruikt, loopt u het risico om de toegangssleutel van uw App Configuration te openbaren. Ten tweede kan de typische schaal van een clienttoepassing overmatige aanvragen voor uw App Configuration-opslag veroorzaken, wat kan leiden tot uitvalkosten of beperking. Zie de Veelgestelde vragen voor meer informatie overbeperking.
Als u deze problemen wilt aanpakken, raden we u aan een proxyservice te gebruiken tussen uw clienttoepassingen en uw App Configuration store. De proxyservice kan veilig worden geverifieerd bij uw App Configuration store zonder dat er een beveiligingsprobleem is met het lekken van verificatiegegevens. U kunt een proxyservice bouwen met behulp van een van de App Configuration-providerbibliotheken, zodat u kunt profiteren van ingebouwde caching- en vernieuwingsmogelijkheden voor het optimaliseren van het aantal aanvragen dat naar de App Configuration. Zie artikelen in Quickstarts en zelfstudies voor meer informatie over het gebruik van App Configuration-providers. De proxyservice levert de configuratie vanuit de cache aan uw clienttoepassingen en u vermijdt de twee mogelijke problemen die in deze sectie worden besproken.
Configuratie als code
Configuratie als code is een praktijk van het beheren van configuratiebestanden onder uw broncodebeheersysteem, bijvoorbeeld een Git-opslagplaats. Het biedt u voordelen zoals traceerbaarheid en goedkeuringsproces voor eventuele configuratiewijzigingen. Als u configuratie als code gebruikt, App Configuration hulpprogramma's om u te helpen bij het implementeren van uw configuratiegegevens. Op deze manier hebben uw toepassingen toegang tot de meest recente gegevens uit App Configuration store(s).
- Voor GitHub kunt u de actie Synchronisatie App Configuration synchroniseren GitHub uw opslagplaats inschakelen. Wijzigingen in configuratiebestanden worden automatisch App Configuration wanneer een pull-aanvraag wordt samengevoegd.
- Voor Azure DevOps kunt u de Azure App Configuration Push,een Azure-pijplijntaak, opnemen in uw build- of release-pijplijnen voor gegevenssynchronisatie.
- U kunt ook configuratiebestanden importeren App Configuration Azure CLI als onderdeel van uw CI/CD-systeem. Zie az appconfig kv import voor meer informatie.
Met dit model kunt u validatie- en teststappen opnemen voordat u gegevens naar uw App Configuration. Als u meerdere App Configuration opslag gebruikt, kunt u de configuratiegegevens ook incrementeel of allemaal tegelijk naar de opslag pushen.