如果不顾一切,可以将 Argo Workflows 视为一种在 YAML 中实现的编程语言,并使用 Kubernetes 作为后端。
steps:
when:
withSequence:
和 withItems:
实现模板在某种程度上直接映射到 Kubernetes YAML 规范。参数似乎通过注释共享,工件通过原生 Kubernetes 功能共享。
流量控制是如何实现的? Argo 使用 Kubernetes 的哪些功能来实现这一目标?是否与 Kubernetes 控制平面有关?
答案 0 :(得分:1)
Argo Workflows 是通过自定义 Kubernetes Custom Resources 实现的,例如它自己的 yaml 清单类型。对于每个自定义资源,都有一个关联的自定义 Pod 充当具有逻辑的 Kubernetes Controller。
自定义控制器可能会创建其他资源或 Pod,并在状态字段中查看其执行状态的结果,然后相应地实现其工作流逻辑,例如观察结果并根据结果遵循声明的 when:
表达式。
我有更多使用 Tekton Pipelines 的经验,但它的工作方式与 Argo Workflows 相同。如果您有兴趣实现类似的东西,我建议您从 Kubebuilder 开始并阅读 The Kubebuilder book。