我想触发Argo工作流在特定时间开始运行。我目前正在使用一个工作流模板,其余的API到submit
使用此模板的工作流。有没有办法告诉Argo在特定时间启动工作流。
我知道cron工作流和cron工作流模板的存在。但我不知道如何使用工作流或cron工作流来实现我想要的。
要进行任何调度,我必须使用cron工作流吗?或者有没有一种方法可以通过submitOptions中的调度时间或其他方式通过其余的API来延迟触发常规工作流?
如果我必须使用cron工作流,我应该将计划值设置为什么?我不希望它自动或定期运行,而是只在我想要的时候和特定的时间运行。有没有办法使用cronWorkflowTemplate和其他API来实现这一点?
如果有任何帮助/指点,我将不胜感激。
很可能不是您想要的答案,但如果您能够更改WorkflowTemplate,您可以将第一步设置为立即挂起步骤,并提供一个值作为输入(由您在决定要提交工作流时,而不是现在(。例如,您的工作流程可能如下所示:
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: my-workflow-template
spec:
entrypoint: my-wf
arguments:
parameters:
- name: wait-time-sec
value: "0" # override me
templates:
- name: my-wf
inputs:
parameters:
- name: wait-time-sec
steps:
- - name: wait
template: wait-template
arguments:
parameters:
- name: wait-time-sec
value: "{{inputs.parameters.wait-time-sec}}"
- - name: rest of original workflow steps...
- name: wait-template
inputs:
parameters:
- name: wait-time-sec
suspend:
duration: "{{inputs.parameters.wait-time-sec}}"
...
当您想要提交它时,只需传入参数wait-time-sec
。当然,如果您希望有一个特定的时间,那么您要么必须计算提交前的秒数,要么在wait
步骤之前编写一个简单的脚本来为您进行计算,输入日期时间并输出秒数供wait
步骤使用。