Partager via


Démarrage rapide : utiliser Azure App Configuration dans Azure Kubernetes Service

Dans Kubernetes, vous pouvez configurer des pods pour consommer des données de configuration à partir de ConfigMaps. Cette pratique améliore la portabilité de vos applications, car vous pouvez dissocier les données de configuration de vos images conteneur.

Le fournisseur Kubernetes Azure App Configuration offre un moyen de construire Kubernetes ConfigMaps et secrets à partir de valeurs clés et de références Azure Key Vault stockées dans App Configuration. Lorsque vous utilisez ce fournisseur, vous pouvez utiliser App Configuration pour stocker et gérer de manière centralisée vos données de configuration sans apporter de modifications à votre code d’application.

Un ConfigMap peut être consommé en tant que variables d'environnement ou fichier monté. Dans ce guide de démarrage rapide, vous incorporez le fournisseur Kubernetes Azure App Configuration dans votre charge de travail AKS. Le fournisseur crée un ConfigMap à partir de données dans votre magasin App Configuration. Dans la charge de travail, vous exécutez une application de base ASP.NET Core dans un pod qui utilise ConfigMap en tant que fichier JSON monté dans un volume de données.

Conseil

Pour obtenir d’autres façons d’accéder à App Configuration à partir d’une charge de travail hébergée dans Kubernetes, consultez l’accès Azure Kubernetes Service à App Configuration.

Remarque

Ce guide de démarrage rapide vous guide tout au long de la configuration du fournisseur Kubernetes Azure App Configuration. Si vous le souhaitez, vous pouvez utiliser les commandes Azure Developer CLI suivantes pour provisionner des ressources Azure et déployer l’exemple d’application que ce guide de démarrage rapide utilise. Ces commandes utilisent le azure-appconfig-aks modèle à cet effet. Pour plus d’informations sur ce modèle, consultez le dépôt GitHub azure-appconfig-aks .

azd init -t azure-appconfig-aks
azd up

Prérequis

Créer une application qui s’exécute dans AKS

Dans cette section, vous allez créer une application web de base ASP.NET Core qui s’exécute dans AKS. L’application lit les données de configuration à partir d’un fichier JSON local. Dans la section suivante, vous allez autoriser l’application à consommer des données de configuration à partir d’App Configuration sans modifier le code de l’application.

Si vous disposez déjà d’une application AKS qui lit la configuration à partir d’un fichier, vous pouvez ignorer cette section et accéder au fournisseur Kubernetes Azure App Configuration. Si vous ignorez cette section, vérifiez que le fichier de configuration généré par le fournisseur correspond au chemin d’accès de fichier que votre application utilise.

Créer une application

  1. Utilisez l’interface de ligne de commande .NET (CLI) pour exécuter la commande suivante. Il crée un projet d’application web core ASP.NET dans un nouveau répertoire MyWebApp .

    dotnet new webapp --output MyWebApp --framework net8.0
    
  2. Dans le répertoire MyWebApp , accédez au répertoire Pages , puis ouvrez Index.cshtml. Remplacez le contenu par le code suivant :

    @page
    @model IndexModel
    @using Microsoft.Extensions.Configuration
    @inject IConfiguration Configuration
    @{
        ViewData["Title"] = "Home page";
    }
    
    <style>
        h1 {
            color: @Configuration["Settings:FontColor"];
        }
    </style>
    
    <div class="text-center">
        <h1>@Configuration["Settings:Message"]</h1>
    </div>
    
  3. Créez un répertoire de configuration à la racine de votre projet. Dans le répertoire de configuration , ajoutez un fichier mysettings.json qui contient le contenu suivant :

    {
      "Settings": {
        "FontColor": "Black",
        "Message": "Message from the local configuration"
      }
    }
    
  4. Dans le répertoire racine de votre projet, ouvrez Program.cs, puis ajoutez le fichier JSON à la source de configuration en appelant la AddJsonFile méthode.

    // Existing code in Program.cs
    // ... ...
    
    // Add a JSON configuration source.
    builder.Configuration.AddJsonFile("config/mysettings.json", reloadOnChange: true, optional: false);
    
    var app = builder.Build();
    
    // The rest of the existing code in Program.cs
    // ... ...
    

