Accueil > Centraliser les services avec Azure App Configuration
zahir Chelbi
4 mai 2023
Read this post in English

Centraliser les services avec Azure App Configuration

Centraliser les services avec Azure App Configuration

Grâce à l’approche DevOps et à la montée en puissance de l’utilisation des Clouds, le modèle d’architecture microservices devient de plus en plus populaire.

Ce type d’architecture composé de plusieurs APIs et microservices permet de créer des applications résilientes et hautement scalables, mais demande en même temps un effort important pour maintenir le paramétrage et la configuration à jour, et limite les risques d’erreurs et de régressions liées aux déploiements des composants souvent difficiles à détecter et corriger.

Azure propose un service permettant de regrouper la configuration et le paramétrage des différents services et de les gérer de manière centralisée : Azure App Configuration.

 

Créer un Azure App Configuration

 

Après connexion à votre compte Azure, naviguez vers la Marketplace et choisissez « App configuration » puis « créer ». Vous devez ensuite choisir dans quel groupe de ressource et quelle location l’app configuration doit être créée.

Vous pouvez aussi choisir le Pricing Tier (Free ou standard) ainsi que les options de réplication et de récupération en cas de suppression.

Creating an Azure App Configuration

 

La prochaine étape consiste à choisir les options de réseau et de sécurisation d’accès au composant.

Vous pouvez rendre votre composant accessible publiquement ou uniquement dans votre réseau privé.

Create your app configuration

 

Des clés et des valeurs

 

Azure App Configuration permet de stocker des objets simples de type paire clé-valeur d’une taille totale inférieure à 10 000 caractères. On peut l’utiliser pour définir des objets comme des url partagées, des chaines de connexion, ou même les mots de passe ou secrets utilisés pour s’authentifier.

Pour simplifier l’utilisation par les consommateurs, Azure App Configuration permet de rajouter un Content-type dans la liste des MIME Media-Type, en plus des types prédéfinis comme JSON, référence Key Vault et feature flags.

 

Keys

 

Les clés sont des chaines de caractères Unicode délimitées par un caractère comme « / » ou « : ». Elles servent à stocker et organiser les paires dans des espaces de noms hiérarchiques.

Pour nommer des clés, on peut utiliser tous les caractères Unicode, à l’exception des caractères réservés « * », « \ » et « , ». Si vous avez besoin d’inclure un caractère réservé, vous devez l’échapper au moyen de « \{ caractère réservé } ».

Voici quelques exemples de la façon dont vous pouvez structurer vos noms de clés dans une hiérarchie :

AppName:ServiceName:ApiEndpoint

AppName:Region:DbEndpoint

 

Valeurs

 

Les valeurs sont utilisées pour stocker les informations de la paire allant d’une simple valeur à un objet complexe comme un JSON.

Les valeurs ne sont pas conçues pour stocker les secrets d’application. A la place, Azure App Configuration permet d’utiliser des références à Azure Key Vault. A la création d’une nouvelle paire, vous avez le choix entre créer une key-value et une key-value reference.

Etiquettes

 

Les étiquettes sont utilisées pour filtrer et différencier des valeurs pour une même clé. Cet attribut est facultatif et peut être vide ou « null ».

Le système d’étiquettes permet de créer plusieurs variantes d’une même clé, par exemple une variante par zone, environnement, type de service ou même par objet fonctionnel.

 

Interroger des valeurs de clés

 

Chaque valeur de clé est identifiée de manière unique par sa clé et une étiquette pouvant être « null ». Pour interroger un magasin App Configuration afin de connaître des valeurs de clés, vous devez spécifier un modèle. Le magasin App Configuration retourne toutes les clés qui correspondent au modèle, ainsi que leurs valeurs et attributs correspondants.

 

Créer une paire clé-valeurs

 

Sur l’interface de l’Azure App Configuration, naviguer vers l’onglet Configuration Explorer puis Créer. Dans l’éditeur qui s’ouvre, vous aurez le choix de créer une Key-value ou une key-value reference. Un éditeur s’ouvre alors pour renseigner les informations de la nouvelle clé.

Si vous choisissez de créer une key-value reference, vous devrez sélectionner un Key Vault et le nom de la clé que vous souhaitez associer, ainsi que sa version.

Créer une paire clé-valeurs

 

Gérer les fonctionnalités avec les features management

 

Pour faciliter l’activation et la désactivation de nouvelles fonctionnalités en production sans avoir à déployer toutes les briques de votre application, Azure App Configuration met à votre disposition les features management.

Cette fonctionnalité permet de changer rapidement la visibilité d’une fonctionnalité en l’activant pour une population bien définie.

II existe plusieurs utilisations des features management :

  • Feature flag: il s’agit d’une variable avec un état binaire (On et Off), qui permet de définir si on exécute un bloc de code ou afficher les parties UI pour l’utilisateur.
  • Feature Filter: un feature flag avec plus de règles qui permettent d’afficher ou masquer la fonctionnalité selon certains critères tels qu’une population spécifique d’utilisateurs, une fenêtre de temps, ou encore un pourcentage d’utilisateurs.

Créer un Feature flag : sur l’interface de l’Azure App Configuration, naviguer vers l’onglet Feature manager puis Créer. Un éditeur s’ouvre pour renseigner les informations de la nouvelle clé.

 

Gérer les fonctionnalités avec les features management

 

Se connecter à Azure App Configuration

 

Avant de pouvoir consommer les valeurs de l’App Configuration, il faut configurer les accès à cette dernière. Pour cela, il faut donner au moins le rôle App Configuration Data Reader à l’identité du composant qui va se connecter à l’App Configuration.

 

Gérer l’accès à l’App configuration

 

Sur l’interface de l’Azure App Configuration, naviguez vers l’onglet Access control (IAM) puis ajoutez Role assignement, et sélectionnez l’identité du composant avec le rôle App Configuration Data Reader ou App Configuration Data Owner.

 

Gérer l’Identité de l’App configuration

 

Si l’App Configuration contient des références à Azure Key Vault, alors il faut autoriser l’App Configuration à accéder au Key Vault en utilisant l’identité managée du composant ou une identité attribuée à un utilisateur (user-assigned identity).

Sur l’interface de l’Azure App Configuration, naviguez vers l’onglet Identity puis cliquez sur le Botton Status pour activer l’identité managée du composant.

Pour ajouter le user-assigned identity, il faut naviguer vers User assigned puis ajouter votre identité.

Naviguer vers User assigned puis ajouter votre identité

 

Maintenant que l’App Configuration a son identité, il faut aller à l’interface du Key Vault et créer un Access Policy pour l’identité de l’App Configuration.

 

Utiliser Azure App Configuration

 

Maintenant que les accès sont configurés sur l’App Configuration, il reste à récupérer la chaine de connexion et l’url depuis l’onglet Access keys, comme indiqué sur l’image ci-dessous :

Utiliser Azure App Configuration

 

Cas d’une application .NET Core

 

Tous d’abord, il faut ajouter la chaine de connexion dans les paramètres de l’environnement de l’application.

La prochaine étape consiste à ajouter au projet depuis le NuGet Package Manager le package Microsoft.Extensions.Configuration.AzureAppConfiguration, ou avec la ligne de commande suivante :

dotnet add package Microsoft.Extensions.Configuration.AzureAppConfiguration

 

Puis importer les Namespaces suivants dans le Startup :

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;

 

Vous devrez ensuite configurer la récupération des valeurs depuis l’App Configuration :

 

La clause Select permet d’ajouter des filtres pour récupérer un sous-ensemble de clés avec une étiquette définie. Dans l’exemple, nous allons récupérer uniquement les clés avec les étiquettes myservice et common.

La clause ConfigureRefresh permet de définir les critères de mise à jour des clés et feature flags ; dans l’exemple, si la clé « demo » est modifiée alors on recharge toute la configuration, sinon les clés sont récupérées à l’expiration du cache défini grâce à la méthode SetCacheExpiration.

Enfin la méthode UseFeatureFlags permet de récupérer les feature flags en plus de clés.

Pour utiliser les valeurs de l’App Configuration, il suffit d’injecter l’interface IConfiguration dans vos classes et contrôleurs, puis de récupérer la valeur du tableau de configuration :

String variable = configuration["demo"];

 

Azure App Configuration : l’essentiel à retenir

 

La gestion de la configuration est un élément important dans le fonctionnement des applications, surtout en architecture microservices. Grâce à Azure App Configuration, vous pouvez centraliser votre configuration et limiter les incidents des mises à jour et des rotations des clés.

En plus, il permet de gérer facilement l’accès aux valeurs et de référencer les mots de passe, chaines de connexion et certificats stockés dans le Key Vault, ce qui offre plus de sécurité.

 

Vous souhaitez être accompagnés dans vos projets ? Contactez-nous !

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.