Запуск FAST-нод в параллельных рабочих процессах CI/CD

Необходимые сведения

В качестве демонстрационных будут использоваться следующие значения:

  • токен — qwe_12345;
  • идентификаторы наборов запросов: rec_1111 и rec_2222;

Несколько FAST-нод могут запускаться в параллельных (одновременных) рабочих процессах CI/CD и работать через одну и ту же FAST-ноду в облаке (используя одинаковый токен). Это доступно и для режима записи, и для режима тестирования FAST-нод.

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

  1. Служит дополнительным идентификатором набора запросов, который формируется в режиме записи FAST-ноды.
  2. Определяет на основе какого набора запросов FAST-ноде формировать тест безопасности в режиме тестирования (связывает тест безопасности и набор запросов).
  3. Идентифицирует конкретный рабочий процесс CI/CD.

Переменная BUILD_ID может принимать любые буквенно-числовые значения.

Далее будут рассмотрены примеры одновременного запуска двух FAST-нод сначала в режиме записи, а затем в режиме тестирования. Описанные ниже принципы вы сможете применить в рабочих процессах CI/CD и при необходимости масштабировать на большее количество нод.

Запуск FAST-нод в режиме записи в параллельных рабочих процессах CI/CD

Упрощение запуска

В приведенных ниже примерах будет использован минимально необходимый набор переменных окружения для успешного запуска контейнеров FAST-ноды.

Команда Docker для запуска одного из двух контейнеров FAST-ноды в режиме записи:

docker run --rm --name fast-node-1 \    # Запуск контейнера с именем fast-node-1
-e WALLARM_API_HOST=api.wallarm.com \   # Адрес API Валарм (в данном случае используется европейское облако)
-e WALLARM_API_TOKEN='qwe_12345' \      # Токен для соединения с FAST-нодой в облаке
-e CI_MODE=recording \                  # Запуск в режиме записи
-e BUILD_ID=1 \                         # Значение BUILD_ID (в параллельном рабочем процессе CI/CD должно отличаться)
-p 8080:8080 wallarm/fast               # Публикация порта контейнера и имя образа контейнера

Команда для запуска второго контейнера FAST-ноды в режиме записи в параллельном рабочем процессе CI/CD:

docker run --rm --name fast-node-2 \
-e WALLARM_API_HOST=api.wallarm.com \
-e WALLARM_API_TOKEN='qwe_12345' \      # Идентичное значение токена
-e CI_MODE=recording \
-e BUILD_ID=2 \                         # Значение BUILD_ID отличается от такового в параллельном рабочем процессе CI/CD
-p 8000:8080 wallarm/fast

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

Команды выше ориентированы на запуск в рамках одного хоста (сервера), поэтому помимо переменной окружения BUILD_ID в них также отличаются имена контейнеров (fast-node-1 и fast-node-2) и порты хоста для публикации (8080 и 8000). При запуске контейнеров FAST-ноды в параллельных рабочих процессах CI/CD на разных хостах команды могут отличаться лишь значением переменной BUILD_ID.

В результате запуска команд выше две FAST-ноды будут работать в режиме записи через одну и ту же FAST-ноду в облаке Валарм, но при этом будут созданы разные наборы запросов. Вывод в консоль инструмента CI/CD будет аналогичным тому, что был описан здесь.

После завершения работы FAST-нод в режиме записи и формировании наборов запросов ноды могут быть запущены в режиме тестирования.

Запуск FAST-нод в режиме тестирования в параллельных рабочих процессах CI/CD

Пусть в результате работы FAST-нод fast-node-1 и fast-node-2 в режиме записи были сформированы наборы запросов rec_1111 и rec_2222 соответственно. Тогда для того, чтобы FAST-нода в режиме тестирования использовала набор запросов rec_1111, ей необходимо передать переменную BUILD_ID=1, а для использования rec_2222BUILD_ID=2.

Команды на запуск FAST-нод в режиме тестирования приведены ниже.

Для первой FAST-ноды:

docker run --rm --name fast-node-1 \
-e WALLARM_API_HOST=api.wallarm.com \
-e WALLARM_API_TOKEN='qwe_12345' \
-e CI_MODE=testing \                    # Запуск в режиме тестирования
-e BUILD_ID=1 \                         # Значение `BUILD_ID=1` соответствует набору запросов `rec_1111`
wallarm/fast

Для второй (в параллельном рабочем процессе CI/CD):

docker run --rm --name fast-node-2 \
-e WALLARM_API_HOST=api.wallarm.com \
-e WALLARM_API_TOKEN='qwe_12345' \
-e CI_MODE=testing \                    # Запуск в режиме тестирования
-e BUILD_ID=2 \                         # Значение `BUILD_ID=2` соответствует набору запросов `rec_2222`
wallarm/fast

Вывод в консоль инструмента CI/CD будет аналогичным тому, что был описан здесь.

В результате передачи FAST-нодам соответствующих значений переменной BUILD_ID будут одновременно запущены два теста безопасности, работающих на основе двух разных наборов запросов. Таким образом, задавая параметр BUILD_ID вы можете запускать FAST-ноды в параллельных рабочих процессах CI/CD и при этом не будет возникать конфликтов (один тест безопасности не будет прерывать другой).

results matching ""

    No results matching ""