Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida introduttiva si creerà un flag di funzionalità in Configurazione app di Azure 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 riavviarla o ridistribuirla.
Prerequisiti
Seguire i documenti per usare la configurazione dinamica nel servizio Azure Kubernetes.
- Guida introduttiva: Usare Configurazione app di Azure nel servizio Azure Kubernetes
- Esercitazione: Usare la configurazione dinamica nel servizio Azure Kubernetes
Creare un flag di funzionalità
Aggiungere un flag di funzionalità denominato Beta all'archivio di Configurazione app e lasciare Etichetta e Descrizione 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 nel 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.AspNetCoreAprire 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
FeatureGatel'attributoBetaModelalla classe . L'attributoFeatureGategarantisce 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
@addTagHelperdirettiva:@addTagHelper *, Microsoft.FeatureManagement.AspNetCoreIl codice precedente consente l'uso dell'helper
<feature>tag nei file con estensione cshtml del progetto.Aprire _Layout.cshtml nella directory Pagine\condivise . Inserire un nuovo
<feature>tag tra gli elementi della barra di spostamento Home e Privacy , 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.Containerizzare l'applicazione 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: trueSuggerimento
Quando non
selectorsviene specificato alcun valore nellafeatureFlagsezione, il provider Kubernetes non caricherà i flag di funzionalità dall'archivio di Configurazione app. L'intervallo di aggiornamento predefinito dei flag di funzionalità è di 30 secondi quandofeatureFlag.refreshè abilitato. È possibile personalizzare questo comportamento tramite il parametrofeatureFlag.refresh.interval.Eseguire il comando seguente per applicare le modifiche.
kubectl apply -f ./Deployment -n appconfig-demoAggiornare il flag di funzionalità Beta nell'archivio di 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 provider Kubernetes di Configurazione app 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 nel servizio Azure Kubernetes.
- Connettere il cluster del servizio Azure Kubernetes all'archivio di Configurazione app usando il provider Kubernetes di Configurazione app.
- Creazione di un oggetto ConfigMap con valori chiave e flag di funzionalità dall'archivio di Configurazione app.
- Eseguire l'applicazione con configurazione dinamica dall'archivio di Configurazione app senza modificare il codice dell'applicazione.
Per altre informazioni sul provider Kubernetes di Configurazione app di Azure, vedere Informazioni di riferimento sul provider Kubernetes di Configurazione app di Azure.
Per altre informazioni sulle funzionalità di gestione delle funzionalità, continuare con l'esercitazione seguente.