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
    }
}