1

我正在尝试C在两个工作流完成日常运行时A安排B一个工作流。

有没有办法在不使用工作流模式的工作流的情况下做到这一点?

4

1 回答 1

1

我假设AB并行运行。

如果您可以将工作流程A和合并到具有并行步骤B的单个工作流程中,那么您可以使用互斥锁来延迟执行直到完成之后。ABABCAB

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之后启动足够长的时间。ABAB

如果 Argo 支持每个工作流使用多个互斥体/信号量,则可以避免将Aand合并到一个工作流中。B目前,没有计划支持它

另一种选择是将所有三个工作流程组合成一个工作流程(与A之前B并行运行C)。

于 2021-06-11T20:14:39.997 回答