【发布时间】:2021-08-28 05:46:23
【问题描述】:
当工作流 A 和 B 完成日常运行时,我正在尝试安排工作流 C。
有什么方法可以在不使用workflow of workflows 模式的情况下做到这一点?
【问题讨论】:
当工作流 A 和 B 完成日常运行时,我正在尝试安排工作流 C。
有什么方法可以在不使用workflow of workflows 模式的情况下做到这一点?
【问题讨论】:
我假设 A 和 B 并行运行。
如果您可以将工作流 A 和 B 合并到具有并行步骤 A 和 B 的单个工作流 AB 中,那么您可以使用 mutex 来延迟 C 的执行直到AB 结束后。
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: AB
spec:
schedule: "* * * * *"
workflowSpec:
entrypoint: AB
synchronization:
mutex:
name: AB-C-mutex
templates:
- name: AB
steps:
- - name: A
templateRef:
name: A
template: A
- name: B
templateRef:
name: B
template: B
---
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: C
spec:
schedule: "* * * * *"
workflowSpec:
entrypoint: C
synchronization:
mutex:
name: AB-C-mutex
templates:
# The rest of the workflow.
您需要确保C 在AB 之后启动足够长的时间,以便AB 声明互斥锁。
如果 Argo 支持每个工作流使用多个互斥量/信号量,您可以避免将 A 和 B 合并到一个工作流中。目前有no plans to support that。
另一种选择是将所有三个工作流程合并为一个工作流程(A 和 B 在 C 之前并行运行)。
【讨论】: