Kubernetes Argo通过JSON数组循环

时间:2019-06-05 09:58:20

标签: python argo

我正在尝试使用Argo遍历JSON对象数组,但是工作流返回了:

failed to resolve {{item}}

工作流程配置如下:

- name: output-parameter
   steps:
    - - name: generate-parameter
        template: getresult
    - - name: consume-parameter
         template: print-result
         arguments:
           parameters:          
           - name: result
           value: "{{item}}"
         withParam: "{{steps.generate-parameter.outputs.result}}"      


 - name: getresult
   script:
     image: python:alpine3.6
     command: [python]
     source: |        
       import json
       import sys

       json.dump([{"name":"Foo"},{"name":"Doe"}], sys.stdout)

 - name: print-result
   inputs:
     parameters:
     - name: result
   container:
     image: crweu.azurecr.io/ubuntu_run:v1.0.6
     command: [sh, -c]
     args: ["echo {{inputs.parameters.result}}"]

如果我将example argo loop用于:

json.dump([i for i in range(20, 31)], sys.stdout)

它打印出数字范围,没有问题。

我认为问题是由于它不是一个简单的项目而是一个对象,而 {{item}} 需要更改,但我找不到任何文档。

>

1 个答案:

答案 0 :(得分:1)

您需要将消耗参数步骤的参数调整为:

         arguments:
           parameters:          
           - name: result
             value: "{{item.name}}"
         withParam: "{{steps.generate-parameter.outputs.result}}"      

这是因为Argo正在解析getresult步骤的JSON输出。