انتقل إلى المحتوى

التكوين الدقيق لـ Wallarm Ingress Controller المستند إلى NGINX

تعرف على خيارات التكوين الدقيق المتاحة لوحدة التحكم Wallarm Ingress للحصول على الحد الأقصى من حل Wallarm.

التوثيق الرسمي لـ NGINX Ingress Controller

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

إعدادات إضافية لـ Helm Chart

يتم تعريف الإعدادات في ملف values.yaml. بشكل افتراضي، يظهر الملف على النحو التالي:

controller:
  wallarm:
    enabled: false
    apiHost: api.wallarm.com
    apiPort: 443
    apiSSL: true
    token: ""
    nodeGroup: defaultIngressGroup
    existingSecret:
      enabled: false
      secretKey: token
      secretName: wallarm-api-token
    tarantool:
      kind: Deployment
      service:
        annotations: {}
      replicaCount: 1
      arena: "1.0"
      livenessProbe:
        failureThreshold: 3
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      resources: {}
    metrics:
      enabled: false

      service:
        annotations:
          prometheus.io/scrape: "true"
          prometheus.io/path: /wallarm-metrics
          prometheus.io/port: "18080"

        ## List of IP addresses at which the stats-exporter service is available
        ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
        ##
        externalIPs: []

        loadBalancerIP: ""
        loadBalancerSourceRanges: []
        servicePort: 18080
        type: ClusterIP
    synccloud:
      resources: {}
    collectd:
      resources: {}

لتغيير هذا الإعداد، نوصي باستخدام الخيار --set من helm install (إذا كان يتم تثبيت وحدة التحكم Ingress) أو helm upgrade (إذا كان يتم تحديث معلمات وحدة التحكم Ingress المثبتة). على سبيل المثال:

helm install --set controller.wallarm.enabled=true <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
helm upgrade --reuse-values --set controller.wallarm.enabled=true <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>

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

controller.wallarm.enabled

يتيح لك تمكين أو تعطيل وظائف Wallarm.

القيمة الافتراضية: false

controller.wallarm.apiHost

نقطة النهاية لواجهة Wallarm API. يمكن أن يكون:

القيمة الافتراضية: api.wallarm.com

controller.wallarm.token

قيمة رمز العقدة التصفية. هو مطلوب للوصول إلى واجهة Wallarm API.

يمكن أن يكون الرمز أحد هذه الأنواع:

  • رمز API (موصى به) - مثالي إذا كنت بحاجة إلى إضافة / إزالة مجموعات العقدة بشكل ديناميكي لتنظيم واجهة المستخدم أو إذا كنت ترغب في التحكم في دورة حياة الرمز لزيادة الأمان. لتوليد رمز API:

    لتوليد رمز API:

    1. اذهب إلى وحدة تحكم Wallarm → SettingsAPI tokens في إما US Cloud أو EU Cloud.
    2. أنشئ رمز API بدور Deploy.
    3. أثناء نشر العقدة، استخدم الرمز المولد وحدد اسم المجموعة باستخدام المعلمة controller.wallarm.nodeGroup. يمكنك إضافة العديد من العقد إلى مجموعة واحدة باستخدام رموز API مختلفة.
  • رمز العقدة - مناسب عندما تعرف بالفعل المجموعات العقدة التي ستُستخدم.

    لتوليد رمز العقدة:

    1. اذهب إلى وحدة تحكم Wallarm → Nodes في إما US Cloud أو EU Cloud.
    2. أنشئ عقدة وسمِ مجموعة العقدة.
    3. أثناء نشر العقدة، استخدم رمز المجموعة عند كل عقدة تريد تضمينها في تلك المجموعة.

يتم تجاهل المعلمة إذا كانت controller.wallarm.existingSecret.enabled: true.

القيمة الافتراضية: لم يُحدد

controller.wallarm.nodeGroup

بدءًا من إصدار Helm chart 4.6.8، يُحدد هذا اسم مجموعة العقد التصفية التي تريد إضافة العقد المنشورة حديثًا إليها. إن تجميع العقد بهذه الطريقة متاح فقط عندما تقوم بإنشاء وربط العقد بالسحابة باستخدام رمز API بدور Deploy (يتم تمرير قيمته في المعلمة controller.wallarm.token).

القيمة الافتراضية: defaultIngressGroup

controller.wallarm.existingSecret

بدءًا من إصدار Helm chart 4.4.1 ، يمكنك استخدام كتلة التكوين هذه لسحب قيمة رمز العقدة Wallarm من أسرار Kubernetes. من المفيد للبيئات ذات الإدارة المنفصلة للأسرار (مثل إذا كنت تستخدم عامل أسرار خارجي).

