在 Argo Workflows 中,可以使用 withFanIn
遍历一个包含多个输入参数的列表,并在所有输入参数完成后执行下一个步骤。
下面是一个基本的代码示例,演示了如何在 Argo Workflows 中使用动态 "Fan In":
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: dynamic-fan-in-
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: generate-inputs
template: generate-inputs
- - name: process-inputs
template: process-inputs
arguments:
parameters:
- name: inputs
value: "{{steps.generate-inputs.outputs.parameters.inputs}}"
- name: generate-inputs
script:
image: alpine:latest
command: [sh]
source: |
echo "input1" > /tmp/input1.txt
echo "input2" > /tmp/input2.txt
echo "input3" > /tmp/input3.txt
echo "input4" > /tmp/input4.txt
outputs:
parameters:
- name: inputs
valueFrom:
artifactPaths: ["/tmp/*.txt"]
- name: process-inputs
inputs:
parameters:
- name: inputs
script:
image: alpine:latest
command: [sh]
source: |
echo "Processing inputs: {{inputs.parameters.inputs}}"
在上述示例中,我们定义了一个名为 generate-inputs
的步骤,该步骤在 /tmp
目录下生成了一些输入文件。然后,我们定义了一个名为 process-inputs
的步骤,该步骤接收 inputs
参数并处理这些输入。
在 main
模板中,我们首先调用 generate-inputs
步骤来生成输入文件。然后,我们使用 withFanIn
语法来遍历 generate-inputs
步骤的输出,并将其传递给 process-inputs
步骤。
最后,process-inputs
步骤会打印出接收到的输入参数。
你可以将上述代码保存为一个 Argo Workflow YAML 文件,并使用 Argo Workflows 来运行它。运行后,你将看到输出类似于以下内容:
Processing inputs: [input1 input2 input3 input4]
这表明所有的输入参数都被正确地传递给了 process-inputs
步骤。
请注意,上述示例仅演示了动态 "Fan In" 的基本用法。你可以根据自己的需求进行扩展和修改。