Bagikan melalui


Mulai cepat: Menambahkan bendera fitur ke beban kerja di Azure Kubernetes Service

Dalam mulai cepat ini, Anda akan membuat bendera fitur di Azure App Configuration dan menggunakannya untuk mengontrol visibilitas halaman web baru secara dinamis di aplikasi ASP.NET Core yang berjalan di AKS tanpa memulai ulang atau menyebarkannya kembali.

Prasyarat

Ikuti dokumen untuk menggunakan konfigurasi dinamis di Azure Kubernetes Service.

Membuat bendera fitur

Tambahkan bendera fitur yang disebut Beta ke penyimpanan App Configuration dan biarkan Label dan Deskripsi dengan nilai defaultnya. Untuk informasi selengkapnya tentang cara menambahkan bendera fitur ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat bendera fitur.

Cuplikan layar memperlihatkan pembuatan bendera fitur bernama Beta.

Menggunakan bendera fitur

Di bagian ini, Anda akan menggunakan bendera fitur dalam aplikasi web ASP.NET sederhana dan menjalankannya di Azure Kubernetes Service (AKS).

  1. Navigasikan ke direktori proyek yang Anda buat di Mulai Cepat, dan jalankan perintah berikut untuk menambahkan referensi ke paket NuGet Microsoft.FeatureManagement.AspNetCore versi 3.2.0 atau yang lebih baru.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Buka program.cs, dan tambahkan manajemen fitur ke kumpulan layanan aplikasi Anda dengan memanggil 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
    // ... ...
    

    Tambahkan using Microsoft.FeatureManagement; di bagian atas file jika tidak ada.

  3. Tambahkan halaman Razor kosong baru bernama Beta di bawah direktori Pages . Ini termasuk dua file Beta.cshtml dan Beta.cshtml.cs.

    Buka Beta.cshtml, dan perbarui dengan markup berikut:

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

    Buka Beta.cshtml.cs, dan tambahkan FeatureGate atribut ke BetaModel kelas . Atribut FeatureGate memastikan halaman Beta hanya dapat diakses saat bendera fitur Beta diaktifkan. Jika bendera fitur Beta tidak diaktifkan, halaman akan mengembalikan 404 Tidak Ditemukan.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Buka Pages/_ViewImports.cshtml, dan daftarkan Pengelola fitur Tag Helper menggunakan @addTagHelper direktif:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Kode sebelumnya memungkinkan Pembantu <feature> Tag digunakan dalam file .cshtml proyek.

  5. Buka _Layout.cshtml di direktoriBersamaHalaman\. Sisipkan tag baru <feature> di antara item bilah navigasi Beranda dan Privasi , seperti yang ditunjukkan pada baris yang disorot di bawah ini.

    <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> memastikan item menu Beta hanya ditampilkan saat bendera fitur Beta diaktifkan.

  6. Kontainerisasi aplikasi dan Dorong gambar ke Azure Container Registry.

  7. Sebarkan aplikasi. Refresh browser dan halaman web akan terlihat seperti ini:

    Cuplikan layar memperlihatkan Penyedia Kubernetes setelah menggunakan configMap tanpa bendera fitur.

Gunakan Penyedia Kubernetes untuk memuat bendera fitur

  1. Perbarui file appConfigurationProvider.yaml yang terletak di direktori Penyebaran dengan konten berikut.

    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
    

    Tip

    Ketika tidak selectors ada yang ditentukan di featureFlag bagian, Penyedia Kubernetes tidak akan memuat bendera fitur dari penyimpanan App Configuration Anda. Interval refresh default bendera fitur adalah 30 detik saat featureFlag.refresh diaktifkan. Anda dapat menyesuaikan perilaku ini melalui featureFlag.refresh.interval parameter .

  2. Jalankan perintah berikut untuk menerapkan perubahan.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Perbarui bendera fitur Beta di penyimpanan App Configuration Anda. Aktifkan bendera dengan memilih kotak centang di bawah Diaktifkan.

  4. Setelah me-refresh browser beberapa kali, konten yang diperbarui akan terlihat setelah ConfigMap diperbarui dalam waktu 30 detik.

    Cuplikan layar memperlihatkan Penyedia Kubernetes setelah menggunakan configMap dengan bendera fitur diaktifkan.

  5. Pilih menu Beta . Ini akan membawa Anda ke situs web beta yang Anda aktifkan secara dinamis.

    Cuplikan layar memperlihatkan halaman beta Penyedia Kubernetes setelah menggunakan configMap.

Membersihkan sumber daya

Hapus instalan Penyedia Kubernetes App Configuration dari kluster AKS jika Anda ingin menyimpan kluster AKS.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya di dalamnya dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini di dalam grup sumber daya yang berisi sumber daya lain yang ingin Anda pertahankan, hapus setiap sumber daya satu per satu dari panel masing-masing, daripada menghapus grup sumber daya tersebut.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya dihapus.

Langkah selanjutnya

Dalam panduan singkat ini, Anda akan:

  • Menambahkan kemampuan manajemen fitur ke aplikasi ASP.NET Core yang berjalan di Azure Kubernetes Service (AKS).
  • Menghubungkan kluster AKS ke penyimpanan App Configuration menggunakan Penyedia Kubernetes App Configuration.
  • Membuat ConfigMap dengan kunci-nilai dan bendera fitur dari penyimpanan App Configuration Anda.
  • Jalankan aplikasi dengan konfigurasi dinamis dari penyimpanan App Configuration Anda tanpa mengubah kode aplikasi Anda.

Untuk mempelajari selengkapnya tentang Penyedia Kubernetes Azure App Configuration, lihat Referensi Penyedia Kubernetes Azure App Configuration.

Untuk mempelajari selengkapnya tentang kemampuan manajemen fitur, lanjutkan ke tutorial berikut.