Conteneuriser l’application

  1. Pour générer l’application en mode mise en production et créer les ressources dans le répertoire publié , exécutez la commande dotnet publish .

    dotnet publish -c Release -o published
    
  2. Créez un fichier nommé Dockerfile à la racine du répertoire de votre projet, ouvrez-le dans un éditeur de texte, puis entrez le contenu suivant. Un fichier Dockerfile est un fichier texte qui n’a pas d’extension. Vous l’utilisez pour créer une image conteneur.

    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
    WORKDIR /app
    COPY published/ ./
    ENTRYPOINT ["dotnet", "MyWebApp.dll"]
    
  3. Générez une image conteneur nommée aspnetapp en exécutant la commande suivante :

    docker build --tag aspnetapp .
    

Envoyer l’image à Container Registry

  1. Pour vous connecter à votre registre de conteneurs, exécutez la commande az acr login . Le code suivant se connecte à un registre nommé myregistry. Remplacez ce nom de registre par le nom de votre registre.

    az acr login --name myregistry
    

    La commande retourne Login Succeeded si vous vous connectez correctement.

  2. Pour créer une balise appelée myregistry.azurecr.io/aspnetapp:v1 pour l’image aspnetapp , utilisez la commande docker tag . Remplacez myregistry par le nom de votre registre.

    docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1
    

    Conseil

    Pour consulter la liste de vos images et balises Docker existantes, exécutez docker image ls. Dans ce scénario, la sortie doit répertorier au moins deux images : aspnetapp et myregistry.azurecr.io/aspnetapp.

  3. Pour charger l’image dans le registre de conteneurs, utilisez la commande Docker Push . Par exemple, la commande suivante envoie (push) l’image vers un référentiel nommé aspnetapp avec une balise v1 sous le Registre myregistry:

    docker push myregistry.azurecr.io/aspnetapp:v1
    

Déployer l’application

  1. Créez un répertoire Déploiement dans le répertoire racine de votre projet.

  2. Pour définir un déploiement, ajoutez un fichier deployment.yaml avec le contenu suivant dans le répertoire de déploiement . Remplacez la valeur par template.spec.containers.image la balise que vous avez créée dans la section précédente.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aspnetapp-demo
      labels:
        app: aspnetapp-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aspnetapp-demo
      template:
        metadata:
          labels:
            app: aspnetapp-demo
        spec:
          containers:
          - name: aspnetapp
            image: myregistry.azurecr.io/aspnetapp:v1
            ports:
            - containerPort: 80
    
  3. Pour définir un LoadBalancer service, ajoutez un fichier service.yaml avec le contenu suivant au répertoire de déploiement :

    apiVersion: v1
    kind: Service
    metadata:
      name: aspnetapp-demo-service
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: aspnetapp-demo
    
  4. Pour permettre à kubectl de se connecter à votre cluster AKS, exécutez la commande suivante. Il télécharge les informations d’identification de votre cluster AKS et les fusionne dans le contexte de votre cluster.

    az aks get-credentials --name <your-AKS-instance-name> --resource-group <your-AKS-resource-group>
    
  5. Pour déployer l’application sur le cluster AKS et créer les ressources, exécutez les commandes suivantes :

    kubectl create namespace appconfig-demo
    kubectl apply -f ./Deployment -n appconfig-demo
    
  6. Pour obtenir l’adresse IP externe exposée par le LoadBalancer service, exécutez la commande suivante :

    kubectl get service aspnetapp-demo-service -n appconfig-demo
    
  7. Dans une fenêtre de navigateur, accédez à l’adresse IP que vous avez obtenue à l’étape précédente. La page web doit ressembler à la capture d’écran suivante :

    Capture d’écran d’un navigateur montrant la page web d’une application. La page contient du texte indiquant message de la configuration locale.

Utiliser le fournisseur Kubernetes Azure App Configuration

