创建 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 将会同时注入 StressChaosNetworkChaosPodChaos

    其中 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