Partager via


Démarrage rapide : Ajouter des indicateurs de fonctionnalité aux charges de travail dans Azure Kubernetes Service

Dans ce guide de démarrage rapide, vous allez créer un indicateur de fonctionnalité dans Azure App Configuration et l’utiliser pour contrôler dynamiquement la visibilité d’une nouvelle page web dans une application ASP.NET Core s’exécutant dans AKS sans le redémarrer ni la redéployer.

Prerequisites

Suivez les documents pour utiliser la configuration dynamique dans Azure Kubernetes Service.

Créer un indicateur de fonctionnalité

Ajoutez un indicateur de fonctionnalité appelé Bêta au magasin App Configuration et conservez les valeurs par défaut des options Étiquette et Description. Pour plus d’informations sur l’ajout d’indicateurs de fonctionnalité à un magasin à l’aide du Portail Azure ou de CLI, accédez à Créer un indicateur de fonctionnalité.

Capture d’écran montrant la création d’un indicateur de fonctionnalité nommé Bêta.

Utiliser un indicateur de fonctionnalité

Dans cette section, vous allez utiliser des indicateurs de fonctionnalité dans une application web simple ASP.NET et l’exécuter dans Azure Kubernetes Service (AKS).

  1. Accédez au répertoire du projet que vous avez créé dans le guide de démarrage rapide, puis exécutez la commande suivante pour ajouter une référence au package NuGet Microsoft.FeatureManagement.AspNetCore version 3.2.0 ou ultérieure.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Ouvrez program.cs et ajoutez la gestion des fonctionnalités à la collection de services de votre application en appelant AddFeatureManagement.

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

    Ajoutez using Microsoft.FeatureManagement; en haut du fichier s’il n’est pas présent.

  3. Ajoutez une nouvelle page Razor vide nommée Bêta sous le répertoire Pages . Il inclut deux fichiers Beta.cshtml et Beta.cshtml.cs.

    Ouvrez Beta.cshtml et mettez-le à jour avec le balisage suivant :

    @page
    @model MyWebApp.Pages.BetaModel
    @{
        ViewData["Title"] = "Beta Page";
    }
    
    <h1>This is the beta website.</h1>
    

    Ouvrez Beta.cshtml.cs et ajoutez FeatureGate l’attribut à la BetaModel classe. L’attribut FeatureGate garantit que la page Bêta est accessible uniquement lorsque l’indicateur de fonctionnalité Bêta est activé. Si l’indicateur de fonctionnalité bêta n’est pas activé, la page retourne 404 Introuvable.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Ouvrez Pages/_ViewImports.cshtml et inscrivez le Tag Helper du gestionnaire de fonctionnalités à l’aide d’une @addTagHelper directive :

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Le code précédent permet <feature> à Tag Helper d’être utilisé dans les fichiers .cshtml du projet.

  5. Ouvrez _Layout.cshtml dans le répertoire Pages\partagés . Insérez une nouvelle <feature> balise entre les éléments de la barre de navigation Accueil et Confidentialité , comme indiqué dans les lignes mises en surbrillance ci-dessous.

    <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
        <ul class="navbar-nav flex-grow-1">
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
            </li>
            <feature name="Beta">
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-page="/Beta">Beta</a>
                </li>
            </feature>
            <li class="nav-item">
                <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
            </li>
        </ul>
    </div>
    

    La <feature> balise garantit que l’élément de menu Bêta est affiché uniquement lorsque l’indicateur de fonctionnalité bêta est activé.

  6. Conteneurisez l’application et envoyez l’image à Azure Container Registry.

  7. Déployez l’application. Actualisez le navigateur et la page web se présente comme suit :

    Capture d’écran montrant le fournisseur Kubernetes après l’utilisation de configMap sans indicateur de fonctionnalité.

Utiliser le fournisseur Kubernetes pour charger des indicateurs de fonctionnalité

  1. Mettez à jour le fichier appConfigurationProvider.yaml situé dans le répertoire de déploiement avec le contenu suivant.

    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:
          managedIdentityClientId: <your-managed-identity-client-id>
      featureFlag:
        selectors:
          - keyFilter: 'Beta'
        refresh:
          enabled: true
    

    Conseil / Astuce

    Quand aucune valeur n’est selectors spécifiée dans featureFlag la section, le fournisseur Kubernetes ne charge pas les indicateurs de fonctionnalités à partir de votre magasin App Configuration. L’intervalle d’actualisation par défaut des indicateurs de fonctionnalité est de 30 secondes quand il featureFlag.refresh est activé. Vous pouvez personnaliser ce comportement via le paramètre featureFlag.refresh.interval.

  2. Exécutez la commande suivante pour appliquer les modifications.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Mettez à jour l’indicateur de fonctionnalité bêta dans votre magasin App Configuration. Activez l’indicateur en cochant la case située sous Activé.

  4. Après avoir actualisé le navigateur plusieurs fois, le contenu mis à jour devient visible une fois que ConfigMap a été mis à jour dans les 30 secondes.

    Capture d’écran montrant le fournisseur Kubernetes après l’utilisation de configMap avec l’indicateur de fonctionnalité activé.

  5. Sélectionnez le menu Bêta . Il vous amènera sur le site web bêta que vous avez activé dynamiquement.

    Capture d’écran montrant la page bêta du fournisseur Kubernetes après l’utilisation de configMap.

Nettoyer les ressources

Désinstallez le fournisseur Kubernetes App Configuration de votre cluster AKS si vous souhaitez conserver le cluster AKS.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

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.

Étapes suivantes

Dans ce guide de démarrage rapide, vous :

  • Ajout de la fonctionnalité de gestion des fonctionnalités à une application ASP.NET Core s’exécutant dans Azure Kubernetes Service (AKS).
  • Connectez votre cluster AKS à votre magasin App Configuration à l’aide du fournisseur Kubernetes App Configuration.
  • Créez un ConfigMap avec des valeurs clés et des indicateurs de fonctionnalité à partir de votre magasin App Configuration.
  • Exécution de l’application avec une configuration dynamique à partir de votre magasin App Configuration sans modifier le code de votre application.

Pour en savoir plus sur le fournisseur Kubernetes Azure App Configuration, consultez la référence du fournisseur Kubernetes Azure App Configuration.

Pour en savoir plus sur la fonctionnalité de gestion des fonctionnalités, passez au didacticiel suivant.