总览

工作流作为一个应用部署计划的一部分,可以帮助你自定义应用部署计划中的步骤,粘合额外的交付流程,指定任意的交付环境。简而言之,工作流提供了定制化的控制逻辑,在原有 Kubernetes 模式交付资源(Apply)的基础上,提供了面向过程的灵活性。比如说,使用工作流实现条件判断、暂停、状态等待、数据流传递、多环境灰度、A/B 测试等复杂操作。

工作流由多个步骤组成,典型的工作流步骤包括步骤组(包含一系列子步骤)、人工审核、多集群发布、通知等。你可以在 内置工作流步骤 中查看 KubeVela 默认提供的所有内置工作流步骤。如果内置的工作流步骤无法满足你的需求,你也可以 自定义工作流步骤

实际上,如果你在应用部署计划中只使用了组件,并没有声明工作流时,KubeVela 会在运行这个应用时自动创建一个默认的工作流,用于部署应用中的组件。

在 VelaUX 中,你可以更加直观地感受工作流。如图,下面是一个第一个步骤成功,而第二个步骤失败的工作流:

velaux-workflow

在工作流中,所有的步骤将顺序执行,下一个步骤将在上一个步骤成功后执行。如果一个步骤的类型为步骤组,那么它可以包含一系列子步骤,在执行这个步骤组时,所有子步骤都会一起执行。

在 KubeVela v1.5+ 中,你可以显示地指定步骤的执行方式来控制并发或者单步执行,如:

  1. workflow:
  2. mode:
  3. steps: StepByStep
  4. subSteps: DAG

执行方式有两种:StepByStep 顺序执行以及 DAG 并行执行。

steps 中可以指定步骤的执行方式,subSteps 指定步骤组中子步骤的执行方式。如果你不显示声明执行模式,默认 steps 以 StepByStep 顺序执行,subSteps 以 DAG 并行执行。

应用工作流说明
runningWorkflowexecuting当工作流正在执行时,应用的状态为 runningWorkflow
workflowSuspendingsuspending当工作流暂停时,应用的状态为 workflowSuspending
workflowTerminatedterminated当工作流被终止时,应用的状态为 workflowTerminated
workflowFailedfailed当工作流执行完成,且有步骤失败时,应用的状态为 workflowFailed
runningsucceeded当工作流中所有步骤都成功执行后,应用的状态为 running

工作流拥有丰富的流程控制能力,包括:

  • 查看 操作工作流,了解如何在 CLI 命令行中操作工作流。
  • 查看 暂停和继续工作流,了解如何在工作流中使用暂停步骤完成人工审核,自动继续等功能。
  • 查看 子步骤,了解如何在工作流中使用子步骤完成一组步骤的执行。
  • 查看 依赖关系,了解如何指定工作流步骤间的依赖关系。
  • 查看 数据传递,了解如何通过 inputsoutputs 来进行步骤间的数据传递。
  • 查看 使用条件判断,了解如何使用条件判断来控制工作流步骤的执行。
  • 查看 步骤的超时,了解如何指定工作流步骤的超时时间。
  • 查看 调试工作流 了解如何在真实运行环境中排查工作流的问题。

Last updated on 2023年8月4日 by Daniel Higuero