التحقق من صحة وحدات التحكم في القبول

هذا المقال جزء من سلسلة. ابدأ بنظرة عامة.

نادرا ما تسبب وحدات التحكم في القبول مشاكل، ولكن من الضروري ضمان وظائفها المناسبة. تتناول هذه المقالة كيف يمكن أن تؤثر وحدات التحكم في القبول على المكونات الأخرى عندما لا تعمل بشكل صحيح. كما يصف الأوامر التي يمكنك استخدامها للتحقق من صحة أداء وحدة تحكم القبول.

وحدة تحكم القبول

وحدة التحكم في القبول هي جزء من التعليمات البرمجية التي تعترض الطلبات إلى خادم Kubernetes API قبل استمرار كائن ولكن بعد مصادقة الطلب وتفويضه.

يمكن أن تتحقق وحدات التحكم في القبول من صحة كليهما أو تحولهما أو مزيجا منهما. يمكن لوحدات التحكم المتغيرة تعديل الكائنات ذات الصلة قبل قبول الطلب. يضمن التحقق من صحة وحدات التحكم فقط أن الطلبات تفي بمعايير محددة محددة مسبقا.

تتمثل إحدى الوظائف الأساسية لوحدات التحكم في القبول في تنظيم طلبات إنشاء الكائنات وحذفها وتعديلها. بالإضافة إلى ذلك، يمكن لوحدات تحكم القبول تقييد الأفعال المخصصة، مثل طلب اتصال ب pod عبر وكيل خادم API. ومع ذلك، لا يمكن لوحدات تحكم القبول حظر طلبات قراءة الكائنات، بما في ذلك عمليات مثل getأو watchأو list.

يمكن أن تؤثر بعض المكونات على وحدات التحكم في القبول، مثل تغيير خطافات الويب والتحقق من صحتها. عند دمج تحويل خطافات الويب والتحقق من صحتها في مجموعة Kubernetes الخاصة بك، من الضروري ضمان قابلية وصول عالية. يجب ألا تمنع العقد غير السليمة طلبات خادم واجهة برمجة التطبيقات. من الضروري مراقبة مسار التحكم في القبول حتى لا يتم حظر الطلبات إلى خادم API. يمكن أن تؤثر وحدات التحكم في القبول غير السليمة على تغيير خطافات الويب والتحقق من صحتها. تتضمن وحدات التحكم في الدخول المستندة إلى خطاف الويب التي يجب مراقبتها ما يلي:

  • الوظيفة الإضافية لنهج Azure لمجموعات Azure Kubernetes Service (AKS)، والتي توسع Gatekeeper. Gatekeeper هو إخطار على الويب لوحدة تحكم القبول ل Open Policy Agent.

  • Kyverno، الذي يعمل كوحدة تحكم قبول ديناميكية في مجموعة Kubernetes. يتلقى Kyverno التحقق من صحة وتحور عمليات رد اتصال HTTP لخطاف الويب للقبول من خادم Kubernetes API ويطبق نهج المطابقة لإرجاع النتائج التي تفرض نهج القبول أو ترفض الطلبات. للحصول على مرجع استكشاف الأخطاء وإصلاحها (مثل استدعاءات خطاف الويب الفاشلة ل APIServer)، راجع وثائق استكشاف أخطاء Kyverno وإصلاحها.

بدلا من ذلك، يمكن أن تؤثر وحدات التحكم في القبول التي لا تعمل بشكل صحيح على المكونات المختلفة، مثل شبكات الخدمة. تستخدم شبكات الخدمة، مثل Istio وLinkerd، وحدات تحكم القبول لأتمتة حقن حاويات sidecar داخل جراب، من بين وظائف أخرى. من المهم تقييم وحدات التحكم في القبول والتحقق منها بشكل صحيح لضمان التشغيل السلس الشبكات الخدمة.

تحقق من حالة الوظيفة الإضافية لنهج Azure لمجموعات AKS

إذا قمت بتثبيت الوظيفة الإضافية لنهج Azure ل AKS، يمكنك استخدام أوامر kubectl التالية للتحقق من صحة تثبيت ووظائف وحدات التحكم في قبول نهج Azure في مجموعتك:

# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system

# Sample output
...
NAME                                     READY   STATUS    RESTARTS   AGE
gatekeeper-audit-65844778cb-rkflg        1/1     Running   0          163m
gatekeeper-controller-78797d4687-4pf6w   1/1     Running   0          163m
gatekeeper-controller-78797d4687-splzh   1/1     Running   0          163m
...