لتخزين رمز العقدة في أسرار K8s وسحبه إلى الرسم البياني لـ Helm:

  1. قم بإنشاء سر Kubernetes مع رمز العقدة Wallarm:

    kubectl -n <KUBERNETES_NAMESPACE> create secret generic wallarm-api-token --from-literal=token=<WALLARM_NODE_TOKEN>
    
    • <KUBERNETES_NAMESPACE> هو الفضاء الاسمي Kubernetes الذي قمت بإنشائه للإصدار Helm مع وحدة التحكم Wallarm Ingress
    • wallarm-api-token هو اسم سر Kubernetes
    • <WALLARM_NODE_TOKEN> هو قيمة رمز العقدة Wallarm المنسوخة من واجهة المستخدم Wallarm Console

    إذا كنت تستخدم بعض عامل الأسرار الخارجي، اتبع الوثائق المناسبة لإنشاء سر.

  2. ضع التكوين التالي في values.yaml:

    controller:
      wallarm:
        token: ""
        existingSecret:
          enabled: true
          secretKey: token
          secretName: wallarm-api-token
    

القيمة الافتراضية: existingSecret.enabled: false التي تنطلق إلى الرسم البياني البياني للحصول على رمز العقدة Wallarm من controller.wallarm.token.

controller.wallarm.tarantool.replicaCount

عدد الأحداث المتداولة لـ postanalytics. يتم استخدام postanalytics للكشف عن الهجمات المستندة إلى السلوك.

القيمة الافتراضية: 1

controller.wallarm.tarantool.arena

تحدد كمية الذاكرة المخصصة لخدمة postanalytics. يوصى بتحديد قيمة كافية لتخزين بيانات الطلب للـ 5-15 دقيقة الأخيرة.

القيمة الافتراضية: 0.2

controller.wallarm.metrics.enabled

هذا التبديل يتحول بين جمع المعلومات والمقاييس. إذا تم تثبيت Prometheus في مجموعة Kubernetes، لا يتطلب التكوين الإضافي.

القيمة الافتراضية: false

إعدادات الوحدة التحكم العالمية

مستندًا عبر ConfigMap.

بجانب المعياريات ، يتم دعم المعلمات الإضافية التالية:

التعليقات المنسوبة لـ Ingress

تُستخدم هذه التعليقات لضبط معلمات لمعالجة مثيلات فردية لـ Ingress.

Besides the standard ones, الإعدادات الإضافية المدعومة هي:

تطبيق التعليق المنسوب على مورد Ingress

لتطبيق الإعدادات على Ingress الخاص بك، يرجى استخدام الأمر التالي:

kubectl annotate --overwrite ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> <ANNOTATION_NAME>=<VALUE>
  • <YOUR_INGRESS_NAME> هو اسم Ingress الخاص بك

  • <YOUR_INGRESS_NAMESPACE> هو مجال اسم Ingress الخاص بك

  • <ANNOTATION_NAME> هو اسم التعليق المنسوب من القائمة أعلاه

  • <VALUE> هو قيمة التعليق المنسوب من القائمة أعلاه

أمثلة على التعليقات المنسوبة

تكوين الصفحة القابلة للحظر ورمز الخطأ

يُستخدم التعليق المنسوب nginx.ingress.kubernetes.io/wallarm-block-page لتكوين الصفحة القابلة للحظر ورمز الخطأ المرتجع في الرد على الطلب المحظور للأسباب التالية:

على سبيل المثال، لإرجاع صفحة الحظر الافتراضية لـ Wallarm ورمز الخطأ 445 في الرد على أي طلب تم حظره:

kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-block-page="&/usr/share/nginx/html/wallarm_blocked.html response_code=445 type=attack,acl_ip,acl_source"

المزيد من التفاصيل حول أساليب تكوين الصفحة المحظورة ورمز الخطأ →

إدارة وضع libdetection

وضع libdetection الافتراضي

الوضع الافتراضي لمكتبة libdetection هو on (مكَّن).

يمكنك التحكم في وضع libdetection باستخدام أحد الخيارات:

  • تطبيق التعليق المنسوب nginx.ingress.kubernetes.io/server-snippet التالي على مورد Ingress:

    kubectl annotate --overwrite ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/server-snippet="wallarm_enable_libdetection off;"
    
  • أضف المعلمة controller.config.server-snippet إلى الرسم البياني لـ Helm:

    helm install --set controller.config.server-snippet='wallarm_enable_libdetection off;' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
    

    هناك أيضًا معلمات أخرى مطلوبة لتثبيت وحدة التحكم Ingress بشكل صحيح. يرجى تمريرها في الخيار --set أيضًا.

    helm upgrade --reuse-values --set controller.config.server-snippet='wallarm_enable_libdetection off;' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>