创建 Chaos Mesh Workflow
在 Chaos Mesh 中模拟真实的系统故障时,通常伴随着持续验证。你可能希望在 Chaos Mesh 平台上构建一系列故障,而不是执行单个独立的混沌故障注入操作。
为满足该需求,Chaos Mesh 提供了 Chaos Mesh Workflow,一个内置的工作流引擎。使用该引擎,你可以串行或并行地执行多种不同的 Chaos 实验, 用于模拟生产级别的错误。
目前, Chaos Mesh Workflow 支持以下功能:
- 并行编排
- 自定义任务
- 条件分支
使用场景举例:
- 使用并行编排同时注入多个 NetworkChaos 模拟复杂的网络环境
- 在串行编排中进行健康检查,使用条件分支决定是否执行剩下的步骤
Chaos Mesh Workflow 在设计时一定程度上参考了 Argo Workflow。如果您熟悉 Argo Workflow 您也能很快地上手 Chaos Mesh Workflow。
Github 仓库中含有其他 Workflow 的.
点击新的工作流。
第 2 步:设置工作流基本信息
第 3 步:配置工作流节点
根据需求选择选择任务类型
注意
Chaos Dashboard 会自动创建一个命名为 “entry” 的串行节点,作其用为该工作流的入口。
填写实验信息
配置方法与创建普通的混沌实验相同。比如,你可以设置一个 POD KILL 类型的 PodChaos 故障,并将其命名为 “kill-nginx”。
你可以先在预览查看工作流定义。确认无误后,点击提交工作流按钮创建工作流。
Workflow 类似于各种类型的 Chaos 对象,同样作为 CRD 存在于 kubernetes 集群中。你可以使用 kubectl create -f <workflow.yaml>
创建 Chaos Mesh Workflow。以下为创建的具体示例。使用本地 YAML 文件创建 Workflow:
使用网络上的 YAML 文件创建 Workflow:
一个简单的 Workflow YAML 文件定义如下所示,这个 Workflow 将会同时注入 StressChaos
、NetworkChaos
与 PodChaos
:
templates
中的每个元素都代表了一个 Workflow 的步骤,例如:
templateType: Parallel
代表节点的类型为并行;deadline: 240s
代表这个节点下的所有并行实验预期在 240 秒内执行完成,否则将超时;children
代表将要并行执行的其他 template 名称。
再例如:
templateType: PodChaos
代表节点的类型为 PodChaos 实验;deadline: 40s
代表当前 Chaos 实验将持续 40 秒; 字段是 PodChaos 实验的定义。
通过 YAML 文件与 kubectl
创建 Workflow 较为灵活,你可以对串行活并行编排进行嵌套,声明复杂的编排,甚至可以与条件分支组合达到循环的效果。
Workflow 字段说明
Template 字段说明
注意
当在 Workflow 中建立有持续时间的 Chaos 时,需要将持续时间填写到外层的 deadline
字段中,而不是使用 Chaos 中的 duration
字段。
ConditionalBranch 字段说明
目前在 expression
中提供了两个上下文变量:
stdout
表示自定义任务的标准输出。
可参考编写 表达式。
Container 字段说明
这里只列举了常用字段,关于完整定义可参考