قم بتشغيل الأمر السابق للتحقق من توفر جرابات عامل نهج Azure في مساحة اسم النظام gatekeeper. إذا لم يكن الإخراج كما تتوقع، فقد يشير إلى وجود مشكلة في وحدة تحكم القبول أو خدمة واجهة برمجة التطبيقات أو تعريف المورد المخصص (CRD).

# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources

# Sample output
...
NAME                                     SHORTNAMES    APIGROUP                       NAMESPACED   KIND
bindings                                                                              true         Binding
componentstatuses                        cs                                           false        ComponentStatus
configmaps                               cm                                           true         ConfigMap
...

يساعدك الأمر السابق على التحقق من أن جميع موارد واجهة برمجة التطبيقات تعمل بشكل صحيح. تأكد من أن الإخراج يتضمن الموارد المتوقعة دون أي أخطاء أو مكونات مفقودة. kubectl get pod استخدم الأمرين و kubectl api-resources للتحقق من حالة الوظيفة الإضافية لنهج Azure ل AKS، والتحقق من صحة وظائف وحدات تحكم القبول في مجموعة Kubernetes. مراقبة وحدات التحكم في القبول بانتظام للتأكد من أنها تعمل بشكل صحيح حتى تتمكن من الحفاظ على الصحة العامة والاستقرار للمجموعة الخاصة بك.

استخدم الأمر التالي kubectl get لتأكيد تطبيق تعيينات النهج على نظام المجموعة:

kubectl get constrainttemplates

إشعار

قد تستغرق تعيينات النهج ما يصل إلى 20 دقيقة للمزامنة مع كل مجموعة.

يجب أن يكون الإخراج مشابها للمثال التالي:

NAME                                     AGE
k8sazureallowedcapabilities              23m
k8sazureallowedusersgroups               23m
k8sazureblockhostnamespace               23m
k8sazurecontainerallowedimages           23m
k8sazurecontainerallowedports            23m
k8sazurecontainerlimits                  23m
k8sazurecontainernoprivilege             23m
k8sazurecontainernoprivilegeescalation   23m
k8sazureenforceapparmor                  23m
k8sazurehostfilesystem                   23m
k8sazurehostnetworkingports              23m
k8sazurereadonlyrootfilesystem           23m
k8sazureserviceallowedports              23m

لمزيد من المعلومات، راجع الموارد التالية:

التحقق من صحة خطافات الويب

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

  1. قم بتشغيل الأمر التالي لسرد خطافات الويب للتحقق من الصحة في نظام المجموعة:

    kubectl get ValidatingWebhookConfiguration -o wide
    

    يجب أن يكون الإخراج مشابها للمثال التالي:

    NAME                         WEBHOOKS   AGE
    aks-node-validating-webhook   1          249d
    azure-policy-validating-webhook-configuration   1          249d
    gatekeeper-validating-webhook-configuration     1          249d
    

    راجع الإخراج للتحقق من وجود إخطارات الويب التحقق وتكويناتها كما هو متوقع. يتضمن الإخراج اسم كل إخطار على الويب للتحقق من الصحة، وعدد الإخطارات على الويب، وعمر كل إخطار على الويب.

  2. قم بتشغيل الأمر التالي لسرد خطافات الويب المتغيرة في نظام المجموعة:

    kubectl get MutatingWebhookConfiguration -o wide
    

    يجب أن يكون الإخراج مشابها للمثال التالي:

    NAME                         WEBHOOKS   AGE
    aks-node-mutating-webhook    1          249d
    azure-policy-mutating-webhook-configuration    1          249d
    gatekeeper-mutating-webhook-configuration      1          249d
    

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

  3. قم بتشغيل الأمر التالي لاسترداد تفاصيل محددة لوحدة تحكم قبول معينة:

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    استبدل <mutating-webhook-name> باسم خطاف الويب المتغير الذي تريد استرداد تفاصيله. يعرض إخراج هذا الأمر تمثيل YAML لتكوين خطاف الويب المتغير المحدد.

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

المساهمون

تحتفظ Microsoft بهذه المقالة. وهي مكتوبة في الأصل من قبل المساهمين التاليين.

الكتاب الرئيسيون:

مساهمون آخرون:

لمشاهدة ملفات تعريف LinkedIn غير العامة، سجل الدخول إلى LinkedIn.