如何触发已有Argo CronWorkflow?Sensor触发报工作流不存在如何解决
错误根因
你使用的resubmit操作要求必须存在对应名称的已完成/运行中Workflow实例才能执行重新提交,你当前Sensor配置中仅声明了Workflow的基础元信息,不存在名为has-wf-full-refresh的真实Workflow实例,因此触发NotFound报错。
解决方案
你要实现事件驱动触发新的Workflow运行,不需要使用resubmit操作,改为create或者submit操作即可,无需修改原有CronWorkflow配置,两种适配方案如下:
方案1:直接引用现有CronWorkflow(推荐,适配批量场景)
不需要复制工作流配置,直接引用已有的CronWorkflow资源触发运行,适合你有数百个现有CronWorkflow的场景,配置参考:
apiVersion: argoproj.io/v1alpha1 kind: Sensor metadata: name: tibco-events-sensor spec: template: metadata: annotations: sidecar.istio.io/inject: 'false' serviceAccountName: operate-workflow-sa dependencies: - name: tibco-dep eventSourceName: tibco-events-source eventName: whatever triggers: - template: name: has-wf-event-trigger argoWorkflow: group: argoproj.io version: v1alpha1 resource: Workflow operation: submit metadata: generateName: has-wf-argo-events- source: cronWorkflow: # 替换为你现有CronWorkflow的名称和所在命名空间即可,无需修改原有CronWorkflow配置 name: your-existing-cronworkflow-name namespace: your-workflow-namespace
方案2:复用工作流Spec配置
如果需要独立于原有CronWorkflow维护触发器的工作流配置,可以把原有CronWorkflow中的workflowSpec内容复制到Sensor配置中即可:
apiVersion: argoproj.io/v1alpha1 kind: Sensor metadata: name: tibco-events-sensor spec: template: metadata: annotations: sidecar.istio.io/inject: 'false' serviceAccountName: operate-workflow-sa dependencies: - name: tibco-dep eventSourceName: tibco-events-source eventName: whatever triggers: - template: name: has-wf-event-trigger argoWorkflow: group: argoproj.io version: v1alpha1 resource: Workflow operation: create metadata: generateName: has-wf-argo-events- source: resource: apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: has-wf-full-refresh- spec: # 直接粘贴原有CronWorkflow中spec.workflowSpec的全部内容即可 entrypoint: main templates: - name: main container: image: your-business-image command: ["your-business-command"]
注意事项
- 确保
operate-workflow-sa服务账号在对应命名空间下有创建Workflow、读取CronWorkflow的RBAC权限 - 配置生效验证无误后,即可停用原有CronWorkflow的定时规则,所有工作流将切换为事件驱动触发
内容的提问来源于stack exchange,提问作者Salsa Steve
相关产品推荐
相关产品推荐

