Перейти к содержанию

Тонкая настройка Вебмониторэкс Ingress Controller

Официальная документация NGINX Ingress Controller

Настройка Вебмониторэкс Ingress Controller незначительно отличается от настройки NGINX Ingress Controller, о которой рассказано в официальной документации. При работе с Вебмониторэкс доступны все возможности настройки оригинального NGINX Ingress Controller.

Дополнительные настройки Helm Chart

Настройки Helm‑чарта описаны в файле values.yaml. По умолчанию файл имеет следующий вид:

controller:
  wallarm:
    enabled: false
    apiHost: api.wallarm.ru
    apiPort: 443
    apiSSL: true
    token: ""
    tarantool:
      kind: Deployment
      service:
        annotations: {}
      replicaCount: 1
      arena: "0.2"
      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: 9913
        type: ClusterIP
    synccloud:
      resources: {}
    collectd:
      resources: {}

Установка Ingress‑контроллера

Подробнее читайте на странице установки Nginx Ingress Controller

Для изменения настроек рекомендуется использовать опцию --set команды helm install (при установке Ingress‑контроллера) или helm upgrade (при изменении параметров установленного Ingress‑контроллера). Например:

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

Ниже приведено описание основных параметров, которые вы можете настроить. Остальные параметры используют значение по умолчанию или редко изменяются, их описание доступно по ссылке.

controller.wallarm.enabled

Позволяет включать и выключать функциональность Вебмониторэкс.

Значение по умолчанию: false

controller.wallarm.apiHost

Конечная точка API. Параметр должен иметь значение api.wallarm.ru.

Значение по умолчанию: api.wallarm.ru

controller.wallarm.token

Токен Cloud Node, созданной в Личном кабинете. Необходим для доступа ноды к Вебмониторэкс API.

Значение по умолчанию: нет

controller.wallarm.tarantool.replicaCount

Количество запускаемых pod'ов постаналитики. Постаналитика отвечает за определение поведенческих атак.

Значение по умолчанию: 1

controller.wallarm.tarantool.arena

Объем памяти, выделенной для постаналитики. Рекомендуется выставлять значение, достаточное для хранения запросов за последние 5-15 минут.

Значение по умолчанию: 0.2

controller.wallarm.metrics.enabled

Позволяет включать и выключать сбор метрик о работе Вебмониторэкс. Если в Kubernetes кластере установлен Prometheus helm chart, то дополнительных настроек не требуется, необходимо только включить сбор метрик.

Значение по умолчанию: false

Глобальные настройки контроллера

Применяются при помощи ConfigMap.

Поддерживаются следующие дополнительные параметры кроме стандартных:

Аннотации Ingress

Используются для настройки параметров обработки отдельных Ingress'ов.

Кроме стандартных аннотаций поддерживаются следующие дополнительные:

Применение аннотаций к Ingress

Чтобы применить настройки к вашему Ingress, используйте следующую команду:

kubectl annotate --overwrite ingress YOUR_INGRESS_NAME ANNOTATION_NAME=VALUE
  • YOUR_INGRESS_NAME — название вашего Ingress,

  • ANNOTATION_NAME — название аннотации из списка выше,

  • VALUE — значение для аннотации из списка выше.

Примеры аннотаций

Настройка страницы блокировки и кода ошибки

Аннотация nginx.ingress.kubernetes.io/wallarm-block-page используется, чтобы настроить страницу и код ошибки, которые возвращаются клиенту в ответ на запрос, заблокированный по следующим причинам:

Например, чтобы в ответ на любой заблокированный запрос вернуть стандартную страницу блокировки Вебмониторэкс и код ошибки 445:

kubectl annotate ingress <YOUR_INGRESS_NAME> 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> nginx.ingress.kubernetes.io/server-snippet="wallarm_enable_libdetection on/off"
    
  • Передать параметр controller.config.server-snippet в Helm‑чарт:

    helm install --set controller.config.server-snippet='wallarm_enable_libdetection on/off' <INGRESS_CONTROLLER_NAME> webmonitorx/webmonitorx-ingress -n <KUBERNETES_NAMESPACE>
    

    Для корректной установки Ingress‑контроллера, в опции --set также необходимо передать другие параметры Helm‑чарта

    helm upgrade --reuse-values --set controller.config.server-snippet='wallarm_enable_libdetection on/off' <INGRESS_CONTROLLER_NAME> webmonitorx/webmonitorx-ingress -n <KUBERNETES_NAMESPACE>