このクイック スタートでは、Azure App Configuration で機能フラグを作成し、それを使用して、AKS で実行されている ASP.NET Core アプリで新しい Web ページの可視性を動的に制御します。再起動や再デプロイは必要ありません。
[前提条件]
ドキュメントに従って、Azure Kubernetes Service で動的構成を使用します。
- クイック スタート: Azure Kubernetes Service で Azure App Configuration を使用する
- チュートリアル: Azure Kubernetes Service で動的構成を使用する
機能フラグを作成する
App Configuration ストアに Beta という機能フラグを追加し、 ラベル と 説明 を既定値のままにします。 Azure portal または CLI を使用してストアに機能フラグを追加する方法の詳細については、「 機能フラグの作成」を参照してください。
機能フラグを使用する
このセクションでは、シンプルな ASP.NET Web アプリケーションで機能フラグを使用し、Azure Kubernetes Service (AKS) で実行します。
クイック スタートで作成したプロジェクトのディレクトリに移動し、次のコマンドを実行して、Microsoft.FeatureManagement.AspNetCore NuGet パッケージ バージョン 3.2.0 以降への参照を追加します。
dotnet add package Microsoft.FeatureManagement.AspNetCoreprogram.csを開き、
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 // ... ...ファイルが存在しない場合は、ファイルの先頭に
using Microsoft.FeatureManagement;を追加します。Pages ディレクトリの下に Beta という名前の新しい空の Razor ページを追加します。 これには、 Beta.cshtml と Beta.cshtml.cs の 2 つのファイルが含 まれています。
Beta.cshtml を開き、次のマークアップで更新します。
@page @model MyWebApp.Pages.BetaModel @{ ViewData["Title"] = "Beta Page"; } <h1>This is the beta website.</h1>Beta.cshtml.csを開き、
FeatureGate属性をBetaModelクラスに追加します。FeatureGate属性を使用すると、ベータ機能フラグが有効になっている場合にのみベータ ページにアクセスできるようになります。 ベータ機能フラグが有効になっていない場合、ページは 404 Not Found を返します。using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace MyWebApp.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }Pages/_ViewImports.cshtml を開き、
@addTagHelperディレクティブを使用して機能マネージャー タグ ヘルパーを登録します。@addTagHelper *, Microsoft.FeatureManagement.AspNetCore上記のコードを使用すると、
<feature>タグ ヘルパーをプロジェクトの .cshtml ファイルで使用できます。Pages\Shared ディレクトリで _Layout.cshtml を開きます。 下の強調表示された行に示すように、[ホーム] と [プライバシー] ナビゲーション バーの項目の間に新しい
<feature>タグを挿入します。<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><feature>タグを使用すると、ベータ機能フラグが有効になっている場合にのみベータメニュー項目が表示されます。アプリケーションをデプロイします。 ブラウザーを更新すると、Web ページは次のようになります。
Kubernetes プロバイダーを使用して機能フラグを読み込む
Deployment ディレクトリにある appConfigurationProvider.yaml ファイルを次の内容で更新します。
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ヒント
featureFlagセクションでselectorsが指定されていない場合、Kubernetes プロバイダーは App Configuration ストアから機能フラグを読み込みます。 機能フラグの既定の更新間隔は、featureFlag.refresh有効にすると 30 秒です。 この動作は、featureFlag.refresh.intervalパラメーターを使用してカスタマイズできます。次のコマンドを実行して変更を適用します。
kubectl apply -f ./Deployment -n appconfig-demoApp Configuration ストアで ベータ 機能フラグを更新します。 [有効] の下にあるチェック ボックスをオンにして、フラグを 有効にします。
ブラウザーを複数回更新すると、ConfigMap が 30 秒以内に更新されると、更新されたコンテンツが表示されるようになります。
[ベータ] メニューを選択します。 動的に有効にしたベータ版 Web サイトが表示されます。
リソースをクリーンアップする
AKS クラスターを保持する場合は、AKS クラスターから App Configuration Kubernetes プロバイダーをアンインストールします。
helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system
この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。
Important
リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。
- Azure portal にサインインし、 [リソース グループ] を選択します。
- [名前でフィルター] ボックスにリソース グループの名前を入力します。
- 結果一覧でリソース グループ名を選択し、概要を表示します。
- [リソース グループの削除] を選択します。
- リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。
しばらくすると、リソース グループとそのすべてのリソースが削除されます。
次のステップ
このクイック スタートでは次の作業を行います。
- Azure Kubernetes Service (AKS) で実行されている ASP.NET Core アプリに機能管理機能を追加しました。
- App Configuration Kubernetes プロバイダーを使用して、AKS クラスターを App Configuration ストアに接続しました。
- App Configuration ストアからキー値と機能フラグを含む ConfigMap を作成しました。
- アプリケーション コードを変更せずに、App Configuration ストアから動的構成でアプリケーションを実行しました。
Azure App Configuration Kubernetes プロバイダーの詳細については、 Azure App Configuration Kubernetes プロバイダーリファレンスを参照してください。
機能管理機能の詳細については、次のチュートリアルに進んでください。