如何从 API 请求触发 argo 工作流程?

Mos*_*ham 8 argo-workflows

从 API 请求触发 argo 工作流程的最佳方式是什么?

API请求由Web服务器处理,服务器如何将工作流程提交到argo服务器?使用 CLI?使用休息请求?这里最好/推荐的方法是什么?

Mic*_*haw 10

没有一种“正确的方法”。但这里有一些选项,因此您可以选择最适合您的应用程序的选项:

  • 使用Argo API

    • 带有SDK(Java、Go、Python)

      如果您的 API 是用 Java、Go 或 Python 编写的,并且您与 Argo 的交互比简单地提交工作流更复杂(例如,如果您还列出了工作流并且想要这些对象的良好表示),那么Argo Workflows SDK 可能是一个不错的选择。根据我的经验,SDK 存在一些怪癖和错误,因此只有当您需要功能更齐全的客户端时我才会深入研究。

    • 直接使用一些 HTTP 客户端

      如果您的用例非常简单(例如提交带有 WorkflowTemplate 参考的小型工作流),我建议使用对 Argo 或 Kubernetes API 的直接 HTTP 调用。

  • 使用网络钩子

    从技术上讲,Webhook 端点是 API 的一部分,但它有点不同。该 API 基本上是 Kubernetes API 的专门版本,专为 Argo CRD 量身定制。APIevents端点提供了一些特定于启动工作流程的附加功能。

  • 使用CLI

    您必须从服务器代码中分叉 CLI 进程,因此这可能不是“最干净”的方法。

  • 使用 Argo 活动

    Argo Events 是一个独立但密切相关的项目。它可以接受各种输入(webhooks、pub/sub 消息等),然后触发 Workflow

    例如,如果您想要所有提交的工作流程的外部记录,Argo Events 就很有意义。Pub/sub 会给你那个记录。

  • 使用 Kubernetes API 或 CLI

    工作流只是 Kubernetes 资源,因此您可以根据需要通过 Kubernetes 机制提交它们。如果您的语言有强大的 Kubernetes SDK,那么这是一个不错的选择。

我相信您可以看出,这实际上取决于应用程序。如果其中有任何需要澄清,请告诉我。