Skip to main content
يوفّر المشغّل موارد Kubernetes NetworkPolicy اختيارية تقيّد أنواع حركة المرور المسموح لها بالوصول إلى بود مدير وحدة التحكم — أي عملية المشغّل نفسها، وليس بودات ClickHouse server أو Keeper. وهي معطّلة افتراضيًا، لذا لن تفعّلها إلا عندما تريد عزل حركة المرور الواردة إلى المشغّل. تغطي السياسات المنفذين اللذين يعرّضهما المشغّل للعملاء الآخرين: نقطة نهاية المقاييس وadmission webhook.
لا يتم تطبيق NetworkPolicy إلا إذا كانت إضافة CNI في التجمّع تدعمها (مثل Calico أو Cilium). أمّا إذا كانت إضافة CNI لا تطبّق NetworkPolicy، فسيتم إنشاء الموارد لكنها لن يكون لها أي تأثير بصمت — ولن يعيد Kubernetes أي error. تأكّد من أن إضافة CNI لديك تطبّق السياسات قبل الاعتماد عليها.

ما الذي ينشئه مخطط Helm

عند تفعيله، ينشئ المخطط ما يصل إلى سياستين للدخول فقط، وكلتاهما تستهدفان بود مدير وحدة التحكم: تُعرّف كلتا السياستين فقط policyTypes: [Ingress]. وهما لا تقيّدان حركة الخروج من المشغّل، ولا تمسّان بودات خادم ClickHouse أو Keeper.

سلوك الرفض الافتراضي

يؤدي تحديد بود باستخدام NetworkPolicy واردة إلى تحويل هذا البود إلى رفض افتراضي لحركة المرور الواردة: فبمجرد سريان أي من السياستين، تُسقَط أي حركة مرور واردة إلى بود مدير وحدة التحكم ما لم يُسمح بها صراحةً. بعد التمكين، تقتصر الاتصالات الواردة التي تصل إلى المشغّل على ما يلي:
  • كشط المقاييس من مساحة أسماء موسومة بـ metrics: enabled، و
  • استدعاء admission webhook من مساحة أسماء موسومة بـ webhook: enabled.
ويُرفض كل ما عدا ذلك من حركة المرور إلى البود. هذا هو التحصين المقصود، لكنه يعني أن أي scraper أو مستدعٍ لـ webhook غير موسوم سيتوقف عن العمل فور بدء سريان السياسات.

تمكين السياسات

باستخدام Helm، اضبط مفتاح التفعيل في values لديك:
يتطلب allow-webhook-traffic أيضًا تعيين webhook.enabled: true (وهو الإعداد الافتراضي)، لذا فإن تعطيل webhook يزيل سياسته أيضًا. عند استخدام ملفات manifest الخام الخاصة بـ kubectl، أزل التعليق عن قسم [NETWORK POLICY] كما هو موضح في دليل التثبيت الخاص بـ kubectl. تتضمن ملفات manifest الخام السياستين نفسهما.

وضع تسميات على مساحات أسماء العميل

نظرًا لأن كلتا السياستين تطابقان المصدر باستخدام namespaceSelector، يجب أن تحمل كل مساحة اسم تحتاج إلى الوصول إلى المشغِّل التسمية المطابقة. وأي عملية كشط أو استدعاء webhook من مساحة اسم غير موسومة يتم إسقاطه.
اقرن هذا مع RBAC الخاص بالمقاييس الموضَّح في المراقبة → تأمين نقطة نهاية المقاييس: تتحكم NetworkPolicy في قابلية الوصول، بينما يتحكم ربط ClusterRole في التفويض. ويجب توفّر كلاهما لكي ينجح scrape المؤمَّن.
تصدر طلبات admission webhook من خادم API لـ Kubernetes، وليس من pod عادي. وما إذا كانت هذه الحركة المرورية تخضع لـ NetworkPolicy، ومن أي مصدر تبدو آتية، يعتمد على بنية control plane وCNI لديك — وقد تصل control plane المُدارة، على وجه الخصوص، إلى webhook من عنوان لا يمكن لأي namespaceSelector مطابقته. وإذا لم تكن حركة مرور خادم API لـ Kubernetes مشمولة ضمن مساحة أسماء webhook: enabled، فقد يؤدي تفعيل allow-webhook-traffic إلى حظر admission والتسبب في انتهاء مهلة طلبات إنشاء وتحديث ClickHouseCluster/KeeperCluster. اختبر admission على cluster غير production بعد التفعيل، وأضف قاعدة سماح صريحة لخادم API لـ Kubernetes إذا لزم الأمر.

التحقّق

بعد التمكين، أكِّد ما يلي:
  • أن Prometheus لا يزال يكشط نقطة نهاية المقاييس (مساحة الاسم الخاصة به موسومة بـ metrics: enabled ومرتبطة بـ ClusterRole ‏metrics-reader).
  • أن إنشاء ClickHouseCluster أو تحديثه لا يزال يجتاز مرحلة القبول (يمكن الوصول إلى webhook).
إذا لم تُرجِع عملية الكشط أي بيانات أو علِقت عملية تطبيق CR، فالسبب الأكثر احتمالًا هو وجود مساحة اسم مصدر غير موسومة أو التحذير الوارد أعلاه بشأن إمكانية وصول خادم API.
آخر تعديل في ٣ يوليو ٢٠٢٦