نشر NGINX Ingress Controller مع خدمات Wallarm المدمجة¶
توفر هذه التعليمات البرمجية الخطوات لنشر متحكم الوصول (ingress) NGINX-المستند إلى Wallarm في تجمع K8s. تشمل الحلول الوظيفة الافتراضية لـCommunity Ingress NGINX Controller مع خدمات Wallarm المدمجة.
هذه الحلول تتضمن الهندسة المعمارية التالية:
الحل مُنشر من خلال الرسم البياني لـHelm الخاص بـ Wallarm.
حالات الاستخدام¶
من بين جميع خيارات نشر Wallarm المدعومة، يُفضل هذا الحل للحالات التالية:
-
لا يوجد متحكم الوصول وطبقة الأمان التي توجه الحركة إلى موارد الوصول المتوافقة مع Community Ingress NGINX Controller.
-
أنت تستخدم حاليا Community Ingress NGINX Controller وتبحث عن حل أمان يقدم كل من وظائف المتحكم القياسية وميزات الأمان المحسنة. في هذه الحالة، يمكنك الانتقال بسهولة إلى متحكم الوصول Wallarm-NGINX المفصل في هذه التعليمات. ببساطة، قم بترحيل التكوين الحالي الخاص بك إلى نشر جديد لإكمال التبديل.
في حالة الاستخدام المتزامن لكل من متحكم الوصول الحالي والمتحكم Wallarm، راجع دليل سلسلة متحكم الوصول للحصول على تفاصيل التكوين.
المتطلبات¶
-
Kubernetes platform version 1.26-1.30
-
Helm package manager
-
Compatibility of your services with the Community Ingress NGINX Controller version 1.11.5
-
Access to the account with the Administrator role in Wallarm Console for the US Cloud or EU Cloud
-
Access to
https://us1.api.wallarm.com
for working with US Wallarm Cloud or tohttps://api.wallarm.com
for working with EU Wallarm Cloud -
Access to
https://charts.wallarm.com
to add the Wallarm Helm charts. Ensure the access is not blocked by a firewall -
Access to the Wallarm repositories on Docker Hub
https://hub.docker.com/r/wallarm
. Make sure the access is not blocked by a firewall -
Access to the IP addresses below for downloading updates to attack detection rules and [API specifications][api-spec-enforcement-docs], as well as retrieving precise IPs for your allowlisted, denylisted, or graylisted countries, regions, or data centers
انظر أيضا
القيود المعروفة¶
-
العمل بدون وحدة postanalytics غير مدعوم.
-
قد يؤدي التقليل من وحدة postanalytics إلى فقدان جزئي لبيانات الهجوم.
التثبيت¶
-
تثبيت المتحكم Wallarm Ingress.
-
تمكين تحليل الحركة لـ Ingress الخاصة بك.
-
التحقق من عملية المتحكم Wallarm Ingress.
الخطوة 1: تثبيت Wallarm Ingress Controller¶
لتثبيت Wallarm Ingress Controller:
-
أنشئ رمز عقدة تصفية من النوع المناسب:
- افتح Wallarm Console → الإعدادات → رموز API في السحابة الأمريكية أو السحابة الأوروبية.
- البحث أو الإنشاء رمز API بدور المصدر
Deploy
. - نسخ هذا الرمز.
- افتح Wallarm Console → العقد في إما السحابة الأمريكية أو السحابة الأوروبية.
-
إنشاء عقدة تصفية بنوع عقدة Wallarm ونسخ الرمز المُنتج.
-
قم بإنشاء مساحة الأسماء Kubernetes لنشر الرسم البياني Helm مع المتحكم Wallarm Ingress:
-
أنشاء الملف
values.yaml
مع تكوين Wallarm. مثال على الملف بالتكوين الأدنى أدناه.عند استخدام رمز API، حدد اسم مجموعة العقدة في المعلمة
nodeGroup
. سيتم تعيين عقدتك إلى هذه المجموعة، والتي تظهر في قسم العقد Nodes في Wallarm Console. اسم المجموعة الافتراضي هوdefaultIngressGroup
.يمكنك أيضا تخزين رمز العقدة Wallarm في أسرار Kubernetes وسحبها إلى الرسم البياني Helm. اقرأ المزيد
النشر من التسجيلات الخاصة بك
يمكنك الكتابة فوق عناصر ملف
values.yaml
لتثبيت المتحكم Wallarm Ingress من الصور المخزنة في تسجيلاتك الخاصة. -
تثبيت حزم Wallarm:
helm install --version 4.10.4 <RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE> -f <PATH_TO_VALUES>
<RELEASE_NAME>
هو اسم الإصدار Helm للمتحكم الرسم البياني لـ Ingress<KUBERNETES_NAMESPACE>
هو مساحة أسماء Kubernetes التي أنشأتها للمتحكم الرسم البياني لـ Wallarm Ingress<PATH_TO_VALUES>
هو المسار إلى الملفvalues.yaml
الخطوة 2: تمكين تحليل الحركة لـ Ingress الخاصة بك¶
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-mode=monitoring
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-application="<APPLICATION_ID>"
-
<YOUR_INGRESS_NAME>
هو اسم Ingress الخاص بك -
<YOUR_INGRESS_NAMESPACE>
هو مكان أسماء Ingress الخاص بك -
<APPLICATION_ID>
هو عدد موجب فريد لكل تطبيقاتك أو مجموعات التطبيقات. سيتيح لك هذا الحصول على إحصائيات منفصلة والتمييز بين الهجمات المستهدفة للتطبيقات المقابلة
الخطوة 3: التحقق من عملية Wallarm Ingress Controller¶
-
الحصول على قائمة الأقدام:
يجب على كل أقدام عرض الاتي: STATUS: Running و READY: N/N. على سبيل المثال:
-
ارسال الطلب مع الهجوم الاختباري Path Traversal إلى خدمة Ingress Controller:
إذا كانت العقدة التصفية تعمل في وضع
block
، سيتم إرجاع الرمز403 Forbidden
في الرد على الطلب وسيتم عرض الهجوم في Wallarm Console → الهجمات.
نشر ARM64¶
مع إصدار هيلم Helm لـ NGINX Ingress controller الإصدار 4.8.2، تم تقديم التوافق مع معالج ARM64. في البداية مجهزة لبنىة المعالجات x86، ينطوي النشر على عقد ARM64 على تعديل معلمات الرسم البياني Helm.
في إعدادات ARM64، غالبًا ما تحمل عقد Kubernetes تسمية arm64
. لمساعدة المجدول Kubernetes في تخصيص الحمل العملي لـ Wallarm لنوع العقدة المناسب، ارجع إلى هذه التسمية باستخدام nodeSelector
، أو tolerations
، أو قواعد التوافق في تكوين الرسم البياني Helm الخاص بـ Wallarm.
أدناه مثال على رسم هيلم Helm لـ Wallarm بالنسبة لـ Google Kubernetes Engine (GKE)، الذي يستخدم تسمية kubernetes.io/arch: arm64
للعقد الأصلح. هذا القالب قابل للتعديل للتوافق مع غيرها من الإعدادات السحابية، مع احترام اصناف ARM64 الخاصة بها.
controller:
nodeSelector:
kubernetes.io/arch: arm64
admissionWebhooks:
nodeSelector:
kubernetes.io/arch: arm64
patch:
nodeSelector:
kubernetes.io/arch: arm64
wallarm:
tarantool:
nodeSelector:
kubernetes.io/arch: arm64
enabled: true
token: "<NODE_TOKEN>"
apiHost: "us1.api.wallarm.com" # if using EU Cloud, comment out this line
# If using an API token, uncomment the following line and specify your node group name
# nodeGroup: defaultIngressGroup
controller:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
admissionWebhooks:
patch:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
wallarm:
tarantool:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
enabled: true
token: "<NODE_TOKEN>"
apiHost: "us1.api.wallarm.com" # if using EU Cloud, comment out this line
# If using an API token, uncomment the following line and specify your node group name
# nodeGroup: defaultIngressGroup
نشر من التسجيلات الخاصة بك¶
إذا لم تكن تستطيع سحب الصور Docker من المستودع العام Wallarm بسبب بعض الأسباب، على سبيل المثال بسبب سياسة الأمان الخاصة بشركتك تحد من استخدام أي موارد خارجية، بدلا من ذلك يمكنك:
-
نسخ هذه الصور إلى سجلك الخاص.
-
تثبيت Wallarm NGINX-based Ingress controller باستخدامها.
تستخدم الصور Docker التالية بواسطة الرسم البياني Helm لنشر Ingress Controller المبني على NGINX:
لتثبيت Wallarm NGINX-based Ingress controller باستخدام الصور المخزنة في سجلك، تجاوز ملف values.yaml
الخاص برسم Wallarm Ingress controller Helm chart:
controller:
image:
## The image and tag for wallarm nginx ingress controller
##
registry: <YOUR_REGISTRY>
image: wallarm/ingress-controller
tag: <IMAGE_TAG>
wallarm:
helpers:
## The image and tag for the helper image
##
image: <YOUR_REGISTRY>/wallarm/node-helpers
tag: <IMAGE_TAG>
ثم قم بالتثبيت باستخدام values.yaml
المعدل الخاص بك.
التعريف¶
بعد تثبيت والتحقق من Wallarm Ingress controller بنجاح، يمكنك إجراء تكوينات متقدمة للحل مثل:
للعثور على المعلمات المستخدمة للتكوين المتقدم والتعليمات المناسبة، يرجى اتباع الرابط.