Рубрики
Без рубрики

Простое тестирование нагрузки с саранчой и Kubernetes

Код для сценария манифеста можно найти здесь Каждый раз, когда мне нужно запустить некоторое тестирование нагрузки … Теги с Куберовщиками, тестированием, производительностью, Python.

Код для сценария манифеста можно найти здесь

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

Так После поиска я столкнулся с locust.io распределенная нагрузка на нагрузку на основе Python.

Я не разработчик Python, но саранчой достаточно просто, чтобы меня пересматривали сброс Гатлинг и дайте это попробовать. FWIW: Гатлинг чрезвычайно мощный, но и довольно сложный для работы с.

Хорошо, время обернуть это на контейнер и бежать на Куберане, к счастью, кто-то уже сделал это: Распределенное тестирование нагрузки с использованием Kubernetes

Но я не был в порядке с этим решением, в основном потому, что мне пришлось построить новый контейнер для каждого теста. Поток, который я рассматривал, было немного больше похоже на это:

  1. Испытания сохраняются в GitHub
  2. Изображения неизменяются
  3. Пользователи создают кластеры и указать на конкретный тест

Хорошо, что достижение этого относительно легко, мы можем добавить Init Container. Секция, чтобы потянуть тесты из GitHub:

 initContainers:
      - name: gitbox
        image: viniciusccarvalho/alpine-git
        command:
        - git
        - clone
        - "https://github.com/user/test-repository"
        - "/data/tests"
        volumeMounts:
        - name: workdir
          mountPath: "/data/"

Так что теперь, когда контейнер для саранча запускается все тестовые ресурсы, должны быть доступны на /data/ папка.

Автоматизировать все вещи

Чтобы развернуть кластер саранча, нам понадобится 4 ресурса Kubernetes:

  1. Мастер развертывание
  2. Развертывание работника (с n количеством реплик и указывая на ведущую службу)
  3. Мастер-сервис (используя Clusterip, поэтому работники могут получить доступ к мастеру)
  4. Служба LoadBalancer для мастера (необязательно) для доступа к конечной точке

Все эти файлы отличаются только на нескольких частях (REPO, целевой файл, целевой хост и имя), поэтому я решил создать сценарий, который автоматически создает эти файлы.

Вы можете потянуть его здесь

Если вы запустите скрипт с A -H, вы получите все необходимые параметры для создания артефактов:

python locust-deploy.py -h
usage: locust-deploy.py [-h] -n NAME -t TARGET_HOST -r REPO -f TEST_FILE
                        [-s SIZE] [-o OUTPUT]

Locust cluster manifest generator

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  Name of the test cluster artifacts
  -t TARGET_HOST, --target_host TARGET_HOST
                        Target host to run tests against
  -r REPO, --repo REPO  Github repository containing the tests
  -f TEST_FILE, --test_file TEST_FILE
                        The locust file to be used, relative to the github
                        root path
  -s SIZE, --size SIZE  Number of workers pods to be created. Default to 1
  -o OUTPUT, --output OUTPUT
                        Manifest files output

И если вы запустите его, указывая на место, скажите ~/tmp/outsust-развертывание Вы в конечном итоге с:

 ls -la ~/tmp/locust-deployments
total 32
drwxr-xr-x   6 vinnyc  primarygroup   192 Oct 16 17:45 .
drwxr-xr-x  16 vinnyc  primarygroup   512 Oct 16 11:35 ..
-rw-r--r--   1 vinnyc  primarygroup   246 Oct 16 17:45 appengine-locust-master-service-lb.yaml
-rw-r--r--   1 vinnyc  primarygroup   352 Oct 16 17:45 appengine-locust-master-service.yaml
-rw-r--r--   1 vinnyc  primarygroup  1415 Oct 16 17:45 appengine-locust-master.yaml
-rw-r--r--   1 vinnyc  primarygroup  1285 Oct 16 17:45 appengine-locust-worker.yaml

После развертывания этих артефактов у вас будет новое кластер саранчи, готовым к доступу на ваш LB Public ContPoint:

Там у вас есть, очень простое, и легко развернуть 20 узла Test Cluster для вас для использования.

Счастливый кодирование

Оригинал: “https://dev.to/viniciusccarvalho/simple-load-testing-with-locust-and-kubernetes-23c3”