我想触发 Argo 工作流程在特定时间开始运行。我目前正在使用工作流程模板和其余 API 来
submit
具有此模板的工作流程。有没有办法告诉Argo在特定时间启动工作流程。
我知道 cron-workflow 和 cron-workflow-template 的存在。但我无法弄清楚如何使用工作流程或 cron-workflow 来实现我想要的。
要进行任何调度,我必须使用 cron-workflow 吗?或者有没有办法通过在submitOptions中传递计划时间或通过其余API以其他方式延迟触发常规工作流程?
如果我必须使用 cron 工作流程,我应该将计划值设置为多少?我不希望它自动或定期运行,但仅在我需要时在特定时间运行。有没有办法使用 cronWorkflowTemplate 和其他 API 来实现?
我将不胜感激任何帮助/指示。
可能不是您正在寻找的答案,但如果您能够更改您的 WorkflowTemplate,您可以使第一步成为立即的 suspend 步骤,并提供一个值作为输入(由您在决定时)您想要提交工作流程,但不是现在)。例如,您的工作流程可能如下所示:
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
步骤使用。