如何将参数传递给 argo 工作流 api
How to pass paramters to argo workflow api
我运行通过 argo 工作流 api 调整我的工作流,但我无法传递动态输入参数
curl -k --request POST \
--url https://localhost:2746/api/v1/workflows/argo \
--header 'content-type: application/json' \
--data '{
"namespace": "argo",
"serverDryRun": false,
"workflow": {
"metadata": {
"generateName": "hello-world-",
"namespace": "argo",
"labels": {
"workflows.argoproj.io/completed": "false"
}
},
"spec": {
"templates": [
{
"name": "whalesay",
"arguments": {},
"inputs": {
"parameters":{
"name":"sh@yahoo.com"
}
},
"outputs": {},
"metadata": {},
"container": {
"name": "",
"image": "gandalf/patientreg",
"command": [
"./app"
],
"args": [
""
],
"resources": {}
}
}
],
"entrypoint": "whalesay",
"arguments": {}
}
}
}'
我在 运行 工作流
时收到此错误
{"code":3,"message":"json: cannot unmarshal object into Go struct
field Inputs.workflow.spec.templates.inputs.parameters of type
[]v1alpha1.Parameter"}%
我想通过 api 传递动态电子邮件,并在我的应用程序中接收 if 作为命令行参数,这样我就可以 运行 我的工作流程。
如何实现?
您可以将参数传递给工作流,而这些参数可以发送到工作流内的任何步骤。该参数应该有一个名称。在您的示例中,您只是将值直接传递给步骤。
这是一个有效负载示例。
{
"workflow": {
"metadata": {
"name": "awesome-dragon",
"namespace": "argo",
"labels": {
"example": "true"
}
},
"spec": {
"arguments": {
"parameters": [
{
"name": "workflow-arg",
"value": "mail.from@outside.code"
}
]
},
"entrypoint": "argosay",
"templates": [
{
"name": "argosay",
"inputs": {
"parameters": [
{
"name": "step-level-arg",
"value": "{{workflow.parameters.workflow-arg}}"
}
]
},
"container": {
"name": "main",
"image": "argoproj/argosay:v2",
"command": [
"/argosay"
],
"args": [
"echo",
"{{inputs.parameters.step-level-arg}}"
]
}
}
],
"ttlStrategy": {
"secondsAfterCompletion": 300
},
"podGC": {
"strategy": "OnPodCompletion"
}
}
}
}
请注意,命名参数是从外部传递到 argo 工作流的。相同的工作流参数可以用于内部的任何模板。
我运行通过 argo 工作流 api 调整我的工作流,但我无法传递动态输入参数
curl -k --request POST \
--url https://localhost:2746/api/v1/workflows/argo \
--header 'content-type: application/json' \
--data '{
"namespace": "argo",
"serverDryRun": false,
"workflow": {
"metadata": {
"generateName": "hello-world-",
"namespace": "argo",
"labels": {
"workflows.argoproj.io/completed": "false"
}
},
"spec": {
"templates": [
{
"name": "whalesay",
"arguments": {},
"inputs": {
"parameters":{
"name":"sh@yahoo.com"
}
},
"outputs": {},
"metadata": {},
"container": {
"name": "",
"image": "gandalf/patientreg",
"command": [
"./app"
],
"args": [
""
],
"resources": {}
}
}
],
"entrypoint": "whalesay",
"arguments": {}
}
}
}'
我在 运行 工作流
时收到此错误{"code":3,"message":"json: cannot unmarshal object into Go struct field Inputs.workflow.spec.templates.inputs.parameters of type []v1alpha1.Parameter"}%
我想通过 api 传递动态电子邮件,并在我的应用程序中接收 if 作为命令行参数,这样我就可以 运行 我的工作流程。 如何实现?
您可以将参数传递给工作流,而这些参数可以发送到工作流内的任何步骤。该参数应该有一个名称。在您的示例中,您只是将值直接传递给步骤。
这是一个有效负载示例。
{
"workflow": {
"metadata": {
"name": "awesome-dragon",
"namespace": "argo",
"labels": {
"example": "true"
}
},
"spec": {
"arguments": {
"parameters": [
{
"name": "workflow-arg",
"value": "mail.from@outside.code"
}
]
},
"entrypoint": "argosay",
"templates": [
{
"name": "argosay",
"inputs": {
"parameters": [
{
"name": "step-level-arg",
"value": "{{workflow.parameters.workflow-arg}}"
}
]
},
"container": {
"name": "main",
"image": "argoproj/argosay:v2",
"command": [
"/argosay"
],
"args": [
"echo",
"{{inputs.parameters.step-level-arg}}"
]
}
}
],
"ttlStrategy": {
"secondsAfterCompletion": 300
},
"podGC": {
"strategy": "OnPodCompletion"
}
}
}
}
请注意,命名参数是从外部传递到 argo 工作流的。相同的工作流参数可以用于内部的任何模板。