1

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

  • 可以使用定义一个过程steps:
  • 函数是具有两种形式的参数的模板:
    • 参数,它们是字符串
    • Artifacts,由某些工具共享的文件,例如 S3 或 NFS
  • 有流量控制
    • 条件由以下方式实现when:
    • 迭代器由withSequence:and实现withItems:
    • 递归可以通过模板调用自己

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

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

4

1 回答 1

1

Argo Workflows 使用自定义Kubernetes 自定义资源实现,例如它自己的 yaml 清单类型。对于每个自定义资源,都有一个关联的自定义 pod,它充当具有逻辑的Kubernetes 控制器

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

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

于 2021-01-02T22:22:18.410 回答