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

Создайте эксперименты Chaos, используя Litmuschaos Python SDK

Здравствуйте, теперь Litmuschaos поддерживает эксперименты Python … Давайте посмотрим, как создать хаос … Теги с Litmuschaos, Kubernetes, Docker, Python.

Здравствуйте, теперь Litmuschaos поддерживает эксперименты Python …

Давайте посмотрим, как создавать хаос, используя SDK Python, не теряя время, шаг за шагом.

Прежде чем начать Big объявление, это Litmuschaos 2.0 вышел, а Litmus-Python также является частью, если она.

Я сосредотачиваюсь на создании хаоса, поэтому, если вы хотите узнать больше о проекте Chaos, затем, пожалуйста, следуйте за Литмусчаос и детали в отношении Python SDK Литмс-Питон

Шаги для создания хаоса:

  • Гит клон https://github.com/litmuschaos/litmus-python.git

  • 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”