Bewährte Methoden für Azure App Configuration
In diesem Artikel werden allgemeine Muster und bewährte Methoden bei der Verwendung von Azure App Configuration erörtert.
Schlüsselgruppierungen
App Configuration bietet zwei Optionen zum Organisieren von Schlüsseln:
- Schlüsselpräfixe
- Bezeichnungen
Sie können eine oder beide Optionen verwenden, um Ihre Schlüssel zu gruppieren.
Schlüsselpräfixe bilden den Anfang von Schlüsseln. Sie können einen Satz von Schlüsseln logisch gruppieren, indem Sie dasselbe Präfix in ihren Namen verwenden. Präfixe können mehrere Komponenten enthalten, die durch ein Trennzeichen wie z. B. /
miteinander verbunden sind, ähnlich einem URL-Pfad, um einen Namespace zu bilden. Solche Hierarchien sind hilfreich, wenn Sie Schlüssel für viele Anwendungen, und Microservices in einem App Configuration-Speicher speichern.
Ein wichtiger, zu berücksichtigender Aspekt ist, dass Schlüssel das sind, worauf Ihr Anwendungscode verweist, um die Werte der entsprechenden Einstellungen abzurufen. Schlüssel sollten nicht geändert werden, weil Sie ansonsten bei jeder Änderung auch den Code ändern müssen.
Bezeichnungen sind Attribute für Schlüssel. Sie werden zum Erstellen von Varianten eines Schlüssels verwendet. Beispielsweise können Sie mehrere Versionen eines Schlüssels Bezeichnungen zuweisen. Eine Version kann eine Iteration, eine Umgebung oder eine andere kontextbezogene Information sein. Ihre Anwendung kann einen vollständig anderen Satz von Schlüsselwerten anfordern, indem sie eine andere Bezeichnung angibt. Daher bleiben alle Schlüsselverweise in Ihrem Code unverändert.
Schlüsselwertkompositionen
App Configuration behandelt alle gespeicherten Schlüssel als unabhängige Entitäten. App Configuration versucht nicht, eine Beziehung zwischen Schlüsseln abzuleiten oder Schlüsselwerte basierend auf der Hierarchie zu erben. Sie können jedoch mehrere Sätze von Schlüsseln aggregieren, indem Sie Bezeichnungen verwenden, die mit geeigneter Konfigurationsstapelung in Ihrem Anwendungscode gekoppelt sind.
Schauen wir uns ein Beispiel an. Angenommen, Sie verwenden eine Einstellung namens Asset1, deren Wert basierend auf der Entwicklungsumgebung variieren kann. Sie erstellen einen Schlüssel namens „Asset1“ mit einer leeren Bezeichnung und eine Bezeichnung mit dem Namen „Development“. In der ersten Bezeichnung platzieren Sie den Standardwert für Asset1, und in der letzteren platzieren Sie einen spezifischen Wert für „Development“.
In Ihrem Code rufen Sie zuerst die Schlüsselwerte ohne Bezeichnungen ab und dann rufen Sie den gleichen Satz von Schlüsselwerten ein zweites Mal mit der Bezeichnung „Entwicklung“ ab. Wenn Sie die Werte das zweite Mal abrufen, werden die vorherigen Werte der Schlüssel überschrieben. Das .NET-Konfigurationssystem ermöglicht es Ihnen, mehrere Sätze von Konfigurationsdaten übereinander zu „stapeln“. Wenn ein Schlüssel in mehreren Sätzen vorhanden ist, wird der letzte Satz verwendet, der den Schlüssel enthält. Mit einem modernen Programmier-Framework, wie beispielsweise .NET, erhalten Sie diese Stapelfunktion kostenlos, wenn Sie einen nativen Konfigurationsanbieter für den Zugriff auf die App-Konfiguration verwenden. Der folgende Codeschnipsel zeigt, wie Sie Stacking in einer .NET-Anwendung implementieren können:
// 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");
});
Unter Verwenden von Bezeichnungen zum Aktivieren verschiedener Konfigurationen für verschiedene Umgebungen finden Sie ein vollständiges Beispiel.
Verweise auf externe Daten
App Configuration dient zum Speichern jeglicher Konfigurationsdaten, die Sie normalerweise in Konfigurationsdateien oder Umgebungsvariablen speichern würden. Einige Datentypen eignen sich jedoch möglicherweise besser für die Speicherung in anderen Quellen. Speichern Sie beispielsweise Geheimnisse in Key Vault, Dateien in Azure Storage, Mitgliedschaftsinformationen in Microsoft Entra-Gruppen oder Kundenlisten in einer Datenbank.
Sie können dennoch die Vorteile von App Configuration nutzen, indem Sie einen Verweis auf externe Daten in einem Schlüsselwert speichern. Sie können den Inhaltstyp verwenden, um jede Datenquelle zu unterscheiden. Wenn Ihre Anwendung einen Verweis liest, lädt sie die tatsächlichen Daten aus der referenzierten Quelle, vorausgesetzt, sie verfügt über die erforderliche Berechtigung für die Quelle. Falls Sie den Speicherort Ihrer externen Daten ändern, müssen Sie den Verweis nur in App Configuration aktualisieren, anstatt Ihre gesamte Anwendung zu aktualisieren und erneut bereitzustellen.
Das Key Vault-Verweisfeature von App Configuration ist in diesem Fall ein Beispiel. Es gestattet die Aktualisierung der für eine Anwendung erforderlichen Geheimnisse nach Bedarf, während die zugrunde liegenden Geheimnisse selbst in Key Vault verbleiben.
App Configuration-Bootstrapping
Um auf den App Configuration-Speicher zuzugreifen, können Sie seine Verbindungszeichenfolge verwenden, die im Azure-Portal verfügbar ist. Weil Verbindungszeichenfolgen Anmeldeinformationen enthalten, gelten sie als Geheimnisse. Diese Geheimnisse müssen in Azure Key Vault gespeichert werden, und Ihr Code muss bei Key Vault authentifiziert werden, um sie abrufen zu können.
Eine bessere Option ist die Verwendung des Features für verwaltete Identitäten in Microsoft Entra ID. Wenn Sie verwaltete Identitäten verwenden, benötigen Sie nur die URL des App Configuration-Endpunkts, um den Zugriff auf Ihren App Configuration-Speicher zu bootstrappen. Sie können die URL in Ihren Anwendungscode einbetten (z. B. in die Datei appsettings.json). Ausführliche Informationen finden Sie unter Verwenden verwalteter Identitäten für den Zugriff auf App Configuration.
Azure Kubernetes Service-Zugriff auf App Configuration
Für in Azure Kubernetes Service (AKS) gehostete Workloads stehen folgende Optionen für den Zugriff auf Azure App Configuration zur Verfügung. Diese Optionen gelten auch für Kubernetes im Allgemeinen.
Fügen Sie Ihrem AKS-Cluster den Azure App Configuration-Kubernetes-Anbieter hinzu. Der Kubernetes-Anbieter wird als Pod im Cluster ausgeführt. Er kann ConfigMaps und Geheimnisse aus Ihren Schlüsselwerten und Key Vault-Verweisen in Ihrem App Configuration-Speicher erstellen. Die ConfigMap und das Geheimnis können als Umgebungsvariablen oder eingebundene Dateien verwendet werden, ohne dass Änderungen an Ihrem Anwendungscode erforderlich sind. Wenn mehrere Anwendungen im gleichen AKS-Cluster ausgeführt werden, können alle auf die generierten ConfigMaps und Geheimnisse zugreifen, sodass keine einzelnen Anforderungen an App Configuration gesendet werden müssen. Der Kubernetes-Anbieter unterstützt auch dynamische Konfigurationsaktualisierungen. Dies ist die empfohlene Option, sofern dies bei Ihnen möglich ist.
Aktualisieren Sie Ihre Anwendung, um Azure App Configuration-Anbieterbibliotheken zu verwenden. Die Anbieterbibliotheken sind in vielen Frameworks und Sprachen wie ASP.NET, .NET, Java Spring, JavaScript/Node.js und Python verfügbar. Dieser Ansatz ermöglicht Ihnen vollständigen Zugriff auf die Funktionen von App Configuration, einschließlich dynamischer Konfiguration und Featureverwaltung. Sie können für die einzelnen Anwendungen präzise steuern, welche Daten aus welchem App Configuration-Speicher geladen werden sollen.
Richten Sie mithilfe von Helm eine Integration in die Kubernetes-Bereitstellung ein. Wenn Sie Ihre Anwendung nicht aktualisieren oder Ihrem AKS-Cluster keinen neuen Pod hinzufügen möchten, haben Sie die Möglichkeit, mittels Bereitstellung Daten aus App Configuration mithilfe von Helm in Ihren Kubernetes-Cluster zu übertragen. Bei diesem Ansatz kann Ihre Anwendung weiterhin auf die Konfiguration von Kubernetes-Variablen und -Geheimnissen zugreifen. Sie können ein Helm-Upgrade ausführen, wenn Ihre Anwendung neue Konfigurationsänderungen integrieren soll.
App Service- oder Azure Functions-Zugriff auf App Configuration
Verwenden Sie den App Configuration-Anbieter oder SDK-Bibliotheken, um direkt in Ihrer Anwendung auf App Configuration zuzugreifen. Dieser Ansatz ermöglicht Ihnen vollständigen Zugriff auf die Funktionen von App Configuration, einschließlich dynamischer Konfiguration und Featureverwaltung. Ihre Anwendung, die in App Service oder Azure Functions ausgeführt wird, kann über eine der folgenden Methoden Zugriff auf Ihren App Configuration-Speicher erhalten:
- Aktivieren Sie eine verwaltete Identität für App Service oder Azure Functions, und gewähren Sie ihr Zugriff auf Ihren App Configuration-Speicher. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten für den Zugriff auf App Configuration.
- Speichern Sie die Verbindungszeichenfolge zu Ihrem App Configuration-Speicher in den Anwendungseinstellungen von App Service oder Azure Functions. Speichern Sie für höhere Sicherheit die Verbindungszeichenfolge in Key Vault, und verweisen Sie sie über App Service oder Azure Functions darauf.
Sie können Ihre App Configuration-Daten auch als Anwendungseinstellungen oder Umgebungsvariablen für Ihre Anwendung zugänglich machen. Mit diesem Ansatz können Sie eine Änderung des Anwendungscodes vermeiden.
- Fügen Sie in den Anwendungseinstellungen Ihrer App Service- oder Azure Functions-Instanz Verweise auf Ihre App Configuration-Daten hinzu. App Configuration bietet Tools zum gleichzeitigen Exportieren einer Sammlung von Schlüsselwerten als Verweise. Weitere Informationen erhalten Sie unter Verwenden von App Configuration-Verweisen für App Service und Azure Functions (Vorschau).
- Exportieren Sie Ihre App Configuration-Daten in die Anwendungseinstellungen Ihres App Service oder Azure Functions, ohne die Option „Als Verweis exportieren“ (export-as-reference) auszuwählen. Exportieren Sie Ihre Daten jedes Mal, wenn Sie neue Änderungen in App Configuration vornehmen und Ihre Anwendung die Änderung übernehmen soll.
Verringern der Anzahl der Anforderungen an die App-Konfiguration
Übermäßige Anforderungen an die App-Konfiguration können zur Drosselung oder zu Überschreitungsgebühren führen. So verringern Sie die Anzahl der gesendeten Anforderungen
Erhöhen Sie das Aktualisierungsintervall, insbesondere wenn sich Ihre Konfigurationswerte nicht häufig ändern. Geben Sie ein neues Aktualisierungsintervall mithilfe der
SetCacheExpiration
-Methode an.Überwachen Sie eher einen einzelnen Sentinel-Schlüssel, anstatt einzelne Schlüssel zu überwachen. Aktualisieren Sie alle Konfigurationen nur, wenn sich der Sentinel-Schlüssel ändert. Ein Beispiel finden Sie unter Verwenden der dynamischen Konfiguration in einer ASP.NET Core-App.
Verwenden Sie den App-Konfigurations-Kubernetes-Anbieter, wenn Sie mehrere Workloads in einem Kubernetes-Cluster ausführen, die jeweils einzeln Daten aus der App-Konfiguration abrufen. Der Kubernetes-Anbieter ruft Daten aus der App-Konfiguration ab und stellt sie als Kubernetes ConfigMaps und Secrets zur Verfügung. Auf diese Weise können Ihre Workloads über ConfigMaps und Secrets auf die Daten zugreifen, ohne Daten separat aus der App-Konfiguration abrufen zu müssen.
Aktivieren Sie die Georeplikation Ihres App Configuration-Speichers, und verteilen Sie Ihre Anforderungen auf mehrere Replikate. Verwenden Sie beispielsweise ein anderes Replikat aus jeder geografischen Region für eine global bereitgestellte Anwendung. Jedes App Configuration-Replikat verfügt über ein eigenes Anforderungskontingent. Dieses Setup bietet Ihnen ein Modell für Skalierbarkeit und verbesserte Resilienz bei vorübergehenden und regionalen Ausfällen.
Importieren von Konfigurationsdaten in App Configuration
App Configuration bietet die Möglichkeit, Ihre Konfigurationseinstellungen aus Ihren aktuellen Konfigurationsdateien massenhaft zu importieren, entweder über das Azure-Portal oder mithilfe der CLI. Sie können auch dieselben Optionen verwenden, um Schlüsselwerte aus App Configuration zu exportieren, z. B. zwischen verwandten Stores. Wenn Sie Konfiguration als Code übernommen und Ihre Konfigurationen in GitHub oder Azure DevOps verwaltet haben, können Sie den Import der fortlaufenden Konfigurationsdatei mithilfe von GitHub Actions einrichten oder Azure Pipeline Push-Aufgaben verwenden.
Bereitstellung in mehreren Regionen in App Configuration
Wenn Ihre Anwendung in mehreren Regionen bereitgestellt wird, empfiehlt es sich, die Georeplikation Ihres App Configuration-Speichers zu aktivieren. Sie können Ihre Anwendung eine Primärverbindung mit dem Replikat herstellen lassen, das der Region entspricht, in der Instanzen Ihrer Anwendung bereitgestellt werden, und ihr ein Failover auf Replikate in anderen Regionen ermöglichen. Mit diesem Setup können Sie die Latenz zwischen Ihrer Anwendung und App Configuration minimieren, die Last verteilen, da jedes Replikat über separate Drosselungskontingente verfügt, und die Resilienz Ihrer Anwendung gegen vorübergehende und regionale Ausfälle verbessern. Weitere Informationen finden Sie unter Resilienz und Notfallwiederherstellung.
Erstellen von Anwendungen mit hoher Resilienz
Anwendungen benötigen zum Starten häufig eine Konfiguration. Daher ist Hochverfügbarkeit von Azure App Configuration äußerst wichtig. Um die Resilienz zu verbessern, sollten Anwendungen die Zuverlässigkeitsfeatures von App Configuration nutzen. Außerdem sollten abhängig von Ihren spezifischen Anforderungen ggf. folgende Maßnahmen ergriffen werden:
- Verwenden Sie für die Bereitstellung Regionen, die Azure-Verfügbarkeitszonen unterstützen. Verfügbarkeitszonen machen Anwendungen resilient gegenüber Rechenzentrumsausfällen. App Configuration bietet Zonenredundanz für alle Kunden ohne zusätzliche Gebühren. Es empfiehlt sich, Ihren App Configuration-Speicher in Regionen zu erstellen, die Verfügbarkeitszonen unterstützen. Eine Liste mit Regionen, in denen die Unterstützung von Verfügbarkeitszonen für App Configuration aktiviert ist, finden Sie hier.
- Aktivieren Sie die Georeplikation, und ermöglichen Sie Ihrer Anwendung ein Failover oder die Verteilung der Last auf die Replikate. Dadurch erhalten Sie ein Modell für Skalierbarkeit und verbesserte Resilienz gegenüber vorübergehenden Fehlern und regionalen Ausfällen. Weitere Informationen finden Sie unter Resilienz und Notfallwiederherstellung.
- Stellen Sie Konfigurationen mit sicheren Bereitstellungsmethoden bereit. Falsche oder versehentliche Konfigurationsänderungen können häufig zu Downtime von Anwendungen führen. Vermeiden Sie nach Möglichkeit Konfigurationsänderungen, die sich direkt auf die Produktion auswirken (z. B. über das Azure-Portal). Bei sicheren Bereitstellungsmethoden (Safe Deployment Practices, SDP) wird ein Bereitstellungsmodell mit progressiver Exposition verwendet, um die potenziellen Auswirkungen bereitstellungsbedingter Probleme zu minimieren. Mit SDP können Sie eine Konfigurationsmomentaufnahme erstellen und testen, bevor Sie sie in der Produktion bereitstellen. Im Rahmen der Bereitstellung können Sie Instanzen Ihrer Anwendung aktualisieren, um die neue Momentaufnahme schrittweise einzuführen. Bei Problemen können Sie ein Rollback für die Änderung durchführen, indem Sie die letzte fehlerfreie Momentaufnahme bereitstellen. Die Momentaufnahme ist unveränderlich, wodurch die Konsistenz aller Bereitstellungen gewährleistet wird. Sie können Momentaufnahmen zusammen mit der dynamischen Konfiguration verwenden. Verwenden Sie eine Momentaufnahme für Ihre grundlegende Konfiguration und eine dynamische Konfiguration für die Außerkraftsetzung von Konfigurationen im Notfall sowie für Featureflags.
- Integrieren Sie die Konfiguration in Ihre Anwendung. Wenn Sie sicherstellen möchten, dass Ihre Anwendung immer Zugriff auf eine Kopie der Konfiguration hat, oder wenn Sie die Abhängigkeit der Runtime von der App-Konfiguration ganz vermeiden möchten, können Sie die Konfiguration zur Build- oder Releasezeit aus App Configuration abrufen und in Ihre Anwendung integrieren. Weitere Informationen finden Sie in den Beispielen für die Integration von App Configuration in Ihre CI/CD-Pipeline oder Kubernetes-Bereitstellung.
- Verwenden Sie App Configuration-Anbieter. Anwendungen spielen eine wichtige Rolle für hohe Resilienz, da sie während ihrer Laufzeit auftretende Probleme (z. B. mit dem Netzwerk) berücksichtigen und schneller auf Fehler reagieren können. Die App Configuration-Anbieter bieten eine Reihe integrierter Resilienzfeatures, einschließlich automatischer Replikatermittlung, Replikatfailover, Startwiederholungen mit anpassbaren Timeouts, Konfigurationszwischenspeicherung und adaptiven Strategien für eine zuverlässige Konfigurationsaktualisierung. Es wird dringend empfohlen, App Configuration-Anbieter zu verwenden, um von diesen Features zu profitieren. Sollte das nicht möglich sein, empfiehlt es sich, ähnliche Features in Ihrer benutzerdefinierten Lösung zu implementieren, um ein Höchstmaß an Resilienz zu erreichen.
Clientanwendungen in App Configuration
Wenn Sie App Configuration in Clientanwendungen verwenden, stellen Sie sicher, dass Sie zwei Hauptfaktoren berücksichtigen. Zunächst, wenn Sie die Verbindungszeichenfolge in einer Clientanwendung verwenden, riskieren Sie, den Zugriffsschlüssel Ihres App Configuration-Speichers für die Öffentlichkeit verfügbar zu machen. Zweitens kann die typische Skalierung einer Clientanwendung zu übermäßigen Anforderungen an Ihren App Configuration-Speicher führen, was zu Überschreitungsgebühren oder Drosselung führen kann. Weitere Informationen zur Drosselung finden Sie in den Häufig gestellten Fragen.
Um diese Bedenken zu berücksichtigen, empfiehlt es sich, einen Proxydienst zwischen Ihren Clientanwendungen und Ihrem App Configuration-Speicher zu verwenden. Der Proxydienst kann sich sicher bei Ihrem App Configuration-Speicher authentifizieren, ohne dass ein Sicherheitsproblem durch offengelegte Authentifizierungsinformationen besteht. Sie können einen Proxydienst erstellen, indem Sie eine der App Configuration-Anbieterbibliotheken verwenden, sodass Sie die integrierten Cache- und Aktualisierungsfunktionen nutzen können, um die Menge der Anforderungen zu optimieren, die an App Configuration gesendet werden. Weitere Informationen zur Verwendung von App Configuration-Anbietern finden Sie in den Artikeln unter „Schnellstarts“ und „Tutorials“. Der Proxydienst stellt die Konfiguration aus seinem Cache für Ihre Clientanwendungen bereit, und Sie vermeiden die beiden potenziellen Probleme, die in diesem Abschnitt erörtert werden.
Mehrinstanzenfähige Anwendungen in App Configuration
Eine mehrinstanzenfähige Anwendung basiert auf einer Architektur, in der eine freigegebene Instanz Ihrer Anwendung mehrere Kunden oder Mandanten bedient. Beispielsweise können Sie über einen E-Mail-Dienst verfügen, der Ihren Benutzern separate Konten und angepasste Erfahrungen bietet. Ihre Anwendung verwaltet in der Regel verschiedene Konfigurationen für jeden Mandanten. Hier finden Sie einige Überlegungen zur Architektur bei der Verwendung von App Configuration in einer mehrinstanzenfähigen Anwendung.
Konfiguration als Code
Konfiguration als Code ist eine Methode zum Verwalten von Konfigurationsdateien unter Ihrem Quellcodeverwaltungssystem, z. B. einem Git-Repository. Sie bietet Ihnen Vorteile wie Nachverfolgbarkeit und einen Genehmigungsprozess für Konfigurationsänderungen. Wenn Sie die Konfiguration als Code übernehmen, verfügt App Configuration über Tools, mit denen Sie Ihre Konfigurationsdaten in Dateien verwalten und als Teil Ihres Build-, Release- oder CI/CD-Prozesses bereitstellen können. Auf diese Weise können Ihre Anwendungen auf die neuesten Daten aus Ihren App Configuration-Speichern zugreifen.
- Für GitHub können Sie Konfigurationsdateien aus Ihrem GitHub-Repository mithilfe von GitHub Actions in Ihren App-Konfigurationsspeicher importieren.
- Für Azure DevOps können Sie Azure App Configuration Push, eine Azure-Pipelineaufgabe, in Ihre Build- oder Releasepipelines für die Datensynchronisierung einschließen.
- Sie können Konfigurationsdateien auch in App Configuration importieren, indem Sie Azure CLI als Teil Ihres CI/CD-Systems verwenden. Weitere Informationen finden Sie unter az appconfig kv import.
Mit diesem Modell können Sie Validierungs- und Testschritte einschließen, bevor Sie Daten an App Configuration committen. Wenn Sie mehrere App Configuration-Speicher verwenden, können Sie die Konfigurationsdaten auch inkrementell oder alle gleichzeitig an sie pushen.