
Chaosblade: простой в использовании и мощный инструментарий для хаос-инжиниринга

Китайская версия README
Вики: DeepWiki
🔥🔥🔥 Крупное обновление:выпущен агент Chaosblade — Blade AI

Blade AI выступает в качестве интеллектуального агентского слоя в экосистеме ChaosBlade: на базовом уровне он вызывает ChaosBlade для выполнения инъекции сбоев; на верхнем уровне он включает возможности оркестрации, такие как понимание намерений, аудит безопасности, проверка эффекта, безопасное восстановление и структурированная отчётность, — тем самым превращая учения по сбоям из процесса «ручного написания команд» в процесс, выполняемый через «диалоговое взаимодействие».
Подробную информацию см. в: Blade AI README
Введение
ChaosBlade — это инструмент с открытым исходным кодом от Alibaba для проведения экспериментальных инъекций, который следует принципам хаос-инжиниринга и моделям хаотических экспериментов, чтобы помогать предприятиям повышать отказоустойчивость распределённых систем и обеспечивать непрерывность бизнеса в процессе перехода компаний в облако или миграции на облачные нативные системы.
Chaosblade — это внутренний проект с открытым исходным кодом компании MonkeyKing. Он основан на почти десятилетней практике тестирования отказов и проведения учений Alibaba и сочетает в себе лучшие идеи и практики бизнес-подразделений Группы.
ChaosBlade не только прост в использовании, но и поддерживает множество экспериментальных сценариев. Сценарии включают:
- Базовые ресурсы: такие экспериментальные сценарии, как CPU, память, сеть, диск, процессы и другие;
- Java-приложения: например, базы данных, кэши, сообщения, сама JVM, микросервисы и т. д. Можно также указать любой метод класса для инъекции различных сложных экспериментальных сценариев;
- C++-приложения: например, указание произвольных методов или строк экспериментального кода для инъекции задержки, подмена переменных и возвращаемых значений;
- контейнеры: такие экспериментальные сценарии, как уничтожение контейнера, CPU в контейнере, память, сеть, диск, процессы и другие;
- облачные нативные платформы: например, экспериментальные сценарии для CPU, памяти, сети, диска и процессов на узлах платформы Kubernetes, сценарии для сети Pod и самого Pod, такие как уничтожение Pod'ов, а также контейнерные сценарии, например упомянутый выше сценарий для Docker-контейнера;
Инкапсуляция сценариев по доменам в отдельные проекты позволяет не только стандартизировать сценарии в рамках домена, но и облегчает горизонтальное и вертикальное расширение сценариев. Следуя модели хаотических экспериментов, можно единообразно вызывать CLI chaosblade. В настоящее время включены следующие проекты:
- chaosblade: инструмент управления хаотическими экспериментами, включающий команды для создания экспериментов, уничтожения экспериментов, запроса экспериментов, подготовки экспериментальных сред и отмены экспериментальных сред. Это инструмент выполнения хаотических экспериментов; способы выполнения включают CLI и HTTP. Предоставляет полные команды, экспериментальные сценарии и описания параметров сценариев, а управление простое и понятное.
- chaosblade-spec-go: определение модели хаотических экспериментов на языке Golang; сценарии, реализованные на Golang, легко реализуются на основе этой спецификации.
- chaosblade-exec-os: реализация экспериментальных сценариев для базовых ресурсов.
- chaosblade-exec-docker: реализация экспериментальных сценариев для Docker-контейнеров, стандартизированная через вызовы Docker API.
- chaosblade-exec-cri: реализация экспериментальных сценариев для контейнеров, стандартизированная через вызовы CRI.
- chaosblade-operator: реализованы экспериментальные сценарии для платформы Kubernetes; хаотические эксперименты определяются стандартным методом CRD Kubernetes, что очень удобно: с помощью методов работы с ресурсами Kubernetes можно создавать, обновлять и удалять экспериментальные сценарии, в том числе с использованием kubectl, client-go и т. д., а также с помощью описанного выше инструмента CLI chaosblade.
- chaosblade-exec-jvm: реализация экспериментальных сценариев для Java-приложений с использованием технологии Java Agent для динамического подключения, без каких-либо изменений кода и с нулевой стоимостью использования. Также поддерживается отключение агента и полная утилизация всех ресурсов, созданных агентом.
- chaosblade-exec-cplus: реализация экспериментальных сценариев для C++-приложений с использованием технологии GDB для инъекции сбоев на уровне методов и строк кода.
- chaosblade-box: обладает возможностями платформы хаос-инжиниринга и платформы тестирования устойчивости. Дополнительную информацию о возможностях платформы тестирования устойчивости см. в ветке main2.
Быстрый старт
Это руководство поможет вам выполнить первую инъекцию сбоя в Kubernetes менее чем за 5 минут с помощью ChaosBlade. В качестве минимального примера мы внесём сбой перегрузки CPU в Pod.
Предварительные требования
Перед началом убедитесь, что у вас есть:
Установите оператор с помощью Helm:
helm install chaosblade-operator chaosblade-operator-<version>.tgz --namespace chaosblade --create-namespace
Проверьте, что оператор запущен:
kubectl get pods -n chaosblade
Внесите первый сбой (перегрузка CPU)
Выполните сбой полной загрузки CPU для Pod в пространстве имён default: