如何在Argo Workflow中将参数文件的列表参数正确读取为列表?
解决Argo Workflow参数文件数组读取为字符串的问题
当然可以把参数文件里的输入读取为值列表,核心是用Argo内置的fromJson()函数将字符串形式的数组解析成可迭代的列表。
具体操作如下:
- 当你通过
{{inputs.parameters.keys}}读取到的是字符串格式的数组(比如"[\"key1\",\"key2\",\"key3\"]"),只需用fromJson()包裹这个参数,就能将其转换为Argo可识别的列表:{{fromJson(inputs.parameters.keys)}}
举个实际的Workflow示例:
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: array-param-demo- spec: entrypoint: iterate-keys arguments: parameters: - name: keys # 从你的JSON参数文件中读取keys数组 valueFrom: path: ./params.json jsonPath: "$.keys" templates: - name: iterate-keys steps: - - name: print-each-key template: echo-key arguments: parameters: - name: current-key value: "{{item}}" # 用fromJson解析后,就能正常遍历列表 withItems: "{{fromJson(inputs.parameters.keys)}}" - name: echo-key inputs: parameters: - name: current-key container: image: alpine:latest command: ["echo"] args: ["当前遍历的key: {{inputs.parameters.current-key}}"]
原理是:从参数文件读取的数组会被序列化为JSON字符串,fromJson()函数会将这个字符串反序列化为Argo可以处理的数组类型,这样后续的withItems或者其他需要列表的逻辑就能正常工作了。
内容的提问来源于stack exchange,提问作者M.M
相关产品推荐
相关产品推荐

