Установка c использованием Docker (образ на основе Envoy)

Фильтрующий узел на основе Envoy (далее в этом документе — «фильтрующий узел») может быть развернут в виде Docker-контейнера. Контейнер является «толстым» и содержит все подсистемы фильтрующего узла.

Быстрое развертывание

Для быстрого развертывания фильтрующего узла выполните команду:

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -e WALLARM_API_HOST=api.wallarm.com -e ENVOY_BACKEND="example.com" -e TARANTOOL_MEMORY_GB=memvalue -p 80:80  wallarm/envoy

Где:

  • deploy@example.com — логин для вашего аккаунта Валарм.
  • very_secret — пароль для вашего аккаунта Валарм.
  • api.wallarm.com — имя API-сервера Валарм:
    • Если вы используете американское облако Валарм (https://us1.my.wallarm.com), задайте переменную среды окружения WALLARM_API_HOST=us1.api.wallarm.com.
    • Если вы используете европейское облако Валарм (https://my.wallarm.com), либо задайте переменную среды окружения WALLARM_API_HOST=api.wallarm.com, либо не передавайте эту переменную в контейнер (по умолчанию регистрация выполняется для европейского облака).
  • example.com — имя или IP-адрес защищаемого фильтрующим узлом веб-приложения.
  • memvalue — размер выделяемой для Tarantool оперативной памяти в гигабайтах.

В результате выполнения команды:

  • Фильтрующий узел будет автоматически зарегистрирован в облаке Валарм.
  • Защищаемое веб-приложение будет доступно по адресу: http://<имя хоста Docker>:80.

Общая процедура развертывания

Этот раздел описывает общую процедуру развертывания.

1. Выберите вариант подключения фильтрующего узла к облаку Валарм

Фильтрующий узел во время работы взаимодействует с облаком Валарм, к которому необходимо подключить узел. Облако находится на удаленном сервере.

Варианты подключения фильтрующего узла к облаку:

Регистрация нового узла

Развертывание нового фильтрующего узла всегда требует выполнения автоматической регистрации.

Автоматическая регистрация

Укажите ваш логин и пароль от аккаунта Валарм, чтобы фильтрующий узел автоматически зарегистрировался в облаке. Для этого передайте в контейнер значения логина и пароля через переменные среды окружения DEPLOY_USER и DEPLOY_PASSWORD соответственно (опция -e команды docker run).

При первом запуске фильтрующий узел попытается автоматически зарегистрироваться в облаке Валарм.

Если фильтрующий узел с таким именем (имя совпадает с идентификатором контейнера Docker для узла) уже будет зарегистрирован в облаке Валарм, процесс регистрации завершится с ошибкой. Чтобы избежать этого, передайте в контейнер переменную среды окружения DEPLOY_FORCE=true.

Пример:

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -e DEPLOY_FORCE=true -e WALLARM_API_HOST=api.wallarm.com -e ENVOY_BACKEND="example.com" -e TARANTOOL_MEMORY_GB=memvalue -p 80:80  wallarm/envoy

В случае успешной регистрации в директорию контейнера /etc/wallarm будут помещены файл лицензии license.key, файл с реквизитами доступа фильтрующего узла к облаку node.yaml и другие служебные файлы.

При последующих запусках одного и того же фильтрующего узла повторная регистрация не требуется. Для коммуникации с облаком фильтрующий узел использует следующие артефакты, полученные в ходе автоматической регистрации:

  • Значения uuid и secret (содержатся в файле /etc/wallarm/node.yaml).
  • Лицензионный ключ Валарм (содержится в файле /etc/wallarm/license.key).

Для подключения к облаку уже зарегистрированного фильтрующего узла, передайте в его контейнер:

  • либо значения uuid и secret через переменные среды окружения и файл лицензии license.key;
  • либо файлы node.yaml и license.key.

Использование заранее известных реквизитов

Передайте в контейнер с фильтрующим узлом:

  • значения uuid и secret через соответствующие переменные среды окружения NODE_UUID и NODE_SECRET;
  • файл лицензии license.key с помощью монтирования директорий.

Пример:

# docker run -d -e NODE_UUID="some_uuid" -e NODE_SECRET="some_secret" -v /configs/license.key:/etc/wallarm/license.key -e WALLARM_API_HOST=api.wallarm.com -e ENVOY_BACKEND="example.com" -e TARANTOOL_MEMORY_GB=memvalue -p 80:80  wallarm/envoy

Использование готового файла c реквизитами доступа

Передайте в контейнер с фильтрующим узлом с помощью монтирования директорий:

  • файл с реквизитами доступа фильтрующего узла к облаку node.yaml;
  • файл лицензии license.key.

Пример:

# docker run -d -v /configs/license.key:/etc/wallarm/license.key -v /configs/node.yaml:/etc/wallarm/node.yaml -e WALLARM_API_HOST=api.wallarm.com -e ENVOY_BACKEND="example.com" -e TARANTOOL_MEMORY_GB=memvalue -p 80:80  wallarm/envoy

2. Выберите вариант настройки фильтрующего узла

Настройка фильтрующего узла осуществляется с помощью конфигурационного YAML-файла Envoy /etc/envoy/envoy.yaml.

Для настройки фильтрующего узла вы можете:

  • Запустить контейнер с фильтрующим узлом в режиме упрощенной настройки.
  • Использовать заранее подготовленный файл конфигурации Envoy.

Режим упрощенной настройки

При использовании упрощенной настройки фильтрующий узел самостоятельно создаст минимальный конфигурационный файл Envoy для защиты веб-приложения.

Для запуска фильтрующего узла в режиме упрощенной настройки передайте в контейнер с фильтрующим узлом имя или IP-адрес веб-приложения через переменную среды окружения ENVOY_BACKEND.

В соответствии с автоматически созданным файлом конфигурации, такой фильтрующий узел будет находиться в режиме блокировки, что приведет к блокированию всех атак на приложение. Для запуска фильтрующего узла в других режимах работы, например, в режиме мониторинга, создайте требуемый конфигурационный файл Envoy и передайте его в контейнер с фильтрующим узлом (см. документ по тонкой настройке фильтрующего узла).

Использование заранее подготовленного файла конфигурации Envoy

Для использования готового файла конфигурации Envoy, примонтируйте его в контейнер фильтрующего узла как YAML-файл /etc/envoy/envoy.yaml.

Пример:

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -e WALLARM_API_HOST=api.wallarm.com -e TARANTOOL_MEMORY_GB=memvalue -p 80:80  wallarm/envoy

Обратите внимание

Большинство примеров команд, приведенных в этом документе, используют режим упрощенной настройки и переменную среды окружения ENVOY_BACKEND, однако, эти команды могут также использовать и заранее подготовленный файл конфигурации Envoy.

3. Определите количество оперативной памяти, выделяемое для Tarantool

Модуль постаналитики фильтрующего узла использует находящееся в памяти хранилище Tarantool. Количество выделенной для Tarantool оперативной памяти влияет на качество работы статистических алгоритмов. Рекомендуемое значение — 75% от общей памяти сервера. Например, если у сервера 32 ГБ памяти, оптимально выделить под хранилище 24 ГБ.

При развертывании контейнера с фильтрующим узлом вам необходимо указать объем оперативной памяти (в гигабайтах), который будет выделен для Tarantool, с помощью передачи в контейнер переменной среды окружения TARANTOOL_MEMORY_GB.

Пример:

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -e WALLARM_API_HOST=api.wallarm.com -e TARANTOOL_MEMORY_GB=16 -p 80:80  wallarm/envoy

В примере для Tarantool выделяется 16 ГБ оперативной памяти.

4. Настройте ротацию лог-файлов (при необходимости)

Ротация лог-файлов настроена и включена по умолчанию.

При необходимости вы можете изменить настройки ротации. Эти настройки находятся в директории /etc/logrotate.d контейнера с фильтрующим узлом.

Развертывание завершено

На этом развертывание завершено.

Проверьте, что фильтрующий узел работает и пропускает через себя трафик. Подробнее в Проверка работоспособности фильтрующего узла.

results matching ""

    No results matching ""