Здравствуйте, теперь Litmuschaos поддерживает эксперименты Python …
Давайте посмотрим, как создавать хаос, используя SDK Python, не теряя время, шаг за шагом.
Прежде чем начать Big объявление, это Litmuschaos 2.0 вышел, а Litmus-Python также является частью, если она.
Я сосредотачиваюсь на создании хаоса, поэтому, если вы хотите узнать больше о проекте Chaos, затем, пожалуйста, следуйте за Литмусчаос и детали в отношении Python SDK Литмс-Питон
Шаги для создания хаоса:
CD вклад вклад/разработчик-руководство
Теперь обновите свой
атрибуты.yaml
Манифест. Как имя, категория и т. Д. Но следуйте:Используйте _ в
Имена, например:образец_category.
Теперь запустите:
Python3 Generate_Experient.py.ЯМЛ
- Вы можете запустить обе команды
- Для эксперимента: python3 generate_experiment.py.yaml
- Для диаграмм: python3 generate_experiment.py.yaml
Note: Replace the -g=placeholder with the appropriate value based on the usecase: - experiment: Chaos experiment artifacts belonging to an existing OR new experiment. - chart: Just the chaos-chart metadata, i.e., chartserviceversion.yaml Provide the type of chart in the `-t= ` flag. It supports the following values: - category: It creates the chart metadata for the category i.e chartserviceversion, package manifests - experiment: It creates the chart for the experiment i.e chartserviceversion, engine, rbac, experiment manifests - all: it creates both category and experiment charts (default type) Provide the path of the attribute.yaml manifest in the -f flag.
Проверить:
Chaoslib/litmus/
,эксперименты/
иPKG/
каталоги. Образец хаоса был сгенерирован.Открыть
Bin/Experient/Experiment.py
а также
import experiments.sample_category.sample_exec_chaos.experiment.sample_exec_chaos as experiment
(Sample_EXEC_EXPERIMET и FUCKEX_EXEC_CHAOS будут вашими приданными именами в Attribute.yaml Mainest, по умолчанию один упоминается везде) и добавьте еще один элиф
состояние
elif args.name == "chaos": experiment.Experiment(clients)
- Добавить каталоги в Setup.py
'chaosLib/litmus/sample_exec_chaos', 'chaosLib/litmus/sample_exec_chaos/lib', 'pkg/sample_category', 'pkg/sample_category/environment', 'pkg/sample_category/types', 'experiments/sample_category', 'experiments/sample_category/sample_exec_chaos', 'experiments/sample_category/sample_exec_chaos/experiment',
Я обновил имена по умолчанию.
Давайте пришли Bank к Root Directory
litmuschaos/litmus-python
для настройки среды.Python3 -M Virtualenv Chaos
Source Chaos/Bin/Activate
Python3 Setup.py Install. (Вам нужно запускать это каждый раз перед запуском
Python3 Experiments.py -Name Chaos
, Установка всех необходимых Предварительные условия и настройка структуры каталогов)Теперь готов к коду, просто открыть
Chaoslib/litmus/fusher_exec_chaos/lib/
thumb_exec_chaos.py
. иЭксперименты/образец_category/Sammer_Exec_Chaos/Experient/thumb_exec_chaos.py
. Файлы и начать писать хаос …Создайте образец развертывания Nginx, которые можно использовать в качестве приложения в разделе «Тест» (AUT).
kubectl create deployment nginx --image=nginx
- Перейдите в PKG/Famcure_Category и откройте Exection .py или Tymes.py и добавьте/Удалите/Обновите необходимую env.
Примечание: Добавить &
Оператор в конце Chaos Commands Chaos_inject_command
Пример: md5sum/dev/Zero &
Отказ Поскольку мы работаем Chaos Commands в качестве фонового процесса в отдельной ните.
- Перейти к бину/эксперименту и запустить:
Python3 Experient.py -name Chaos
Отказ До этой команды всегда запуститсяpython3 setup.py установить
в корневом каталоге. Пример Chaos logs:
time=2021-08-13 11:43:12,392 level=INFO msg=Experiment Name: chaos time=2021-08-13 11:43:12,392 level=INFO msg=[PreReq]: Initialise Chaos Variables for the sample-chaos experiment time=2021-08-13 11:43:12,393 level=INFO msg=[PreReq]: Updating the chaos result of sample-chaos experiment (SOT) time=2021-08-13 11:43:12,867 level=INFO msg=[Info]: The application information is as follows Namespace=litmus, Label=app=nginx, Ramp Time=0 time=2021-08-13 11:43:12,867 level=INFO msg=[Status]: Verify that the AUT (Application Under Test) is running (pre-chaos) time=2021-08-13 11:43:12,867 level=INFO msg=[status]: Checking whether application containers are in ready state time=2021-08-13 11:43:12,887 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-c65kl, Readiness : True time=2021-08-13 11:43:12,887 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-p87pc, Readiness : True time=2021-08-13 11:43:12,887 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-s5hjs, Readiness : True time=2021-08-13 11:43:12,887 level=INFO msg=[status]: Checking whether application pods are in running state time=2021-08-13 11:43:12,908 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-c65kl status : Running time=2021-08-13 11:43:12,908 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-p87pc status : Running time=2021-08-13 11:43:12,908 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-s5hjs status : Running time=2021-08-13 11:43:12,938 level=INFO msg=[Info]: chaos candidate of kind: deployment, name: nginx, namespace: litmus time=2021-08-13 11:43:12,943 level=INFO msg=[Info]: chaos candidate of kind: deployment, name: nginx, namespace: litmus time=2021-08-13 11:43:12,947 level=INFO msg=[Info]: chaos candidate of kind: deployment, name: nginx, namespace: litmus time=2021-08-13 11:43:12,947 level=INFO msg=[Chaos]:Number of pods targeted: 3 time=2021-08-13 11:43:12,947 level=INFO msg=[Info]: Target pods list, ['nginx-66b6c48dd5-c65kl', 'nginx-66b6c48dd5-p87pc', 'nginx-66b6c48dd5-s5hjs'] time=2021-08-13 11:43:12,955 level=INFO msg=[Chaos]: The Target application details container : nginx, Pod : nginx-66b6c48dd5-c65kl time=2021-08-13 11:43:12,956 level=INFO msg=[Chaos]: Waiting for: 10 time=2021-08-13 11:43:22,955 level=INFO msg=[Chaos]: Time is up for experiment: sample-chaos time=2021-08-13 11:43:23,155 level=INFO msg=[Chaos]: The Target application details container : nginx, Pod : nginx-66b6c48dd5-p87pc time=2021-08-13 11:43:23,164 level=INFO msg=[Chaos]: Waiting for: 10 time=2021-08-13 11:43:33,155 level=INFO msg=[Chaos]: Time is up for experiment: sample-chaos time=2021-08-13 11:43:33,289 level=INFO msg=[Chaos]: The Target application details container : nginx, Pod : nginx-66b6c48dd5-s5hjs time=2021-08-13 11:43:33,289 level=INFO msg=[Chaos]: Waiting for: 10 time=2021-08-13 11:43:43,289 level=INFO msg=[Chaos]: Time is up for experiment: sample-chaos time=2021-08-13 11:43:43,405 level=INFO msg=[Confirmation]: sample-chaos chaos has been injected successfully time=2021-08-13 11:43:43,405 level=INFO msg=[Status]: Verify that the AUT (Application Under Test) is running (post-chaos) time=2021-08-13 11:43:43,405 level=INFO msg=[status]: Checking whether application containers are in ready state time=2021-08-13 11:43:43,416 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-c65kl, Readiness : True time=2021-08-13 11:43:43,416 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-p87pc, Readiness : True time=2021-08-13 11:43:43,416 level=INFO msg=[status]: The Container status are as follows Container : nginx, Pod : nginx-66b6c48dd5-s5hjs, Readiness : True time=2021-08-13 11:43:43,416 level=INFO msg=[status]: Checking whether application pods are in running state time=2021-08-13 11:43:43,429 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-c65kl status : Running time=2021-08-13 11:43:43,429 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-p87pc status : Running time=2021-08-13 11:43:43,429 level=INFO msg=[status]: The status of Pods are as follows Pod : nginx-66b6c48dd5-s5hjs status : Running time=2021-08-13 11:43:43,429 level=INFO msg=[The End]: Updating the chaos result of sample-chaos experiment (EOT)
- Теперь убедитесь, что вы создали все необходимые диаграммы. В каталоге
эксперименты/Sample_Category/Sammer_Exec_Chaos/Charts
После тестирования локально сейчас давайте пойдем в производство.
- Перейти к корневому каталогу
litmuschaos/litmus-python
Отказ Построить Docker Image: Docker Build -t Your-use/Py-Runner: CI. и толкать этоDocker Push Your-User-Name/Py-Runner: кабинета
Два способа проверить это:
1. Используйте пользовательский способ
Обратитесь в документы для более подробной информации Python-SDK.
Запустите эксперимент .yml с желаемыми значениями в env и соответствующим chaosserviceаCouccount с использованием пользовательского dev image вместо litmuschaos/litmus-python
(Скажем, OUMKALE/LITMUS-PYTHON: CI
) Это пакеты бизнес-логики.
Создать пользовательское изображение, построенное с помощью кода, подтвержденного предыдущими шагами.
Запустите хаос-оператор:
kubectl apply -f https://litmuschaos.github.io/litmus/litmus-operator-v1.13.8.yaml
- Настройте RBAC, необходимые для выполнения этого эксперимента, применяя генерируемый
rbac.yaml
Отказ
kubectl apply -f rbac.yaml
Изменение манифеста Chaosexperiment (Experiment.yaml) с правильными значениями по умолчанию (ENV и другие атрибуты, как применимо) и создайте этот CR в кластере (указывая .spec.definition.
Измените манифест Chaosengine (Engine.yaml) с правильными деталями приложения, запустить свойства и создание этого CR для запуска стручков CHAOS.
Проверьте статус эксперимента через Chaosresult.
Обратитесь Litmus Docs Для более подробной информации о выполнении каждого шага в этой процедуре.
Запустите все CRS и оператор в одном пространстве имен
Пример Эксперимент.yaml.
: Ссылка Пример двигатель
: Ссылка
N/B: также используйте &
Оператор наконец, если какая-либо команда Chaos требуется в качестве env.
Теперь перечислите PODS в пространстве имен, если POD двигателя работает с Runnerner
nginx-chaos-runner 1/1 Running 0 35s pod-cpu-hog-exec-2szc9z-rjjkr 1/1 Running 0 33s
Смотрите журналы POD двигателя.
2. Использование портала Litmus
Следуйте этим Ссылка Для деталей настройки портала.
Открытый портал и перейдите в
Рабочие процессы
->Расписание рабочий процесс
Выберите своего агента.
Вы можете выбрать 2-й один эксперимент из моего ступица.
Используйте загрузку YAML. (Для примера рабочего процесса: ссылка ). N/B: Здесь нужно загрузить рабочий процесс Argo.
При выборе Next-nex вы будете приземлиться на этой странице, где вы можете редактировать YAML или можно обновить, используя UI только на нажатии
Имя
, который приземлит на следующий экран.- Обновить двигатель
SPEC.CHAOSSERVICEACCOUNT: Litmus-admin
- Обновить двигатель
Теперь настройте все ENV и закончите
После планирования рабочего процесса вы будете приземлиться на панели инструментов рабочего процесса.
Откройте рабочий процесс, чтобы увидеть детали.
Здесь журналы, результаты хаоса и детали о эксперименте были доказаны, поэтому вы закончили создание хаоса и тестирования на приложение.
Примечание. Вы можете увидеть подробную информацию о UI, но другой способ – описать следующие CRS.
Kubectl Получить Chaosresult. -Н -n litmus
Kubectl Получить Chaosengine -n Litmus
Kubectl Get. Chaosexperent -n litmus
Kubectl Получить рабочий процесс -n litmus.
Поздравление Вы были успешно созданы и введены хаос!
Теперь пришло время поднять пр …!
Шаги, чтобы включить графики/эксперименты CHAOS в ChartHub:
- Отправить PR на Litmus-Python Репо с модифицированными экспериментальными файлами, RBAC, тестовым развертыванием и README.
- Отправить PR на хаос-диаграммы REPO с модифицированным экспериментом CR, эксперимент ChartserviceVersion, RBAC, (уровень категории) Chaos ChartserviceVersion & Package.yaml (если применимо).
- Свяжитесь с нами по провисанию для любых запросов или сомнений.
Вы энтузиасты Sre или Kubernetes? HAOS Engineering Excite вас?
Присоединяйтесь к Litmuschaos Community Slack Channel, присоединяясь к #litmus
Канал на Кубернане ( https://slack.k8s.io/ ) Slack!
Использованная литература:
Слабый Сайт litmuschaos Litmus Chaoshub Гадость Репо litmus Litmus-Python Связь с нами на Slack хаос-диаграммы Litmus Chaos YouTube Channel
Оригинал: “https://dev.to/oumkale/create-chaos-experiments-using-the-litmuschaos-python-sdk-4492”