Udostępnij za pośrednictwem


Szybki start: dodawanie flag funkcji do obciążeń w usłudze Azure Kubernetes Service

W tym przewodniku Szybki start utworzysz flagę funkcji w aplikacja systemu Azure Configuration i użyjesz jej do dynamicznego kontrolowania widoczności nowej strony internetowej w aplikacji ASP.NET Core uruchomionej w usłudze AKS bez ponownego uruchamiania lub ponownego wdrażania.

Wymagania wstępne

Postępuj zgodnie z dokumentami, aby użyć konfiguracji dynamicznej w usłudze Azure Kubernetes Service.

Tworzenie flagi funkcji

Dodaj flagę funkcji o nazwie Beta do sklepu App Configuration i pozostaw pole Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do tematu Tworzenie flagi funkcji.

Zrzut ekranu przedstawiający tworzenie flagi funkcji o nazwie Beta.

Używanie flagi funkcji

W tej sekcji użyjesz flag funkcji w prostej ASP.NET aplikacji internetowej i uruchomisz ją w usłudze Azure Kubernetes Service (AKS).

  1. Przejdź do katalogu projektu utworzonego w przewodniku Szybki start i uruchom następujące polecenie, aby dodać odwołanie do pakietu NuGet Microsoft.FeatureManagement.AspNetCore w wersji 3.2.0 lub nowszej.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Otwórz program.cs i dodaj zarządzanie funkcjami do kolekcji usług aplikacji, wywołując metodę 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
    // ... ...
    

    Dodaj using Microsoft.FeatureManagement; w górnej części pliku, jeśli nie jest obecny.

  3. Dodaj nową pustą stronę Razor o nazwie Beta w katalogu Pages . Zawiera dwa pliki Beta.cshtml i Beta.cshtml.cs.

    Otwórz plik Beta.cshtml i zaktualizuj go przy użyciu następującego znacznika:

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

    Otwórz Beta.cshtml.cs i dodaj FeatureGate atrybut do BetaModel klasy. Atrybut FeatureGate zapewnia dostępność strony beta tylko wtedy, gdy flaga funkcji beta jest włączona. Jeśli flaga funkcji beta nie jest włączona, strona zwróci błąd 404 Nie znaleziono.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Otwórz plik Pages/_ViewImports.cshtml i zarejestruj pomocnika tagów menedżera funkcji przy użyciu @addTagHelper dyrektywy :

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Powyższy kod umożliwia użycie pomocnika tagów <feature> w plikach cshtml projektu.

  5. Otwórz plik _Layout.cshtml w katalogu udostępnionym Pages\. Wstaw nowy <feature> tag między elementami paska nawigacyjnego Strona główna i Prywatność , jak pokazano w wyróżnionych wierszach poniżej.

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

    Tag <feature> zapewnia, że element menu Beta jest wyświetlany tylko wtedy, gdy flaga funkcji beta jest włączona.

  6. Konteneryzowanie aplikacji i wypychanie obrazu do usługi Azure Container Registry.

  7. Wdróż aplikację. Odśwież przeglądarkę, a strona internetowa będzie wyglądać następująco:

    Zrzut ekranu przedstawiający dostawcę Kubernetes po użyciu narzędzia configMap bez flagi funkcji.

Ładowanie flag funkcji za pomocą dostawcy Kubernetes

  1. Zaktualizuj plik appConfigurationProvider.yaml znajdujący się w katalogu Deployment przy użyciu następującej zawartości.

    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
    

    Napiwek

    Jeśli nie selectors zostanie określona w featureFlag sekcji, dostawca Kubernetes nie załaduje flag funkcji ze sklepu App Configuration. Domyślny interwał odświeżania flag funkcji to 30 sekund po featureFlag.refresh włączeniu. To zachowanie można dostosować za pomocą parametru featureFlag.refresh.interval .

  2. Uruchom następujące polecenie, aby zastosować zmiany.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Zaktualizuj flagę funkcji beta w sklepie App Configuration. Włącz flagę, zaznaczając pole wyboru w obszarze Włączone.

  4. Po wielokrotnym odświeżeniu przeglądarki zaktualizowana zawartość stanie się widoczna po zaktualizowaniu obiektu ConfigMap w ciągu 30 sekund.

    Zrzut ekranu przedstawiający dostawcę Kubernetes po użyciu narzędzia configMap z włączoną flagą funkcji.

  5. Wybierz menu Beta. Spowoduje to dynamiczne włączenie witryny internetowej w wersji beta.

    Zrzut ekranu przedstawiający stronę beta dostawcy Kubernetes po użyciu narzędzia configMap.

Czyszczenie zasobów

Odinstaluj dostawcę Kubernetes usługi App Configuration z klastra usługi AKS, jeśli chcesz zachować klaster usługi AKS.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W ramach tego przewodnika Szybki start wykonasz następujące czynności:

  • Dodano możliwość zarządzania funkcjami do aplikacji ASP.NET Core uruchomionej w usłudze Azure Kubernetes Service (AKS).
  • Połączenie klastra usługi AKS do magazynu App Configuration przy użyciu dostawcy Kubernetes usługi App Configuration.
  • Utworzono obiekt ConfigMap z flagami key-values i feature ze sklepu App Configuration.
  • Uruchom aplikację z konfiguracją dynamiczną ze sklepu App Configuration bez zmiany kodu aplikacji.

Aby dowiedzieć się więcej na temat dostawcy platformy Kubernetes konfiguracji aplikacja systemu Azure, zobacz aplikacja systemu Azure Configuration Kubernetes Provider reference (Dokumentacja dostawcy usługi Kubernetes konfiguracji platformy Kubernetes).

Aby dowiedzieć się więcej na temat możliwości zarządzania funkcjami, przejdź do następującego samouczka.