Guida introduttiva: Aggiungere flag di funzionalità ai carichi di lavoro in servizio Azure Kubernetes
In questo argomento di avvio rapido si creerà un flag di funzionalità in app Azure Configurazione e lo si userà per controllare in modo dinamico la visibilità di una nuova pagina Web in un'app ASP.NET Core in esecuzione nel servizio Azure Kubernetes senza riavviarlo o ridistribuirlo.
Prerequisiti
Seguire i documenti per usare la configurazione dinamica in servizio Azure Kubernetes.
- Guida introduttiva: Usare la configurazione di app Azure in servizio Azure Kubernetes
- Esercitazione: Usare la configurazione dinamica in servizio Azure Kubernetes
Creare un flag di funzionalità
Aggiungere un flag di funzionalità denominato Beta all'archivio Configurazione app e lasciare Label e Description con i relativi valori predefiniti. Per altre informazioni su come aggiungere flag di funzionalità a un archivio usando il portale di Azure o l'interfaccia della riga di comando, vedere Creare un flag di funzionalità.
Usare un flag di funzionalità
In questa sezione si useranno i flag di funzionalità in una semplice applicazione Web ASP.NET ed eseguirla in servizio Azure Kubernetes (servizio Azure Kubernetes).
Passare alla directory del progetto creata nella guida introduttiva ed eseguire il comando seguente per aggiungere un riferimento al pacchetto NuGet Microsoft.FeatureManagement.AspNetCore versione 3.2.0 o successiva.
dotnet add package Microsoft.FeatureManagement.AspNetCore
Aprire program.cs e aggiungere la gestione delle funzionalità alla raccolta di servizi dell'app chiamando
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 // ... ...
Aggiungere
using Microsoft.FeatureManagement;
all'inizio del file se non è presente.Aggiungere una nuova pagina Razor vuota denominata Beta nella directory Pages . Include due file Beta.cshtml e Beta.cshtml.cs.
Aprire Beta.cshtml e aggiornarlo con il markup seguente:
@page @model MyWebApp.Pages.BetaModel @{ ViewData["Title"] = "Beta Page"; } <h1>This is the beta website.</h1>
Aprire Beta.cshtml.cs e aggiungere
FeatureGate
l'attributoBetaModel
alla classe . L'attributoFeatureGate
garantisce che la pagina Beta sia accessibile solo quando il flag di funzionalità Beta è abilitato. Se il flag di funzionalità beta non è abilitato, la pagina restituirà 404 Non trovato.using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace MyWebApp.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }
Aprire Pages/_ViewImports.cshtml e registrare l'helper tag di Gestione funzionalità usando una
@addTagHelper
direttiva:@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
Il codice precedente consente l'uso dell'helper tag
<feature>
nei file con estensione cshtml del progetto.Aprire _Layout.cshtml nella directory Pagine\condivise. Inserire un nuovo tag
<feature>
tra gli elementi Home e Privacy della barra di spostamento, come illustrato nelle righe evidenziate di seguito.<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>
Il
<feature>
tag garantisce che la voce di menu Beta venga visualizzata solo quando il flag di funzionalità Beta è abilitato.Inserire l'applicazione in un contenitore ed eseguire il push dell'immagine in Registro Azure Container.
Distribuire l'applicazione. Aggiornare il browser e la pagina Web avrà un aspetto simile al seguente:
Usare il provider Kubernetes per caricare i flag di funzionalità
Aggiornare il file appConfigurationProvider.yaml che si trova nella directory Deployment con il contenuto seguente.
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
Suggerimento
Quando non
selectors
viene specificato alcun valore nellafeatureFlag
sezione, il provider Kubernetes non caricherà i flag di funzionalità dall'archivio Configurazione app. L'intervallo di aggiornamento predefinito dei flag di funzionalità è di 30 secondi quandofeatureFlag.refresh
è abilitato. È possibile personalizzare questo comportamento tramite ilfeatureFlag.refresh.interval
parametro .Eseguire il comando seguente per applicare le modifiche.
kubectl apply -f ./Deployment -n appconfig-demo
Aggiornare il flag di funzionalità beta nell'archivio Configurazione app. Abilitare il flag selezionando la casella di controllo in Abilitato.
Dopo aver aggiornato il browser più volte, il contenuto aggiornato diventerà visibile dopo l'aggiornamento di ConfigMap entro 30 secondi.
Selezionare il menu Beta . Verrà visualizzato il sito Web beta abilitato in modo dinamico.
Pulire le risorse
Disinstallare il Configurazione app provider Kubernetes dal cluster del servizio Azure Kubernetes se si vuole mantenere il cluster del servizio Azure Kubernetes.
helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system
Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.
Passaggi successivi
Questa guida introduttiva spiega come:
- Aggiunta della funzionalità di gestione delle funzionalità a un'app ASP.NET Core in esecuzione in servizio Azure Kubernetes (servizio Azure Kubernetes).
- Connessione il cluster del servizio Azure Kubernetes nell'archivio Configurazione app usando il provider Kubernetes Configurazione app.
- Creazione di un oggetto ConfigMap con valori chiave e flag di funzionalità dall'archivio Configurazione app.
- È stata eseguita l'applicazione con configurazione dinamica dall'archivio Configurazione app senza modificare il codice dell'applicazione.
Per altre informazioni sul provider Kubernetes di configurazione app Azure, vedere app Azure Informazioni di riferimento sul provider Kubernetes di configurazione.
Per altre informazioni sulle funzionalità di gestione delle funzionalità, continuare con l'esercitazione seguente.