创建 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 的.

    点击新的工作流

    第 2 步:设置工作流基本信息

    Workflow Info

    第 3 步:配置工作流节点

    1. 根据需求选择选择任务类型

      在本示例中选择的任务类型为”单一“。

      Chaos Dashboard 会自动创建一个命名为 “entry” 的串行节点,作其用为该工作流的入口。

    2. 填写实验信息

      配置方法与创建普通的混沌实验相同。比如,你可以设置一个 POD KILL 类型的 PodChaos 故障,并将其命名为 “kill-nginx”。

      Create podkill in Workflow

    你可以先在预览查看工作流定义。确认无误后,点击提交工作流按钮创建工作流。

    Workflow 类似于各种类型的 Chaos 对象,同样作为 CRD 存在于 kubernetes 集群中。你可以使用 kubectl create -f <workflow.yaml> 创建 Chaos Mesh Workflow。以下为创建的具体示例。使用本地 YAML 文件创建 Workflow:

    使用网络上的 YAML 文件创建 Workflow:

    一个简单的 Workflow YAML 文件定义如下所示,这个 Workflow 将会同时注入 StressChaosNetworkChaosPodChaos

    中的每个元素都代表了一个 Workflow 的步骤,例如:

    templateType: Parallel 代表节点的类型为并行;deadline: 240s 代表这个节点下的所有并行实验预期在 240 秒内执行完成,否则将超时;children 代表将要并行执行的其他 template 名称。

    再例如:

    templateType: PodChaos 代表节点的类型为 PodChaos 实验;deadline: 40s 代表当前 Chaos 实验将持续 40 秒;podChaos 字段是 PodChaos 实验的定义。

    通过 YAML 文件与 kubectl 创建 Workflow 较为灵活,你可以对串行活并行编排进行嵌套,声明复杂的编排,甚至可以与条件分支组合达到循环的效果。

    Workflow 字段说明

    Template 字段说明

    创建 Chaos Mesh Workflow - 图7注意

    当在 Workflow 中建立有持续时间的 Chaos 时,需要将持续时间填写到外层的 deadline 字段中,而不是使用 Chaos 中的 duration 字段。

    ConditionalBranch 字段说明

    目前在 expression 中提供了两个上下文变量:

    • exitCode 表示自定义任务的退出码。
    • stdout 表示自定义任务的标准输出。

    可参考编写 expression 表达式。

    Container 字段说明