从 API 请求触发 argo 工作流的最佳方式是什么?
API 请求由 web 服务器处理,服务器如何将工作流提交给 argo 服务器?使用命令行界面?使用休息请求?这里最好/推荐的方法是什么?
从 API 请求触发 argo 工作流的最佳方式是什么?
API 请求由 web 服务器处理,服务器如何将工作流提交给 argo 服务器?使用命令行界面?使用休息请求?这里最好/推荐的方法是什么?
没有一个“正确的方法”。但这里有一些选项,因此您可以选择最适合您的应用程序的选项:
使用 Argo API
使用SDK(Java、Go、Python)
如果您的 API 是用 Java、Go 或 Python 编写的,并且如果您与 Argo 的交互比简单地提交工作流更复杂(例如,如果您还列出了工作流并且想要这些对象的良好表示),那么Argo Workflows SDK 可能是一个不错的选择。以我的经验,SDK 有一些怪癖和错误,所以我只会在你需要一个功能更全的客户端时潜入。
直接使用一些 HTTP 客户端
如果您的用例非常简单(例如提交带有 WorkflowTemplate 参考的小型工作流),我建议使用对 Argo 或 Kubernetes API 的直接 HTTP 调用。如果您的语言具有强大的 Kubernetes SDK,那么这也是一个不错的选择。
使用网络钩子
webhook 端点在技术上是 API 的一部分,但有点不同。API 基本上是 Kubernetes API 的专用版本,专为 Argo CRD 量身定制。events
API 端点提供了一些特定于启动工作流的附加功能。
使用命令行界面
您必须从服务器代码中分叉 CLI 进程,因此这可能不是“最干净”的方法。
使用 Argo 事件
Argo Events 是一个独立但密切相关的项目。它可以接受各种输入(webhook、发布/订阅消息等),然后触发 Workflow。
例如,如果您想要所有提交的工作流的外部记录,Argo Events 可能是有意义的。Pub/sub 会给你那个记录。
使用 Kubernetes API 或 CLI
工作流只是 Kubernetes 资源,因此您可以根据需要通过 Kubernetes 机制提交它们。
我相信你可以说,这真的取决于应用程序。让我知道这些是否需要澄清。