🛠 Netflix Security Monkey как Chaos Engineering
Салют,
Закончились праздничные выхи, теперь пора на отходосах входить в рабочий режим. Но для тебя я пока придержу новогоднее лого, что бы было потеплее.
А год начнем с тобой с Chaos Monkey, вспомнив былое:
Приложение с открытым исходным кодом (детальная дока допом к посту), разработанное компанией Netflix Security, которое намеренно реализует отказ в обслуживании для инстансов в production среде. Имеет высокую требовательность к зрелости процессов внутри компании и к компетенциям администраторов инструмента. Для корректного тестирования сам инструмент и нагружаемые приложения должны администрироваться в Spinnaker - CI/CD платформы, используемой оффициальными разработчиками. Тип лицензии: Apache License 2.0.
Основные фичи
- Имитация отказа в обслуживании инфраструктуры
- Выявление узкого горлышка в архитектуре
- Проверка узлов системы на избыточное дублирование
- Контроль падений каждого из серверов и детализация информации как это влияет на системы
- Принудительные контроли и реализация health-check, включая A/C таймапов
- Имитация нагрузочного тестирования и стресс-тестов , включая проверка нагрузки типов портов 429 и тд.
Принцип работы инструмента
- После реализации отказа в обслуживании конфигурация инструмента осуществляет инвентаризацию инстансов
- Далее, выбираются инстансы доступные для тестирования (определяется с помощью политики / конфигурационных файлов) и собирает список инстансов с которыми разрешено взаимодействия
- Далее, с помощью системной утилиты вызывается в течение рабочего дня согласно составленному расписанию. Не запускается как служба. Вместо этого настраивается задание cron для создания расписания завершений
- Когда создает расписание, оно создает другое задание cron для планирования завершений, включая рандомное планирование
Как потрогать?
$ go get github.com/netflix/chaosmonkey/cmd/chaosmonkey
# Поставить Halyard
$ curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/debian/InstallHalyard.sh
$ sudo bash InstallHalyard.sh
$ hal config features edit --chaos true
$ hal config version edit --version $VERSION
# Проверка соединения с Spinnaker
$ chaosmonkey config spinnaker
# С установленным Spinnaker
$ sudo nano /opt/deck/html/settings.js
# Ставим для специального параметра значение True
$ var chaosEnabled = true
# Ручная остановка инстансов с заданными параметрами
$ chaosmonkey terminate [--stack=] [--cluster=] [--leashed]
Итого:
- Инструмент, поддерживает только совместимое со Spinnaker - AWS, Google Compute Engine, Azure, Kubernetes, Cloud Foundry
- Инструмент достаточно старый. Решение вышло еще в 2011 году и способно вырубать один инстанс за раз. С учетом текущих масштабов инфраструктуры есть необходимость проведения chaos сканирования в гораздо большем масштабе. Так, логическое продолжение инструмента - Chaos Kong может проводить проверку отказоустойчивости гораздо большего масштаба, например, отрубая один из регионов AWS. Сам Chaos Kong рассмотрим дальше
#appsec #toolchain #reco #techsolution #paper #specialty
