مشاركة عبر


التشغيل السريع: إضافة علامات الميزات إلى أحمال العمل في خدمة Azure Kubernetes

في هذا التشغيل السريع، ستقوم بإنشاء علامة ميزة في تكوين تطبيق Azure واستخدامها للتحكم ديناميكيا في رؤية صفحة ويب جديدة في تطبيق ASP.NET Core يعمل في AKS دون إعادة تشغيله أو إعادة نشره.

المتطلبات الأساسية

اتبع المستندات لاستخدام التكوين الديناميكي في خدمة Azure Kubernetes.

إنشاء علامة ميزة

أضف علامة ميزة تسمى Beta إلى متجر App Configuration واترك التسميةوالوصف بقيمهما الافتراضية. لمزيد من المعلومات حول كيفية إضافة علامات الميزات إلى متجر باستخدام مدخل Microsoft Azure أو CLI، انتقل إلى إنشاء علامة ميزة.

لقطة شاشة توضح إنشاء علامة ميزة باسم Beta.

استخدام علامة ميزة

في هذا القسم، ستستخدم علامات الميزات في تطبيق ويب بسيط ASP.NET وتشغيله في Azure Kubernetes Service (AKS).

  1. انتقل إلى دليل المشروع الذي قمت بإنشائه في التشغيل السريع، وقم بتشغيل الأمر التالي لإضافة مرجع إلى حزمة Microsoft.FeatureManagement.AspNetCore NuGet الإصدار 3.2.0 أو إصدار أحدث.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. افتح program.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; في الجزء العلوي من الملف إذا لم يكن موجودا.

  3. أضف صفحة Razor فارغة جديدة باسم Beta ضمن دليل Pages . يتضمن ملفين Beta.cshtml و Beta.cshtml.cs.

    افتح 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 لم يتم العثور عليها.

    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، وسجل مساعد العلامات لمدير الميزات باستخدام توجيه:@addTagHelper

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    تسمح <feature> التعليمات البرمجية السابقة باستخدام Tag Helper في ملفات .cshtml الخاصة بالمشروع.

  5. افتح _Layout.cshtml في دليل Pages\Share . قم بإدراج علامة جديدة <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> عرض عنصر القائمة التجريبية فقط عند تمكين علامة الميزة التجريبية .

  6. ضع التطبيق في حاوياتوادفع الصورة إلى Azure Container Registry.

  7. نشر التطبيق. قم بتحديث المتصفح وستبدو صفحة الويب كما يلي:

    لقطة شاشة توضح موفر Kubernetes بعد استخدام configMap بدون علامة الميزة.

استخدام موفر Kubernetes لتحميل علامات الميزات

  1. قم بتحديث ملف 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
    

    Tip

    عند تحديد لا selectors في featureFlag القسم، لن يقوم موفر Kubernetes بتحميل علامات الميزات من متجر تكوين التطبيق. الفاصل الزمني الافتراضي للتحديث لعلامات الميزات هو 30 ثانية عند featureFlag.refresh التمكين. يمكنك تخصيص هذا السلوك عبر المعلمة featureFlag.refresh.interval .

  2. قم بتشغيل الأمر التالي لتطبيق التغييرات.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  3. قم بتحديث علامة الميزة التجريبية في متجر إعدادات التطبيق. قم بتمكين العلامة عن طريق تحديد خانة الاختيار ضمن ممكن.

  4. بعد تحديث المتصفح عدة مرات ، سيصبح المحتوى المحدث مرئيا بمجرد تحديث ConfigMap في غضون 30 ثانية.

    لقطة شاشة توضح موفر Kubernetes بعد استخدام configMap مع تمكين علامة الميزة.

  5. حدد القائمة التجريبية . سينقلك إلى موقع الويب التجريبي الذي قمت بتمكينه ديناميكيا.

    لقطة شاشة توضح الصفحة التجريبية Kubernetes Provider بعد استخدام configMap.

تنظيف الموارد

قم بإلغاء تثبيت موفر Kubernetes لتكوين التطبيق من نظام مجموعة AKS إذا كنت تريد الاحتفاظ بنظام مجموعة AKS.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.

Important

حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وجميع الموارد المضمنة فيها نهائيًا. تأكد من عدم حذفك للموارد أو مجموعة المورد الخاطئة عن غير قصد. في حالة إنشاء الموارد لهذه المقالة داخل مجموعة موارد تشتمل على موارد أخرى تريد الاحتفاظ بها، احذف كل مورد على حدة من الجزء الخاص به بدلًا من حذف مجموعة الموارد.

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

الخطوات التالية

في هذه البداية السريعة، قمت بـ:

  • تمت إضافة إمكانية إدارة الميزات إلى تطبيق ASP.NET Core الذي يعمل في Azure Kubernetes Service (AKS).
  • توصيل نظام مجموعة AKS بمخزن تكوين التطبيق باستخدام موفر Kubernetes لتكوين التطبيق.
  • تم إنشاء ConfigMap مع القيم الرئيسية وعلامات الميزات من متجر App Configuration الخاص بك.
  • قم بتشغيل التطبيق بالتكوين الديناميكي من متجر تكوين التطبيق الخاص بك دون تغيير التعليمات البرمجية للتطبيق الخاص بك.

لمعرفة المزيد حول موفر Kubernetes لتكوين تطبيق Azure، راجع مرجع موفر Kubernetes لتكوين تطبيق Azure.

لمعرفة المزيد حول إمكانية إدارة الميزات، تابع إلى البرنامج التعليمي التالي.