Maintenant que vous disposez d’une application s’exécutant dans AKS, l’étape suivante consiste à déployer le fournisseur Kubernetes Azure App Configuration sur votre cluster AKS pour qu’il s’exécute en tant que contrôleur Kubernetes. Le fournisseur récupère les données de votre magasin App Configuration et crée un ConfigMap, qui est consommable en tant que fichier JSON monté dans un volume de données.

Configurer le magasin App Configuration

Ajoutez les clés et valeurs suivantes au magasin App Configuration. Pour chacun d’eux, utilisez les valeurs par défaut pour le type d’étiquette et de contenu. Pour plus d’informations sur l’ajout de valeurs de clé à un magasin à l’aide du portail Azure ou d’Azure CLI, consultez Créer une clé-valeur.

Clé Valeur
Settings :FontColor Vert
Paramètres :Message Bonjour d’Azure App Configuration

Configurer le fournisseur Kubernetes Azure App Configuration

  1. Installez le fournisseur Kubernetes Azure App Configuration sur votre cluster AKS. Vous pouvez installer le fournisseur en tant qu’extension AKS ou à l’aide d’un graphique Helm. L’extension AKS fournit une installation et une gestion transparentes via l’interface de ligne de commande Azure, les modèles Azure Resource Manager (modèles ARM) ou les fichiers Bicep. En outre, l’utilisation de l’extension AKS facilite les mises à jour automatiques des versions mineures et correctives, ce qui vous permet de garantir que votre système reste à jour.

    Ajoutez-les k8s-extension à vos extensions Azure CLI.

    az extension add --name k8s-extension
    

    Inscrivez le KubernetesConfiguration fournisseur de ressources.

    az provider register --namespace Microsoft.KubernetesConfiguration
    

    Installez l’extension AKS pour App Configuration. Remplacez les cluster-name valeurs et resource-group les valeurs de paramètre par les valeurs correspondantes de votre instance AKS. Par défaut, le fournisseur est installé dans l’espace azappconfig-system de noms.

    az k8s-extension create --cluster-type managedClusters \
        --cluster-name <your-AKS-instance-name> \
        --resource-group <your-AKS-resource-group> \
        --name appconfigurationkubernetesprovider \
        --extension-type Microsoft.AppConfiguration
    

    Pour plus d’informations, consultez Installer l’extension AKS Azure App Configuration.

  2. Pour définir une AzureAppConfigurationProvider ressource, ajoutez un fichier appConfigurationProvider.yaml avec le contenu suivant dans le répertoire De déploiement . AzureAppConfigurationProvider est une ressource personnalisée. Il définit les données à télécharger à partir d’un magasin App Configuration. Il crée également un ConfigMap.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
        configMapData: 
          type: json
          key: mysettings.json
      auth:
        workloadIdentity:
          serviceAccountName: <your-service-account-name>
    

    Remplacez la valeur du champ endpoint par le point de terminaison de votre magasin Azure App Configuration. Passez à l’étape suivante pour mettre à jour la section auth avec vos informations d’authentification.

    Remarque

    AzureAppConfigurationProvider est un objet API déclaratif. Il définit l’état souhaité du ConfigMap créé à partir des données de votre magasin App Configuration. La définition de l’état souhaité spécifie le comportement suivant :

    • La création de ConfigMap échoue si un ConfigMap portant le même nom existe déjà dans le même espace de noms.
    • ConfigMap est réinitialisé en fonction des données présentes dans votre magasin App Configuration s’il est supprimé ou modifié par tout autre moyen.
    • ConfigMap est supprimé si le fournisseur Kubernetes Azure App Configuration est désinstallé.
  3. Pour vous authentifier auprès de votre magasin App Configuration, suivez les instructions d’utilisation de l’identité de charge de travail. Mettez à jour le fichier appConfigurationProvider.yaml en remplaçant le serviceAccountName champ par le nom du compte de service que vous créez lorsque vous suivez les instructions. Pour plus d’informations sur les autres méthodes d’authentification, consultez les exemples de l’authentification.

  4. Comme indiqué dans le code suivant, mettez à jour le fichier deployment.yaml dans le répertoire de déploiement pour utiliser ConfigMap configmap-created-by-appconfig-provider comme volume de données monté. Il est important que la volumeMounts.mountPath valeur corresponde à la WORKDIR valeur spécifiée dans votre fichier Dockerfile et au répertoire de configuration que vous avez créé précédemment. Vérifiez également que la valeur correspond template.spec.containers.image au nom de l’image que vous avez créée précédemment.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aspnetapp-demo
      labels:
        app: aspnetapp-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aspnetapp-demo
      template:
        metadata:
          labels:
            app: aspnetapp-demo
        spec:
          containers:
          - name: aspnetapp
            image: myregistry.azurecr.io/aspnetapp:v1
            ports:
            - containerPort: 80
            volumeMounts:
            - name: config-volume
              mountPath: /app/config
          volumes:
          - name: config-volume 
            configMap: 
              name: configmap-created-by-appconfig-provider
    
  5. Pour déployer les modifications, exécutez la commande suivante. Mettez à jour l’espace de noms si vous utilisez votre application AKS existante.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  6. Actualisez le navigateur. La page affiche le contenu mis à jour.

    Capture d’écran d’un navigateur montrant la page web d’une application. La page contient du texte vert indiquant Hello à partir d’Azure App Configuration.

