如何通过API调用触发Argo Workflows?API实现与调用方法咨询
解决Argo Workflows API调用返回"Not Implemented"的问题
1. 核心问题:API端点路径错误
你尝试的几个API路径均不符合Argo Workflows的标准REST API规范,这是触发Not Implemented错误的直接原因。
2. 正确的API端点
Argo Workflows官方REST API中,创建Workflow的POST端点有两种常用形式:
- 若对接Argo Server(推荐,与UI同服务):
https://workflows.companyName-eap.net/api/v1/workflows/inte-tsopbms - 若直接对接Kubernetes原生API(需K8s认证权限):
https://workflows.companyName-eap.net/apis/argoproj.io/v1alpha1/namespaces/inte-tsopbms/workflows
3. 修正后的curl请求示例
基于你的代码,适配Argo Server API的修正版本如下:
curl --request POST \ --url https://workflows.companyName-eap.net/api/v1/workflows/inte-tsopbms \ --header 'content-type: application/json' \ # 若Argo启用认证,需添加Authorization头(从UI右上角头像菜单复制token) # --header 'Authorization: Bearer YOUR_ARGO_AUTH_TOKEN' \ --data '{ "metadata": { "generateName": "hello-world-", "namespace": "inte-tsopbms", "labels": { "workflows.argoproj.io/completed": "false" } }, "spec": { "templates": [ { "name": "whalesay", "container": { "image": "docker/whalesay:latest", "command": ["cowsay"], "args": ["hello world"] } } ], "entrypoint": "whalesay" } }'
说明:原请求中顶层的
namespace和serverDryRun字段属于K8s API的请求参数,Argo Server API直接接受Workflow对象,因此可移除这两个字段。
4. 关键补充:认证处理
从你提供的UI访问地址判断,你的Argo实例大概率启用了认证:
- 登录Argo UI,从右上角头像下拉菜单中选择"Copy Token"获取认证令牌
- 将令牌添加到curl请求的
Authorization头中,格式为Bearer <你的令牌>
5. 验证端点有效性
可通过GET请求先确认端点是否正常:
curl --url https://workflows.companyName-eap.net/api/v1/workflows/inte-tsopbms \ --header 'Authorization: Bearer YOUR_ARGO_AUTH_TOKEN'
若返回该namespace下的Workflow列表,说明端点配置正确。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

