Argo Workflow 如何使用 Kubernetes 执行控制流?

时间:2021-01-02 14:45:53

标签: kubernetes argo-workflows

如果不顾一切,可以将 Argo Workflows 视为一种在 YAML 中实现的编程语言,并使用 Kubernetes 作为后端。

  • 可以使用 steps:
  • 定义过程
  • 函数是模板,参数有两种:
    • 参数,即字符串
    • 工件,即由某些工具(例如 S3 或 NFS)共享的文件
  • 有流量控制
    • 条件由 when:
    • 实现
    • 迭代器由 withSequence:withItems: 实现
    • 通过调用自身的模板可以实现递归

模板在某种程度上直接映射到 Kubernetes YAML 规范。参数似乎通过注释共享,工件通过原生 Kubernetes 功能共享。

流量控制是如何实现的? Argo 使用 Kubernetes 的哪些功能来实现这一目标?是否与 Kubernetes 控制平面有关?

1 个答案:

答案 0 :(得分:1)

Argo Workflows 是通过自定义 Kubernetes Custom Resources 实现的,例如它自己的 yaml 清单类型。对于每个自定义资源,都有一个关联的自定义 Pod 充当具有逻辑的 Kubernetes Controller

自定义控制器可能会创建其他资源或 Pod,并在状态字段中查看其执行状态的结果,然后相应地实现其工作流逻辑,例如观察结果并根据结果遵循声明的 when: 表达式。

我有更多使用 Tekton Pipelines 的经验,但它的工作方式与 Argo Workflows 相同。如果您有兴趣实现类似的东西,我建议您从 Kubebuilder 开始并阅读 The Kubebuilder book