步骤间参数传递

  • 将当前 step 的结果导出为Output Parameter
  • 将前一个 step 的Output Parameter导入为当前步骤的Input Parameter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: output-parameter-
spec:
entrypoint: output-parameter
templates:
- name: output-parameter
steps:
- - name: generate-parameter
template: hello-world-to-file
- - name: consume-parameter
template: print-message
arguments:
parameters:
# 将第一步写入到文件中的信息读取出来,传递给下一个步骤
- name: message
value: "{{steps.generate-parameter.outputs.parameters.hello-param}}"

- name: hello-world-to-file
container:
image: busybox
command: [sh, -c]
args: ["echo -n Output And Input Test > /tmp/hello_world.txt"] # 将信息输出到文件中
outputs:
parameters:
- name: hello-param # name of output parameter
valueFrom:
path: /tmp/hello_world.txt # set the value of hello-param to the contents of this hello-world.txt

- name: print-message
inputs:
parameters:
- name: message
container:
image: busybox
command: [echo]
args: ["{{inputs.parameters.message}}"]
阅读全文 »

定时触发

类似于 k8s 中的 job 和 cronjob,CronWorkflow 会定时创建 Workflow 来实现定时触发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: test-cron
spec:
workflowMetadata: #元数据,由这个CronWorkflow创建的Workflow都会带有这个labels
labels:
dou: bao
schedule: "* * * * *"
concurrencyPolicy: "Replace"
startingDeadlineSeconds: 0
serviceAccountName: argo
workflowSpec:
entrypoint: whalesay
templates:
- name: whalesay
inputs:
parameters:
- name: message #模板的输入参数
value: cron-test
container:
image: docker/whalesay
command: [cowsay]
args: ["{{inputs.parameters.message}}"] #引用模板的入参

阅读全文 »

argo workflow & template

Workflow 的相关类型

Workflow

  • 定义: 是一个具体的工作流实例,描述了要执行的任务和步骤。
  • 使用: 可以直接包含 templates,或者引用 WorkflowTemplateClusterWorkflowTemplate

WorkflowTemplate

  • 定义: 是一个可重用的工作流模板,适用于同一命名空间内的多个工作流。
  • 使用: Workflow 可以引用 WorkflowTemplate 以使用其定义的步骤和任务。

ClusterWorkflowTemplate

  • 定义: 与 WorkflowTemplate 类似,但在集群范围内可用,适用于跨命名空间的工作流。
  • 使用: Workflow 可以引用 ClusterWorkflowTemplate,这使得模板在所有命名空间中都可用。

Templates

  • 定义: 是工作流中定义的实际可执行单元,可以是单个任务、步骤或 DAG。
  • 使用: 定义在 WorkflowWorkflowTemplateClusterWorkflowTemplate 中。templates 可以相互引用,支持复用和组合。

关系

  • Workflow 可以包含 templates 直接执行,也可以引用 WorkflowTemplateClusterWorkflowTemplate
  • WorkflowTemplateClusterWorkflowTemplate 提供了复用和参数化的能力,使得工作流定义更加灵活和可维护。
  • Templates 是工作流各组件的基本构建块,定义了具体的执行逻辑。
阅读全文 »
0%