Dépannage

Si votre application ne lit pas les données de votre magasin App Configuration, exécutez la commande suivante pour vérifier que ConfigMap est créé correctement :

kubectl get configmap configmap-created-by-appconfig-provider -n appconfig-demo

Si configMap n’est pas créé, exécutez la commande suivante pour obtenir l’état de récupération des données :

kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml

Si le fournisseur Kubernetes Azure App Configuration récupère les données de votre magasin App Configuration, la phase propriété de la status section de la sortie doit être Complete, comme illustré dans l’exemple suivant :

$ kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
  ... ... ...
status:
  lastReconcileTime: "2025-08-04T13:58:02Z"
  lastSyncTime: "2025-08-04T13:58:02Z"
  message: Complete sync key-values from App Configuration to target ConfigMap or
    Secret.
  phase: Complete

Si la propriété de phase n’est pas COMPLETE, les données ne sont pas téléchargées à partir de votre magasin App Configuration correctement. Pour accéder aux journaux d’activité du fournisseur Kubernetes Azure App Configuration, exécutez la commande suivante :

kubectl logs deployment/az-appconfig-k8s-provider -n azappconfig-system

Utilisez les journaux pour un dépannage plus approfondi. Pour obtenir des solutions aux problèmes courants, consultez faq.

Forum aux questions

Pourquoi le configMap ou le secret n’est-il pas généré ?

Pour collecter les journaux contenant des informations détaillées sur les erreurs, suivez les étapes de résolution des problèmes. Voici quelques causes courantes de ce problème :

  • RÉPONSE 403 : 403 Interdit : l’identité configurée ne dispose pas des autorisations nécessaires pour accéder au magasin App Configuration. Pour obtenir des exemples qui correspondent à l’identité que vous utilisez, consultez Authentification.
  • Une référence Key Vault se trouve dans App Configuration, mais « spec.secret » n’a pas été configurée : une ou plusieurs références Key Vault sont incluses dans les valeurs de clé sélectionnées, mais les informations d’authentification pour Key Vault ne sont pas fournies. Pour préserver l’intégrité de la configuration, le chargement de toute la configuration échoue. Configurez la section spec.secret pour fournir les informations d’authentification nécessaires. Pour obtenir des exemples et plus d’informations, consultez les références Key Vault .

Pourquoi le ConfigMap généré ne contient-il pas les données attendues ?

Vérifiez que les sélecteurs clé-valeur que vous spécifiez correspondent aux données attendues. Si vous ne spécifiez aucun sélecteur, toutes les valeurs de clé sans étiquette sont téléchargées à partir de votre magasin App Configuration. Lorsque vous utilisez un filtre de clé, vérifiez qu’il correspond au préfixe de vos valeurs de clé attendues. Si vos paires clé-valeur ont des étiquettes, veillez à spécifier le filtre d’étiquettes dans les sélecteurs. Pour plus d’exemples, consultez sélection clé-valeur.

