Aracılığıyla paylaş


Hızlı Başlangıç: Azure Kubernetes Service'te iş yüklerine özellik bayrakları ekleme

Bu hızlı başlangıçta Azure Uygulama Yapılandırması'nda bir özellik bayrağı oluşturacak ve yeniden başlatmadan veya yeniden dağıtmadan AKS'de çalışan ASP.NET Core uygulamasındaki yeni bir web sayfasının görünürlüğünü dinamik olarak denetlemek için kullanacaksınız.

Önkoşullar

Azure Kubernetes Service'te dinamik yapılandırmayı kullanmak için belgeleri izleyin.

Özellik bayrağı oluşturma

Uygulama Yapılandırma deposuna Beta adlı bir özellik bayrağı ekleyin ve Etiket ve Açıklama değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya özellik bayrakları ekleme hakkında daha fazla bilgi için Özellik bayrağı oluşturma bölümüne gidin.

Beta adlı özellik bayrağı oluşturmayı gösteren ekran görüntüsü.

Özellik bayrağı kullanma

Bu bölümde, basit bir ASP.NET web uygulamasında özellik bayraklarını kullanacak ve Azure Kubernetes Service'te (AKS) çalıştıracaksınız.

  1. Hızlı Başlangıçta oluşturduğunuz projenin dizinine gidin ve Microsoft.FeatureManagement.AspNetCore NuGet paketi sürüm 3.2.0 veya sonraki bir sürüme başvuru eklemek için aşağıdaki komutu çalıştırın.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. program.cs açın ve çağrısı AddFeatureManagementyaparak uygulamanızın hizmet koleksiyonuna özellik yönetimi ekleyin.

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

    Dosya yoksa en üstüne ekleyin using Microsoft.FeatureManagement; .

  3. Sayfalar dizininin altına Beta adlı yeni boş bir Razor sayfası ekleyin. Beta.cshtml ve Beta.cshtml.cs dosyaları içerir.

    Beta.cshtml dosyasını açın ve aşağıdaki işaretlemeyle güncelleştirin:

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

    Beta.cshtml.cs açın ve sınıfına BetaModel öznitelik ekleyinFeatureGate. FeatureGate özniteliği, Beta sayfasının yalnızca Beta özellik bayrağı etkinleştirildiğinde erişilebilir olmasını sağlar. Beta özellik bayrağı etkin değilse, sayfa 404 Bulunamadı değerini döndürür.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace MyWebApp.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  4. Pages/_ViewImports.cshtml dosyasını açın ve bir @addTagHelper yönerge kullanarak özellik yöneticisi Etiket Yardımcısı'nı kaydedin:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Yukarıdaki kod, Etiket Yardımcısı'nın projenin .cshtml dosyalarında kullanılmasını sağlar<feature>.

  5. Sayfalar\Paylaşılan dizininde _Layout.cshtml dosyasını açın. Aşağıdaki vurgulanan satırlarda gösterildiği gibi Giriş ve Gizlilik gezinti çubuğu öğelerinin arasına yeni <feature> bir etiket ekleyin.

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

    Etiketi, <feature>Beta menü öğesinin yalnızca Beta özellik bayrağı etkinleştirildiğinde gösterilmesini sağlar.

  6. Uygulamayı kapsayıcıya alma ve Görüntüyü Azure Container Registry'ye gönderme.

  7. Uygulamayı dağıtın. Tarayıcıyı yenilediğinizde web sayfası şöyle görünür:

    Özellik bayrağı olmadan configMap kullandıktan sonra Kubernetes Sağlayıcısını gösteren ekran görüntüsü.

Özellik bayraklarını yüklemek için Kubernetes Sağlayıcısını kullanma

  1. Dağıtım dizininde bulunan appConfigurationProvider.yaml dosyasını aşağıdaki içerikle güncelleştirin.

    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
    

    Tavsiye

    Bölümünde hayır selectors belirtilmediğinde featureFlag , Kubernetes Sağlayıcısı Uygulama Yapılandırma deponuzdan özellik bayraklarını yüklemez. Özellik bayraklarının varsayılan yenileme aralığı etkinleştirildiğinde featureFlag.refresh 30 saniyedir. Bu davranışı parametresi aracılığıyla featureFlag.refresh.interval özelleştirebilirsiniz.

  2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. Uygulama Yapılandırma deponuzda Beta özellik bayrağını güncelleştirin. Etkin altındaki onay kutusunu seçerek bayrağı etkinleştirin.

  4. Tarayıcıyı birden çok kez yeniledikten sonra, ConfigMap 30 saniye içinde güncelleştirildikten sonra güncelleştirilmiş içerik görünür hale gelir.

    Özellik bayrağı etkinleştirilmiş configMap'i kullandıktan sonra Kubernetes Sağlayıcısını gösteren ekran görüntüsü.

  5. Beta menüsünü seçin. Sizi dinamik olarak etkinleştirdiğiniz beta web sitesine getirir.

    configMap'i kullandıktan sonra Kubernetes Sağlayıcısı beta sayfasını gösteren ekran görüntüsü.

Kaynakları temizle

AKS kümesini korumak istiyorsanız AKS kümenizden Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kaldırın.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Bir kaynak grubunu silmek geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil seçeneğini seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki Adımlar

Bu hızlı başlangıç rehberinde şunları yapacaksınız:

  • Azure Kubernetes Service'te (AKS) çalışan bir ASP.NET Core uygulamasına özellik yönetimi özelliği eklendi.
  • AKS kümenizi Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kullanarak Uygulama Yapılandırma deponuza bağladınız.
  • Uygulama Yapılandırma deponuzdan anahtar değerleri ve özellik bayraklarıyla bir ConfigMap oluşturdunuz.
  • Uygulama kodunuzu değiştirmeden uygulamayı Uygulama Yapılandırma deponuzdan dinamik yapılandırmayla çalıştırarak.

Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı hakkında daha fazla bilgi edinmek için bkz. Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı başvurusu.

Özellik yönetimi özelliği hakkında daha fazla bilgi edinmek için aşağıdaki öğreticiye geçin.