在Argo Workflow中如何向onExit模板传递参数实现资源清理
Argo Workflow onExit模板动态参数传递内置方案
Argo Workflow 从v3.0版本开始原生支持工作流级全局输出参数能力,无需依赖外部KV存储即可实现初始化步骤生成的动态参数到onExit清理模板的透传,具体实现步骤如下:
- 第一步:在初始化模板中声明输出参数,将生成的资源ID等动态值导出为步骤输出
templates: - name: init-resource container: image: your-init-image:v1 command: [sh, -c] args: ["echo -n 'some-random-unique-id' > /tmp/resource_id"] outputs: parameters: - name: generated-resource-id valueFrom: path: /tmp/resource_id
- 第二步:在工作流根配置的spec下声明全局输出参数,引用初始化步骤的输出值
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: cleanup-demo- spec: entrypoint: main onExit: cleanup-template # 工作流级全局输出,可被onExit模板直接引用 outputs: parameters: - name: global-resource-id valueFrom: parameter: "{{steps.init.outputs.parameters.generated-resource-id}}"
- 第三步:在onExit对应的清理模板中,通过
{{workflow.outputs.parameters.global-resource-id}}直接调用参数值
- name: cleanup-template container: image: your-cleanup-image:v1 command: [sh, -c] args: ["echo 清理资源: {{workflow.outputs.parameters.global-resource-id}}"]
注意事项
- 需保证初始化步骤优先执行,仅当初始化步骤正常完成时,全局输出参数才会被赋值
- 若存在初始化步骤失败的场景,可在清理模板中添加非空判断逻辑,参数为空时跳过清理操作即可
- 该特性同时兼容Steps和DAG两种工作流编排模式
内容的提问来源于stack exchange,提问作者Andrzej Igielski
相关产品推荐
相关产品推荐

