Delen via


Quickstart: Functievlagmen toevoegen aan workloads in Azure Kubernetes Service

In deze quickstart maakt u een functievlag in Azure-app Configuratie en gebruikt u deze om de zichtbaarheid van een nieuwe webpagina in een ASP.NET Core-app die wordt uitgevoerd in AKS dynamisch te beheren zonder deze opnieuw te starten of opnieuw te implementeren.

Vereisten

Volg de documenten voor het gebruik van dynamische configuratie in Azure Kubernetes Service.

Een functievlag maken

Voeg een functievlag met de naam Beta toe aan het App Configuration-archief en laat label en beschrijving ongewijzigd met de standaardwaarden. Ga naar Een functievlag maken voor meer informatie over het toevoegen van functievlagmen aan een winkel met behulp van Azure Portal of de CLI.

Schermopname van het maken van een functievlag met de naam Bèta.

Een functievlag gebruiken

In deze sectie gebruikt u functievlagmen in een eenvoudige ASP.NET webtoepassing en voert u deze uit in Azure Kubernetes Service (AKS).

  1. Navigeer naar de map van het project die u in de quickstart hebt gemaakt en voer de volgende opdracht uit om een verwijzing naar het NuGet-pakket Microsoft.FeatureManagement.AspNetCore NuGet-pakket versie 3.2.0 of hoger toe te voegen.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Open program.cs en voeg functiebeheer toe aan de serviceverzameling van uw app door aan te roepen 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
    // ... ...
    

    Voeg boven aan het bestand toe using Microsoft.FeatureManagement; als het niet aanwezig is.

  3. Voeg een nieuwe lege Razor-pagina toe met de naam Beta onder de map Pagina's. Het bevat twee bestanden Beta.cshtml en Beta.cshtml.cs.

    Open Beta.cshtml en werk deze bij met de volgende markeringen:

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

    Open Beta.cshtml.cs en voeg het kenmerk toe FeatureGate aan de BetaModel klasse. Het FeatureGate kenmerk zorgt ervoor dat de bètapagina alleen toegankelijk is wanneer de vlag bètafunctie is ingeschakeld. Als de bètafunctievlag niet is ingeschakeld, retourneert de pagina 404 Niet gevonden.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Open Pages/_ViewImports.cshtml en registreer de Tag Helper voor functiebeheer met behulp van een @addTagHelper instructie:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Met de voorgaande code kan de <feature> Tag Helper worden gebruikt in de .cshtml-bestanden van het project.

  5. Open _Layout.cshtml in de map Gedeelde pagina's\. Voeg een nieuwe tag <feature> in tussen de navigatiebalkitems Start en Privacy, zoals wordt weergegeven in de gemarkeerde regels hieronder.

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

    De <feature> tag zorgt ervoor dat het menu-item Bèta alleen wordt weergegeven wanneer de vlag bètafunctie is ingeschakeld.

  6. Plaats de toepassing in een container en push de installatiekopieën naar Azure Container Registry.

  7. Implementeer de toepassing. Vernieuw de browser en de webpagina ziet er als volgt uit:

    Schermopname van Kubernetes Provider na het gebruik van configMap zonder functievlag.

Kubernetes Provider gebruiken om functievlagmen te laden

  1. Werk het bestand appConfigurationProvider.yaml in de implementatiemap bij met de volgende inhoud.

    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
    

    Tip

    Als er geen zijn selectors opgegeven in featureFlag de sectie, worden functievlagmen van de Kubernetes-provider niet geladen vanuit uw App Configuration-archief. Het standaardvernieuwingsinterval van functievlagmen is 30 seconden wanneer featureFlag.refresh deze optie is ingeschakeld. U kunt dit gedrag aanpassen via de featureFlag.refresh.interval parameter.

  2. Voer de volgende opdracht uit om de wijzigingen toe te passen.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Werk de bètafunctievlag bij in uw App Configuration-archief. Schakel de vlag in door het selectievakje onder Ingeschakeld in te schakelen.

  4. Nadat de browser meerdere keren is vernieuwd, wordt de bijgewerkte inhoud zichtbaar zodra de ConfigMap binnen 30 seconden is bijgewerkt.

    Schermopname van Kubernetes Provider na het gebruik van configMap met functievlag ingeschakeld.

  5. Selecteer het menu Bèta . Het brengt u naar de bètawebsite die u dynamisch hebt ingeschakeld.

    Schermopname van de bètapagina kubernetes Provider na het gebruik van configMap.

Resources opschonen

Verwijder de App Configuration Kubernetes Provider van uw AKS-cluster als u het AKS-cluster wilt behouden.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze snelstart, gaat u het volgende doen:

  • Functiebeheer toegevoegd aan een ASP.NET Core-app die wordt uitgevoerd in Azure Kubernetes Service (AKS).
  • Verbinding maken uw AKS-cluster naar uw App Configuration-archief met behulp van de App Configuration Kubernetes-provider.
  • U hebt een ConfigMap gemaakt met sleutelwaarden en functievlagmen uit uw App Configuration-archief.
  • De toepassing is uitgevoerd met dynamische configuratie vanuit uw App Configuration-archief zonder de toepassingscode te wijzigen.

Zie Azure-app Naslaginformatie over configuratie-Kubernetes-provider voor meer informatie over de Azure-app Configuratie-Kubernetes-provider.

Ga verder met de volgende zelfstudie voor meer informatie over functiebeheer.