创建 Chaos Mesh Workflow
为满足该需求,Chaos Mesh 提供了 Chaos Mesh Workflow,一个内置的工作流引擎。使用该引擎,你可以串行或并行地执行多种不同的 Chaos 实验, 用于模拟生产级别的错误。
目前, Chaos Mesh Workflow 支持以下功能:
- 串行编排
- 并行编排
- 条件分支
使用场景举例:
- 使用并行编排同时注入多个 NetworkChaos 模拟复杂的网络环境
- 在串行编排中进行健康检查,使用条件分支决定是否执行剩下的步骤
Chaos Mesh Workflow 在设计时一定程度上参考了 Argo Workflow。如果您熟悉 Argo Workflow 您也能很快地上手 Chaos Mesh Workflow。
Github 仓库中含有其他 Workflow 的示例.
使用网络上的 YAML 文件创建 Workflow:
一个简单的 Workflow YAML 文件定义如下所示,这个 Workflow 将会同时注入 StressChaos
、NetworkChaos
与 PodChaos
:
其中 templates
定义了实验中的各个步骤, 定义了 Workflow 执行时的入口。
templates
中的每个元素都代表了一个 Workflow 的步骤,例如:
templateType: Parallel
代表节点的类型为并行;deadline: 240s
代表这个节点下的所有并行实验预期在 240 秒内执行完成,否则将超时;children
代表将要并行执行的其他 template 名称。
templateType: PodChaos
代表节点的类型为 PodChaos 实验;deadline: 40s
代表当前 Chaos 实验将持续 40 秒; 字段是 PodChaos 实验的定义。
通过 YAML 文件与 kubectl
创建 Workflow 较为灵活,你可以对串行活并行编排进行嵌套,声明复杂的编排,甚至可以与条件分支组合达到循环的效果。
注意
当在 Workflow 中建立有持续时间的 Chaos 时,需要将持续时间填写到外层的 deadline
字段中,而不是使用 Chaos 中的 duration
字段。
目前在 expression
中提供了两个上下文变量:
exitCode
表示自定义任务的退出码。stdout
表示自定义任务的标准输出。
这里只列举了常用字段,关于完整定义可参考 corev1.Container