Код для сценария манифеста можно найти здесь
Каждый раз, когда мне нужно запустить некоторое тестирование нагрузки, я сталкиваюсь с анализом синдромом паралича.
Так После поиска я столкнулся с locust.io распределенная нагрузка на нагрузку на основе Python.
Я не разработчик Python, но саранчой достаточно просто, чтобы меня пересматривали сброс Гатлинг и дайте это попробовать. FWIW: Гатлинг чрезвычайно мощный, но и довольно сложный для работы с.
Хорошо, время обернуть это на контейнер и бежать на Куберане, к счастью, кто-то уже сделал это: Распределенное тестирование нагрузки с использованием Kubernetes
Но я не был в порядке с этим решением, в основном потому, что мне пришлось построить новый контейнер для каждого теста. Поток, который я рассматривал, было немного больше похоже на это:
- Испытания сохраняются в GitHub
- Изображения неизменяются
- Пользователи создают кластеры и указать на конкретный тест
Хорошо, что достижение этого относительно легко, мы можем добавить 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:
- Мастер развертывание
- Развертывание работника (с n количеством реплик и указывая на ведущую службу)
- Мастер-сервис (используя Clusterip, поэтому работники могут получить доступ к мастеру)
- Служба 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”