NetworkPolicy على مستويين، وكلاهما
معطّل افتراضيًا:
- سياسات التجمّع — سياسات لكل تجمّع تغطي حركة المرور الداخلية لموارد
ClickHouseClusterوKeeperCluster، وتُفعَّل من خلالspec.networkPolicyفي كل مورد مخصص. - سياسات بود المشغّل — سياسات مضمّنة في chart تقيّد حركة المرور الواردة إلى بود مدير وحدة التحكم نفسه لنقطتَي نهاية المقاييس وwebhook.
لا يتم تطبيق
NetworkPolicy إلا إذا كانت إضافة CNI في التجمّع تدعمها
(مثل Calico أو Cilium). أمّا إذا كانت إضافة CNI لا تطبّق NetworkPolicy، فسيتم
إنشاء الموارد لكنها لن يكون لها أي تأثير بصمت — ولن يعيد Kubernetes أي
error. تأكّد من أن إضافة CNI لديك تطبّق السياسات قبل الاعتماد عليها.سياسات الشبكة للمجموعة
يقبل Keeper عناقيد ClickHouse استنادًا إلى
keeperClusterRef الخاص بها — وتؤدي إضافة
مرجع أو إزالته إلى تحديث سياسة Keeper تلقائيًا، بما في ذلك
المراجع من مساحات الأسماء الأخرى.
السماح بوصول العملاء والمراقبة
9000/8123 أو متغيرات TLS
الخاصة بها) أو منفذ المقاييس إلى أن تسمح بذلك. سياسات الشبكة (NetworkPolicy) تراكمية،
لذا امنح الوصول باستخدام سياستك الخاصة إلى جانب السياسة المُدارة:
9363 على ClickHouse،
و9090 على Keeper) — اسمح صراحةً بمساحة الأسماء المخصصة للمراقبة.
يؤدي ضبط networkPolicy.policy: Disabled (الإعداد الافتراضي) إلى إزالة
السياسة المُدارة؛ ولا يلمس المشغّل السياسات التي يعرّفها المستخدم ما لم
تحمل تسمية app الخاصة بالـ cluster.
إلغاء التفعيل على مستوى الـ cluster بالكامل
ENABLE_NETWORK_POLICY الخاص بـ المشغّل. عند ضبط ENABLE_NETWORK_POLICY=false،
يتجاوز المشغّل خطوة reconcile الخاصة بـ NetworkPolicy لجميع
ClickHouseCluster وKeeperCluster، بغض النظر عن قيمة spec.networkPolicy.policy،
ولا يراقب موارد NetworkPolicy إطلاقًا. لذلك، لا يحتاج
ServiceAccount الخاص بـ المشغّل إلى أذونات RBAC على
networkpolicies.networking.k8s.io، مما يفيد عند تشغيل المشغّل
باستخدام ServiceAccount مقيّد لا يتضمن تلك الأذونات عمدًا.
سياسات بود المشغّل
ما الذي ينشئه مخطط Helm
تُعرّف كلتا السياستين فقط
policyTypes: [Ingress]. وهما لا تقيّدان حركة الخروج
من المشغّل، ولا تمسّان بودات خادم ClickHouse أو Keeper.
سلوك الرفض الافتراضي
NetworkPolicy واردة إلى تحويل هذا البود إلى رفض
افتراضي لحركة المرور الواردة: فبمجرد سريان أي من السياستين، تُسقَط أي حركة مرور
واردة إلى بود مدير وحدة التحكم ما لم يُسمح بها صراحةً. بعد التمكين،
تقتصر الاتصالات الواردة التي تصل إلى المشغّل على ما يلي:
- كشط المقاييس من مساحة أسماء موسومة بـ
metrics: enabled، و - استدعاء admission webhook من مساحة أسماء موسومة بـ
webhook: enabled.
تمكين السياسات
allow-webhook-traffic أيضًا تعيين webhook.enabled: true (وهو
الإعداد الافتراضي)، لذا فإن تعطيل webhook يزيل سياسته أيضًا.
عند استخدام ملفات manifest الخام الخاصة بـ kubectl، أزل التعليق عن قسم [NETWORK POLICY] كما
هو موضح في دليل التثبيت الخاص بـ kubectl.
تتضمن ملفات manifest الخام السياستين نفسهما.
وضع تسميات على مساحات أسماء العميل
namespaceSelector، يجب أن تحمل كل مساحة اسم تحتاج إلى الوصول إلى المشغِّل التسمية المطابقة. وأي عملية كشط أو استدعاء webhook من مساحة اسم غير موسومة يتم إسقاطه.
NetworkPolicy في قابلية الوصول، بينما يتحكم ربط ClusterRole
في التفويض. ويجب توفّر كلاهما لكي ينجح scrape المؤمَّن.
التحقّق
- أن Prometheus لا يزال يكشط نقطة نهاية المقاييس (مساحة الاسم الخاصة به موسومة
بـ
metrics: enabledومرتبطة بـ ClusterRole metrics-reader). - أن إنشاء
ClickHouseClusterأو تحديثه لا يزال يجتاز مرحلة القبول (يمكن الوصول إلى webhook).
- مراقبة المشغّل — نقطة نهاية المقاييس، وإعدادات RBAC الخاصة بها، وتأمين عمليات الكشط.
- التثبيت باستخدام kubectl — موضع إزالة التعليق من قسم سياسة الشبكة.
- التثبيت باستخدام Helm — قيم Helm ذات الصلة بالمشغّل.