Passer en revue les concepts de configuration des applications
La création de microservices pour un environnement distribué présente un défi important. Les microservices hébergés dans le cloud s’exécutent souvent dans plusieurs conteneurs dans différentes régions. L’implémentation d’une solution qui sépare le code de chaque service de la configuration facilite le triage des problèmes dans tous les environnements.
Dans cette unité, découvrez comment intégrer ASP.NET fonctionnalités de configuration Core et Docker à Azure App Configuration pour relever ce défi de manière efficace.
Vous allez passer en revue les points suivants :
- infrastructure de configuration ASP.NET Core.
- Abstraction de configuration Kubernetes : le ConfigMap.
- Service de configuration d'application Azure.
- Bibliothèque de gestion des fonctionnalités .NET.
- Composants d’indicateur de fonctionnalité implémentés dans l’application.
Configuration de ASP.NET Core
La configuration dans un projet ASP.NET Core est contenue dans un ou plusieurs fournisseurs de configuration .NET. Un fournisseur de configuration est une abstraction sur une source de configuration spécifique, telle qu’un fichier JSON. Les valeurs de la source de configuration sont représentées sous la forme d’une collection de paires clé-valeur.
Une application ASP.NET Core peut inscrire plusieurs fournisseurs de configuration pour lire les paramètres de différentes sources. Avec l’hôte d’application par défaut, plusieurs fournisseurs de configuration sont automatiquement inscrits. Les sources de configuration suivantes sont disponibles dans l’ordre indiqué :
- Fichier JSON (appsettings.json)
- Fichier JSON (appsettings.{environment}.json)
- Secrets utilisateur
- Variables d'environnement
- Ligne de commande
Chaque fournisseur de configuration peut apporter sa propre valeur de clé. De plus, tout fournisseur peut remplacer une valeur d’un fournisseur qui a été inscrit plus tôt dans la chaîne que lui-même. Étant donné l’ordre d’inscription dans la liste précédente, un UseFeatureManagement paramètre de ligne de commande remplace une variable d’environnement UseFeatureManagement . De même, une UseFeatureManagement clé au sein appsettings.json peut être remplacée par une UseFeatureManagement clé stockée dans appsettings.Development.json.
Les noms de clés de configuration peuvent décrire une hiérarchie. Par exemple, la notation eShop :Store :SeasonalSale fait référence à la fonctionnalité SeasonalSale dans le microservice Store de l’application eShop . Cette structure peut également mapper des valeurs de configuration à un graphique d’objet ou à un tableau.
Important
Certaines plateformes ne prennent pas en charge un signe deux-points dans les noms de variables d’environnement. Pour garantir la compatibilité entre plateformes, un trait de soulignement double (__) est utilisé au lieu d’un signe deux-points (:) pour délimiter les clés. Par exemple, eShop__Store__SeasonalSale est la notation équivalente multiplateforme pour eShop:Store:SeasonalSale.
ASP.NET Core utilise une ConfigurationBinder pour mapper les valeurs de configuration aux objets et tableaux. Le mappage avec les noms de clés ne respecte pas la casse. Par exemple, ConnectionString et connectionstring sont traités en tant que clés équivalentes. Pour plus d’informations, consultez clés et valeurs.
Configuration de Docker
Dans Docker, une abstraction permettant de gérer la configuration en tant que collection de paires clé-valeur est la section variable d’environnement du fichier YAML d’un conteneur. L’extrait de code suivant est un extrait du fichier de l’application docker-compose.yml :
services:
frontend:
image: storeimage
build:
context: .
dockerfile: DockerfileStore
environment:
- ProductEndpoint=http://backend:8080
- ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features.azconfig.io;Id=<ID>;Secret=<SECRET>
ports:
- "32000:8080"
depends_on:
- backend
L’extrait de code de fichier définit :
- Variables stockées dans la
environmentsection du fichier YAML, comme mis en surbrillance dans l’extrait de code précédent. - Présenté à l’application conteneurisée en tant que variables d’environnement.
- Mécanisme permettant de conserver les valeurs de configuration .NET dans les applications de microservices.
Les variables d’environnement sont un mécanisme multiplateforme permettant de fournir une configuration d’exécution aux applications hébergées dans les conteneurs Docker.
Configuration d'application Azure
Un service de configuration centralisé est particulièrement utile dans les applications de microservices et d’autres applications distribuées. Ce module présente Azure App Configuration en tant que service pour la gestion centralisée des valeurs de configuration, en particulier pour les indicateurs de fonctionnalité. Le service facilite la résolution des erreurs qui surviennent lorsque la configuration est déployée avec une application.
App Configuration est un service entièrement géré qui chiffre les valeurs de clé au repos et en transit. Les valeurs de configuration stockées avec elles peuvent être mises à jour en temps réel sans avoir à redéployer ou redémarrer une application.
Dans une application ASP.NET Core, Azure App Configuration est inscrit en tant que fournisseur de configuration. Hormis l’inscription du fournisseur, l’application ne connaît pas le magasin App Configuration. Les valeurs de configuration peuvent être récupérées via l'abstraction de configuration de .NET, c'est-à-dire l'interface IConfiguration.
Bibliothèque de gestion des fonctionnalités
La bibliothèque De gestion des fonctionnalités fournit des API .NET standardisées pour la gestion des indicateurs de fonctionnalités dans les applications. La bibliothèque est distribuée via NuGet sous la forme de deux packages différents nommés Microsoft.FeatureManagement et Microsoft.FeatureManagement.AspNetCore. Ce dernier package fournit des Tag Helpers à utiliser dans les fichiers Razor d’un projet ASP.NET Core. L'ancien forfait est suffisant lorsque les Tag Helpers ne sont pas nécessaires ou lorsqu’il n'est pas utilisé avec un projet ASP.NET Core.
La bibliothèque s’appuie sur IConfiguration. Pour cette raison, il est compatible avec n’importe quel fournisseur de configuration .NET, y compris le fournisseur pour Azure App Configuration. Étant donné que la bibliothèque est découplée d’Azure App Configuration, l’intégration des deux est rendue possible via le fournisseur de configuration. La combinaison de cette bibliothèque avec Azure App Configuration vous permet de basculer dynamiquement les fonctionnalités sans implémenter l’infrastructure de prise en charge.
Intégration à Azure App Configuration
Pour comprendre l’intégration d’Azure App Configuration et de la bibliothèque De gestion des fonctionnalités, consultez l’extrait suivant d’un Program.cs fichier de projet ASP.NET Core :
string connectionString = builder.Configuration.GetConnectionString("AppConfig");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
options.Connect(connectionString)
.UseFeatureFlags();
});
Dans le fragment de code précédent :
- La méthode de l’application
builder.Configurationest appelée pour inscrire un fournisseur de configuration pour le magasin Azure App Configuration. Le fournisseur de configuration est enregistré via un appel àAddAzureAppConfiguration. - Le comportement du fournisseur Azure App Configuration est configuré avec les options suivantes :
- Authentification auprès du service Azure correspondant par le biais d’une chaîne de connexion transmise à l’appel de méthode
Connect. La chaîne de connexion est récupérée à partir de laconnectionStringvariable. Les sources de configuration inscrites sont rendues disponibles viabuilder.Configuration. - Activation de la prise en charge des indicateurs de fonctionnalités par l’intermédiaire d’un appel à
UseFeatureFlags.
- Authentification auprès du service Azure correspondant par le biais d’une chaîne de connexion transmise à l’appel de méthode
- Le fournisseur Azure App Configuration remplace tous les autres fournisseurs de configuration inscrits, car il est inscrit après tout autre fournisseur.
Conseil / Astuce
Dans un projet ASP.NET Core, vous pouvez accéder à la liste des fournisseurs inscrits en analysant la configBuilder.Sources propriété à l’intérieur de ConfigureAppConfiguration.