
这篇文章主要是帮你理解 Argo CD 里的模板(templates)。
简单来说,模板就是定义 工作流该怎么跑 的方式。
阅读后你会明白:
在 Argo CD 里,模板大致分为两类:
工作就是 最小的任务单位,比如一个“步骤”。
它可以是:
编排是把多个工作 组织起来,就像把乐队里的乐手组合成一首曲子。
它支持更复杂的逻辑,比如:
👉 在实际使用中,最常见的就是 容器(单个任务) 和 DAG(编排多个任务)。
如下示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: container-
spec:
entrypoint: main
templates:
- name: main
container:
image: busybox
command: [echo]
args: ["hello world"]执行如上
argo submit --watch container-workflow.yaml模板标签是在运行时将数据替换到工作流程中的一种方法。模板标签由{{和}}分隔,并在模板执行时被替换。
如下示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: template-tag-
spec:
entrypoint: main
templates:
- name: main
container:
image: busybox
command: [echo]
args: [hello "{{workflow.name}}"]下面的命令可以查看
kubectl get pods -l workflows.argoproj.io/workflowapiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: dag-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: a
template: echo
- name: b
template: echo
dependencies:
- a
- name: echo
container:
image: busybox
command: [ echo ]
args: [ "hello world" ]DAG 有两个任务:“a”和“b”。两者都运行“echo”模板,但由于“b”依赖于“a”,因此在“a”成功完成之前它不会启动。
loops
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: with-items-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: print-message
template: echo
arguments:
parameters:
- name: message
value: "{{item}}"
withItems:
- "hello world"
- "goodbye world"
- name: echo
inputs:
parameters:
- name: message
container:
image: busybox
command: [echo]
args: ["{{inputs.parameters.message}}"]在此示例中,它将针对列出的每个项目执行一次。我们可以在这里看到一个模板标签。 {{item}}将替换为“hello world”和“goodbye world”。 DAG 并行执行,因此两个任务将同时启动。
编排模板不运行 Pod
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。