【发布时间】:2022-02-17 06:36:56
【问题描述】:
我正在尝试读取在 ConfigMap 中存储为 Json 的 url 列表,然后将这些作为参数传递给我的 Argo 工作流程的下一步。
我的配置图如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
name: urls
data:
urls: |
[
{"url": "https://www.google.com/"},
{"url": "https://stackoverflow.com/"}
]
我的工作流程模板如下所示(为简洁起见,省略了元数据):
templates:
- name: main
dag:
tasks:
- name: get-urls
template: urls
- name: url-thingy
dependencies: ['get-urls']
templateRef:
name: do-thing-with-the-urls
template: url-thing
arguments:
parameters:
- name: url
value: "{{ item.url }}"
withParam: "{{tasks['get-urls'].outputs.result}}"
- name: urls
resource:
action: get
manifest: |
apiVersion: v1
kind: ConfigMap
metadata:
name: urls
outputs:
parameters:
- name: urls
valueFrom:
jsonPath: '{.data.urls}'
这会加载 ConfigMap 文件,我可以在输出下的 get-urls 步骤中看到列出的 url。当它尝试执行url-thingy 步骤时,它会失败并显示以下消息:
withParam value could not be parsed as a JSON list: {{tasks['get-urls'].outputs.result}}: invalid character '{' looking for beginning of object key string
我觉得我已经接近解决方案,但我不确定我哪里出错了? withParam 是访问我的列表的正确方法吗?
【问题讨论】:
-
我认为方括号索引符号只对表达式模板有效(
{{= whatever }})。试试这个:{{tasks.get-urls.outputs.result}}
标签: kubernetes argoproj