Schnellstart: Hinzufügen von Funktions-Flags zu Workloads in Azure Kubernetes Service

In diesem Schnellstart erstellen Sie ein Featureflag in Azure App Configuration und verwenden es, um die Sichtbarkeit einer neuen Webseite in einer ASP.NET Core-App, die in AKS ausgeführt wird, dynamisch zu steuern, ohne sie neu zu starten oder erneut bereitzustellen.

Voraussetzungen

Befolgen Sie die Anweisungen in den Dokumenten, um die dynamische Konfiguration in Azure Kubernetes Service zu verwenden.

Erstellen eines Featureflags

Fügen Sie dem App Configuration-Speicher ein Featureflag mit dem Namen Beta hinzu, und behalten Sie die Standardwerte für Bezeichnung und Beschreibung bei. Weitere Informationen zum Hinzufügen von Featureflags zu einem Speicher mithilfe des Azure-Portals oder der CLI finden Sie unter Erstellen eines Featureflags.

Screenshot, der das Erstellen des Funktions-Flags „Beta“ zeigt.

Verwenden eines Featureflags

In diesem Abschnitt verwenden Sie Funktions-Flags in einer einfachen ASP.NET Webanwendung und führen sie in Azure Kubernetes Service (AKS) aus.

  1. Navigieren Sie zum Verzeichnis des Projekts, das Sie im Schnellstart erstellt haben, und führen Sie den folgenden Befehl aus, um einen Verweis auf die Microsoft.FeatureManagement.AspNetCore NuGet-Paketversion 3.2.0 oder höher hinzuzufügen.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Öffnen Sie program.cs, und fügen Sie der Dienstsammlung Ihrer App die Funktionsverwaltung hinzu, indem Sie AddFeatureManagement aufrufen.

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

    Fügen Sie oben in der Datei using Microsoft.FeatureManagement; hinzu (sofern noch nicht vorhanden).

  3. Fügen Sie eine neue leere Razor-Seite namens Beta unter dem Verzeichnis Pages hinzu. Sie enthält zwei Dateien Beta.cshtml und Beta.cshtml.cs.

    Öffnen Sie Beta.cshtml, und aktualisieren Sie sie mit dem folgenden Markup:

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

    Öffnen Sie Beta.cshtml.cs, und fügen Sie der BetaModel-Klasse ein FeatureGate-Attribut hinzu. Das FeatureGate-Attribut stellt sicher, dass nur auf die Seite Beta zugegriffen werden kann, wenn das Featureflag Beta aktiviert ist. Wenn das Featureflag Beta nicht aktiviert ist, gibt die Seite den Fehler „404: Nicht gefunden“ zurück.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Öffnen Sie Pages/_ViewImports.cshtml, und registrieren Sie das Taghilfsprogramm für den Feature-Manager mithilfe einer @addTagHelper-Anweisung:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Der vorangehende Code ermöglicht die Verwendung des <feature>-Taghilfsprogramms in den .cshtml-Dateien des Projekts.

  5. Öffnen Sie _Layout.cshtml im Verzeichnis Pages\Shared. Fügen Sie ein neues <feature>-Tag zwischen den Navigationsleistenelementen Start und Datenschutz ein, wie nachfolgend in den hervorgehobenen Zeilen gezeigt:

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

    Das <feature>-Tag stellt sicher, dass das Menüelement Beta nur angezeigt wird, wenn das Featureflag Beta aktiviert ist.

  6. Containerisieren Sie die Anwendung, und pushen Sie das Image an Azure Container Registry.

  7. Bereitstellen der Anwendung. Aktualisieren Sie den Browser, und die Webseite sieht wie folgt aus:

    Screenshot des Kubernetes-Anbieters nach der Verwendung von configMap ohne Funktions-Flag.

Verwenden des Kubernetes-Anbieters zum Laden von Funktions-Flags

  1. Aktualisieren Sie die Datei appConfigurationProvider.yaml im Verzeichnis Bereitstellung mit dem folgenden Inhalt.

    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
    

    Tipp

    Wenn im Abschnitt „featureFlag“ keine selectors angegeben sind, lädt der Kubernetes-Anbieter keine Funktions-Flags aus Ihrem App Configuration-Speicher. Das standardmäßige Aktualisierungsintervall von Funktions-Flags beträgt 30 Sekunden, wenn featureFlag.refresh aktiviert ist. Sie können dieses Verhalten über den featureFlag.refresh.interval-Parameter anpassen.

  2. Führen Sie den folgenden Befehl aus, um die Änderungen anzuwenden.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Aktualisieren Sie das Funktions-Flag Beta in Ihrem App Configuration-Speicher. Aktivieren Sie das Flag „Beta“, indem Sie das Kontrollkästchen unter Aktiviert aktivieren.

  4. Nach der mehrfachen Aktualisierung des Browsers wird der aktualisierte Inhalt sichtbar, sobald die ConfigMap innerhalb von 30 Sekunden aktualisiert wurde.

    Screenshot des Kubernetes-Anbieters nach der Verwendung von configMap ohne aktiviertes Funktions-Flag.

  5. Wählen Sie das Menü Beta aus. Damit gelangen Sie zu der Beta-Website, die Sie dynamisch aktiviert haben.

    Screenshot der Betaseite „Kubernetes-Anbieter“ nach der Verwendung von configMap.

Bereinigen von Ressourcen

Deinstallieren Sie den App Configuration Kubernetes-Anbieter aus Ihrem AKS-Cluster, wenn Sie den AKS-Cluster beibehalten möchten.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.

Nächste Schritte

In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:

  • Die Funktionsverwaltung wurde zu einer ASP.NET Core-App hinzugefügt, die in Azure Kubernetes Service (AKS) ausgeführt wird.
  • Sie haben Ihren AKS-Cluster mithilfe des App Configuration Kubernetes-Anbieters mit Ihrem App Configuration-Speicher verbunden.
  • Eine ConfigMap mit Schlüsselwerten und Funktion-Flags aus Ihrem App Configuration-Speicher wurde erstellt.
  • Sie haben die Anwendung mit einer dynamischen Konfiguration aus Ihrem App Configuration-Speicher ausgeführt, ohne den Anwendungscode zu ändern.

Weitere Informationen zum Azure App Configuration Kubernetes-Anbieter finden Sie unter Azure App Configuration Kubernetes-Anbieterreferenz.

Wenn Sie mehr über die Funktionsverwaltung erfahren möchten, fahren Sie mit dem folgenden Tutorial fort.