【问题标题】:Define dependencies between workflows in Argo Workflows在 Argo Workflows 中定义工作流之间的依赖关系
【发布时间】:2021-08-28 05:46:23
【问题描述】:

当工作流 AB 完成日常运行时,我正在尝试安排工作流 C

有什么方法可以在不使用workflow of workflows 模式的情况下做到这一点?

【问题讨论】:

    标签: argo-workflows argoproj


    【解决方案1】:

    我假设 AB 并行运行。

    如果您可以将工作流 AB 合并到具有并行步骤 AB 的单个工作流 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.
    

    您需要确保CAB 之后启动足够长的时间,以便AB 声明互斥锁。

    如果 Argo 支持每个工作流使用多个互斥量/信号量,您可以避免将 AB 合并到一个工作流中。目前有no plans to support that

    另一种选择是将所有三个工作流程合并为一个工作流程(ABC 之前并行运行)。

    【讨论】:

    • 可能会有所帮助的是支持多个信号量的可能性,截至目前,我知道没有办法以完全“解耦”的方式做到这一点,而“分组”工作流是最好的解决方案,所以远。
    • @Vektor88 如果您打开功能请求,他们可能会考虑它,特别是因为其他人表示有兴趣。
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多