跳至主内容

Chaos Mesh 2.0:迈向混沌工程生态

· 1 分钟阅读
Chaos Mesh Authors
All maintainers of Chaos Mesh
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Chaos Mesh 2.0:迈向混沌工程生态
Chaos Mesh 2.0:迈向混沌工程生态

2021 年 7 月 23 日,Chaos Mesh 2.0 正式发布!这是一个令人兴奋的版本,标志着我们构建混沌工程生态的坚实里程碑。

让混沌工程更简单一直是 Chaos Mesh 坚定不移的目标,而此次发布是关键一步。经过近一年的持续努力,我们在三大主要领域实现了重大改进:易用性、原生实验编排与调度,以及故障注入类型的丰富性。

易用性

我们致力于提升 Chaos Mesh 的易用性,而 Chaos Dashboard(一个用于编排混沌实验的 Web 界面)是达成这一目标的关键路径。在 Chaos Mesh 2.0 中,我们通过以下方式改进了 Chaos Dashboard,进一步简化了混沌实验的复杂度:

  • 现在支持创建、查看和更新 AWSChaos 与 GCPChaos,使得在云环境中进行混沌实验能够提供与 Kubernetes 中一致的体验;

  • 能够显示每个实验更详细的记录,进一步提升实验的可观测性。

Chaos Mesh 2.0 - 实验调度
Chaos Mesh 2.0 - 实验调度

原生实验编排与调度

在进行混沌实验时,单个实验通常不足以模拟完整的测试场景,而手动启动或停止实验将是一件繁琐且危险的事情。此前,我们将 Argo 与 Chaos Mesh 结合,以工作流的形式自动注入故障。然而,我们后来意识到 Argo 工作流并非描述声明式混沌实验的最佳方式,因此决定编写另一个工作流引擎。Chaos Mesh 2.0 推出了原生 Workflow 以支持实验编排,这意味着您可以串行或并行执行多个实验。您甚至可以融入通知和健康检查,以模拟更复杂的实验场景。

Chaos Mesh 2.0 - 工作流
Chaos Mesh 2.0 - 工作流

在之前的版本中,我们使用 cronduration 字段来定义周期性执行的混沌实验。我们很快意识到这种方式描述行为并不合适。例如,单次执行通常比一个执行周期还要长。这种定义虽然可行,但对于预期行为的研究缺乏合适的描述。我们参考 CronJob,向 Chaos Mesh 引入了 Schedule 这一新的自定义对象。它为周期性执行的任务添加了更明确的属性,例如是否允许多个实验同时执行,从而对行为进行约束。

Chaos Mesh 2.0 - 计划任务
Chaos Mesh 2.0 - 计划任务

更丰富的故障注入类型

Chaos Mesh 已经支持系统级故障注入类型,以及对云环境(如 AWSChaos 和 GCPChaos)的故障注入。从 2.0 版本开始,通过引入 JVMChaos 和 HTTPChaos,我们实现了对应用层的混沌注入。

JVMChaos

Java 和 Kotlin 等 JVM 语言在业界应用广泛。通过 JVM 字节码增强和 Java Agent 等技术,可以便捷地模拟 JVMChaos。当前 JVMChaos 基于 chaosblade-exec-jvm 实现,支持注入方法延迟、指定返回值、内存溢出(OOM)及抛出自定义异常等多种应用层故障类型。详细信息请参阅文档:模拟 JVM 应用故障

HTTPChaos

HTTPChaos 是 2.0 版本全新支持的混沌实验类型。该实验可从服务端劫持 HTTP 请求与响应,实现链路中断、延迟注入或修改 Header/Body 等操作,适用于所有采用 HTTP 通信协议的场景。更多信息请参考 模拟 HTTP 故障

Chaosd:面向物理节点的故障注入工具

Chaos Mesh 专为 Kubernetes 设计。针对物理机环境,我们推出了 Chaosd。该工具由 Chaos Mesh 的核心组件 chaos-daemon 演进而来,并根据物理机特性增加了专用混沌实验。目前 Chaosd 支持对物理机实施进程终止、网络干扰、JVM 故障、资源压力、磁盘故障等多类故障注入。

未来展望

Chaos Mesh 仍在积极开发中,我们正在推进以下更强大的功能:

  • 实现运行时注入 JVMChaos,降低使用成本并提升易用性

  • 引入插件机制构建自定义混沌实验,同时保持调度功能不受影响

此外,我们发现混沌实验在多场景下具有复用价值,因此计划构建实验模板平台。用户不仅可共享复用具体实验,还能针对不同场景复用完整的 Workflow。

立即体验!

备注

2022-10-24:由于 https://www.oreilly.com/online-learning/leveraging-katacoda-technology.html 政策调整,同时参考 #356,交互式教程暂不可用。

欢迎在浏览器中体验 Chaos Mesh 2.0 interactive scenarios!无需安装配置,完整开发环境已预置就绪。您也可访问 Chaos Mesh 文档 获取更多信息。

衷心致谢

感谢所有 Chaos Mesh 贡献者,Chaos Mesh 从 1.0 到 2.0 的跨越离不开各位的辛勤付出!

若您对 Chaos Mesh 感兴趣并希望参与改进,欢迎加入 Slack 频道 或向 GitHub 仓库 提交 PR 和 Issue。Chaos Mesh 期待您的参与和反馈!