在 Argo Workflows 中定义工作流之间的依赖关系
Define dependencies between workflows in Argo Workflows
我正在尝试安排一个工作流程 C
,当工作流程 A
和 B
都完成他们的每日 运行。
有没有不使用 workflow of workflows 模式的方法来做到这一点?
我假设 A
和 B
运行 并行。
如果您可以将工作流 A
和 B
合并到一个工作流 AB
中,同时执行 A
和 B
,那么您可以使用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 支持每个工作流使用多个 mutex/semaphore,则您可以避免将 A
和 B
合并到一个工作流中。目前,有 no plans to support that.
另一种选择是将所有三个工作流程合并为一个工作流程(A
和 B
运行 在 C
之前并行)。
我正在尝试安排一个工作流程 C
,当工作流程 A
和 B
都完成他们的每日 运行。
有没有不使用 workflow of workflows 模式的方法来做到这一点?
我假设 A
和 B
运行 并行。
如果您可以将工作流 A
和 B
合并到一个工作流 AB
中,同时执行 A
和 B
,那么您可以使用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 支持每个工作流使用多个 mutex/semaphore,则您可以避免将 A
和 B
合并到一个工作流中。目前,有 no plans to support that.
另一种选择是将所有三个工作流程合并为一个工作流程(A
和 B
运行 在 C
之前并行)。