【问题标题】:How does an Argo Workflow carry out control flow with Kubernetes?Argo Workflow 如何使用 Kubernetes 执行控制流?
【发布时间】:2021-04-08 22:16:58
【问题描述】:

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

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

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

流控是如何实现的? Argo 使用 Kubernetes 的哪些功能来实现这一点?跟 Kubernetes Control Plane 有关系吗?

【问题讨论】:

    标签: kubernetes argo-workflows


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      相关资源
      最近更新 更多