Freigeben über


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.

Mithilfe von Schlüsselpräfixen können Sie verwandte Schlüssel mithilfe eines allgemeinen Präfixes in ihren Namen gruppieren. Präfixe können mehrere Segmente enthalten, die durch Trennzeichen wie / oder : getrennt sind, um einen hierarchischen Namespace zu bilden. Dieser Ansatz ist hilfreich beim Speichern von Konfigurationsschlüsseln für mehrere Anwendungen oder Microservices in einem einzelnen App-Konfigurationsspeicher.

Es ist wichtig zu beachten, dass schlüssel direkt von Ihrem Anwendungscode referenziert werden, um die entsprechenden Werte abzurufen. Daher sollten Schlüssel stabil bleiben, um Codeänderungen zu vermeiden. Bei Bedarf können Sie den App Configuration-Anbieter verwenden, um Schlüsselpräfixe zur Laufzeit zu kürzen.

Mit Bezeichnungen können Sie Variationen eines Schlüssels erstellen, z. B. verschiedene Versionen oder umgebungsspezifische Einstellungen. Durch Zuweisen von Bezeichnungen können Sie mehrere Werte für denselben Schlüssel verwalten. Ihre Anwendung kann dann verschiedene Gruppen von Schlüsselwerten abrufen, indem sie die entsprechende Bezeichnung angeben, sodass Ihre Schlüsselverweise im Code konsistent bleiben können.

Schlüsselwertkompositionen

Die App-Konfiguration behandelt jeden darin gespeicherten Schlüssel als unabhängige Entität. Es leitet keine Beziehungen zwischen Schlüsseln ab oder erbt Werte basierend auf der Schlüsselhierarchie. Sie können jedoch mehrere Schlüsselgruppen effektiv aggregieren, indem Sie Bezeichnungen in Kombination mit dem Konfigurationsstapel in Ihrer Anwendung verwenden.

Sehen Sie sich ein Beispiel an, in dem Sie eine Konfigurationseinstellung namens TestApp:MySetting haben, deren Wert je nach Umgebung variiert. Sie können zwei Schlüssel mit demselben Namen erstellen, aber ihnen unterschiedliche Bezeichnungen zuweisen – einen ohne spezielle Bezeichnung (standardmäßig) und einen anderen mit der Bezeichnung Entwicklung. Der nicht bezeichnete Schlüssel enthält den Standardwert, während der beschriftete Schlüssel den umgebungsspezifischen Wert enthält.

Im Anwendungscode laden Sie zuerst die Standardschlüsselwerte (nicht bezeichnet) und dann die umgebungsspezifischen Schlüsselwerte mithilfe der Entwicklungsbezeichnung . Beim Laden des zweiten Satzes überschreiben alle übereinstimmenden Schlüssel die zuvor geladenen Werte. Mit diesem Ansatz können Sie mehrere Konfigurationssätze "stapeln", wobei der zuletzt geladene Wert Vorrang hat. App-Konfigurationsanbieter über unterstützte Sprachen und Plattformen hinweg bieten diese Stapelfunktion.

Im folgenden Beispiel wird veranschaulicht, wie die Komposition von Schlüsselwerten in einer .NET-Anwendung implementiert wird:

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

Unter Verwenden von Bezeichnungen zum Aktivieren verschiedener Konfigurationen für verschiedene Umgebungen finden Sie ein vollständiges Beispiel.

Konfigurationsaktualisierung

Die Azure App-Konfiguration unterstützt die dynamische Konfigurationsaktualisierung, ohne dass ein Neustart der Anwendung erforderlich ist. Die App-Konfigurationsanbieter können Konfigurationsänderungen mit zwei Ansätzen überwachen:

Überwachen aller ausgewählten Schlüssel

Bei diesem Ansatz überwacht der Anbieter alle ausgewählten Schlüssel. Wenn eine Änderung in einem der ausgewählten Schlüsselwerte erkannt wird, wird die gesamte Konfiguration neu geladen. Dieser Ansatz stellt sofortige Updates sicher, ohne dass zusätzliche Schlüsseländerungen erforderlich sind.

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

Überwachen eines Sentinelschlüssels

Alternativ können Sie einen einzelnen Schlüssel überwachen, der häufig als Sentinelschlüssel bezeichnet wird. Dieser Ansatz ist nützlich, wenn mehrere Schlüsselwerte aktualisiert werden. Wenn Sie den Sentinel-Schlüssel erst aktualisieren, nachdem alle anderen Konfigurationsänderungen abgeschlossen wurden, stellen Sie sicher, dass die Konfiguration der Anwendung nur einmal neu geladen wird, wobei die Konsistenz beibehalten wird.

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

Beide Ansätze stehen über App-Konfigurationsanbieter auf allen unterstützten Sprachen und Plattformen zur Verfügung.

Um das Risiko von Konfigurationsinkonsistenzen zu verringern, verwenden Sie Konfigurationsmomentaufnahmen , um die Konfigurationsintegrität sicherzustellen.

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 einen Azure App-Konfigurationsspeicher zuzugreifen, können Sie sich entweder mit einer Verbindungszeichenfolge oder einer Microsoft Entra-ID authentifizieren. Während Verbindungszeichenfolgen im Azure-Portal leicht verfügbar sind, enthalten sie Anmeldeinformationen und müssen als geheime Schlüssel behandelt werden. Wenn Sie diesen Ansatz auswählen, speichern Sie die Verbindungszeichenfolge sicher in Azure Key Vault, und stellen Sie sicher, dass Ihre Anwendung sich bei Key Vault authentifiziert, um sie abzurufen.

Ein sichererer und empfohlener Ansatz besteht darin, die Microsoft Entra ID-Authentifizierung zu verwenden. Wenn Ihre Anwendung in Azure gehostet wird – z. B. in Azure Kubernetes Service, App Service oder Azure Functions – können Sie verwaltete Identitäten verwenden, die von Microsoft Entra ID bereitgestellt werden. Verwaltete Identitäten beseitigen die Notwendigkeit, Geheimnisse explizit zu verwalten. Bei dieser Methode erfordert Ihre Anwendung nur die App-Konfigurationsendpunkt-URL, die sicher in Den Anwendungscode oder Konfigurationsdateien eingebettet werden kann.

Weitere 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:

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.

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 die Konfigurationswerte nicht häufig ändern. Geben Sie ein neues Aktualisierungsintervall mithilfe der SetRefreshInterval-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 Die Konfiguration als Code übernehmen und Ihre Konfigurationen in GitHub oder Azure DevOps verwalten, können Sie den Import fortlaufender Konfigurationsdateien mithilfe von GitHub-Aktionen oder azure Pipeline-Importaufgabe einrichten.

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 der App-Konfiguration verwenden und die folgenden Maßnahmen basierend auf Ihren spezifischen Anforderungen in Betracht ziehen.

  • 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. Sie können auch auf den Beispielcode für das Setup von mehrinstanzenfähiger Anwendungen verweisen.

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 über ihren App-Konfigurationsspeicher auf die neuesten Daten 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-Import, 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.

Nächste Schritte