Chaostoolkit - Python Chaos Engineering Toolkit
本文介绍了一个使用 Python 编写的通用 Chaos Engineering 框架,它的设计目标是简单快速地在运行着的系统上做 chaos 实验, 整个 toolkit 使用很普通的 pip 安装,不需要向 ChaosMonkey 那样有很多 Java 系的依赖,居家测试推荐。
它基于的原理是 principle of chaos, 它的使用颇为简单:编写 json/yaml 配置文件,编写插件,然后运行 chaos run experiment.json
. 它默认提供了不少插件,例如 kubernetes,prometheus 等等。
举个例子, 👇 这段 JSON 配置说我们要杀掉一个 k8s pod,pause 5 秒。在这期间我们可以通过 microservice_available_and_healthy
方法来检查所有应用是否仍然是存活健康的:
{
"name": "all-our-microservices-should-be-healthy",
"provider": {
"type": "python",
"module": "chaosk8s.probes",
"func": "microservice_available_and_healthy",
"arguments": {
"name": "myapp",
"ns": "myns"
}
}
},
{
"type": "action",
"name": "terminate-db-pod",
"provider": {
"type": "python",
"module": "chaosk8s.pod.actions",
"func": "terminate_pods",
"arguments": {
"label_selector": "app=my-app",
"name_pattern": "my-app-[0-9]$",
"rand": true,
"ns": "default"
}
},
"pauses": {
"after": 5
}
}