Comment personnaliser l’installation du fournisseur Kubernetes Azure App Configuration ?

Vous pouvez personnaliser l’installation en fournissant des valeurs Helm supplémentaires lorsque vous installez le fournisseur Kubernetes Azure App Configuration. Par exemple, vous pouvez définir le niveau de consignation, configurer le fournisseur pour qu’il s’exécute sur un nœud spécifique ou désactiver l’identité de la charge de travail. Pour plus d’informations, consultez Installation.

Comment déclencher une actualisation à la demande de ConfigMap et secret ?

Vous pouvez configurer les données pour qu’elles s’actualisent automatiquement. Toutefois, il peut arriver que vous souhaitiez déclencher une actualisation à la demande pour obtenir les données les plus récentes d’App Configuration et de Key Vault. Pour déclencher une actualisation, vous pouvez modifier la metadata.annotations section de AzureAppConfigurationProvider. Le fournisseur Kubernetes met ensuite à jour configMap et secret avec les données les plus récentes de votre magasin App Configuration et key Vault. Pour obtenir un exemple, consultez l’actualisation à la demande.

Nous vous déconseillons de supprimer ou de modifier le ConfigMap et le secret générés par le fournisseur Kubernetes. Les nouvelles sont générées à partir des données les plus récentes, mais cette situation peut entraîner un temps d’arrêt pour vos applications pendant les défaillances.

Pourquoi ne puis-je pas m’authentifier auprès d’App Configuration à l’aide de l’identité de charge de travail après la mise à niveau du fournisseur vers la version 2.0.0 ?

À compter de la version 2.0.0, un compte de service fourni par l’utilisateur est requis pour l’authentification auprès d’App Configuration à l’aide de l’identité de charge de travail. Ce changement permet de renforcer la sécurité via l’isolation de l’espace de noms. Auparavant, le compte de service d’un fournisseur Kubernetes était utilisé pour tous les espaces de noms. Pour obtenir des instructions mises à jour, consultez la documentation sur l’utilisation de l’identité de charge de travail. Si vous avez besoin de temps pour migrer lors de la mise à niveau vers la version 2.0.0, vous pouvez utiliser temporairement le paramètre pendant l’installation du workloadIdentity.globalServiceAccountEnabled=true fournisseur. Notez que la prise en charge de l’utilisation du compte de service du fournisseur est planifiée pour la dépréciation dans une prochaine version.

Nettoyer les ressources

Si vous souhaitez désinstaller le fournisseur Kubernetes Azure App Configuration, mais conserver votre cluster AKS, utilisez la commande suivante pour désinstaller le fournisseur :

az k8s-extension delete --cluster-type managedClusters \
    --cluster-name <your-AKS-instance-name> \
    --resource-group <your-AKS-resource-group> \
    --name appconfigurationkubernetesprovider

Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.

Important

La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
  3. Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.

Remarque

Si vous utilisez Azure Developer CLI pour configurer les ressources, vous pouvez exécuter la commande azd down pour supprimer toutes les ressources créées par le modèle azure-appconfig-aks.

Étapes suivantes

Dans ce guide de démarrage rapide, vous :

  • Création d’une application s’exécutant dans AKS.
  • Connectez votre cluster AKS à votre magasin App Configuration à l’aide du fournisseur Kubernetes Azure App Configuration.
  • Vous avez créé un ConfigMap avec les données de votre magasin App Configuration.
  • Exécution de l’application avec des données de configuration à partir de votre magasin App Configuration sans modifier le code de votre application.

Pour savoir comment mettre à jour vos charges de travail AKS pour actualiser dynamiquement les données de configuration, passez au tutoriel suivant.

Pour plus d’informations sur le fournisseur Kubernetes Azure App Configuration, consultez la référence du fournisseur Kubernetes Azure App Configuration.