gpt4 book ai didi

kubernetes - 如何使用 withParam 引用在 DAG 外部创建的 sys.stdout 以在 DAG 内部使用?

转载 作者:行者123 更新时间:2023-12-04 08:00:36 25 4
gpt4 key购买 nike

我正在使用 Argo 工作流程。

我的入口点中有一个 DAG 步骤,它遵循几个正常步骤。其中一个步骤执行sys.stdout。进入 DAG 步骤后,我希望某些任务引用 sys.stdout 的结果。

我知道,当工作流程从一个步骤转到下一个步骤(没有 DAG)时,如果我们想引用 sys.stdout,我们可以这样做 {{steps.step-名称.输出.结果}}。不过,这在 DAG 任务内部不起作用。

如何在 DAG 任务中引用 sys.stdout,以便将其与 withParam 一起使用?

编辑:

工作流程如下所示:

  templates:
- name: the-entrypoint
steps:
- - name: step01
template: first-step
- - name: step02
template: second-step
- - name: step03
template: third-step
- - name: step04-the-dag-step
template: fourth-step

一般来说,如果third-step执行sys.stdout,我们可以通过{{steps.step03.outputs.result}}第四步中。但是,在本例中,fourth-step 是一个 DAG,如果其中一个 DAG 任务想要使用 sys.stdout,请调用 {{steps.step03 .outputs.result}} 作为 DAG 任务内部的参数/参数会引发错误。

问题是如何在fourth-step DAG任务中正确引用third-step生成的sys.stdout

最佳答案

有关模板输出的一些背景知识

Argo Workflows 支持多种不同的 types of templates .

每种类型的模板都支持模板内不同类型的引用。

steps内template,您可以通过 steps.step-name.outputs.parameters.param-name 访问其他步骤的输出参数(对于命名参数)或 steps.step-name.outputs.result (对于 scriptcontainer 模板的标准输出)。

示例(see full Workflow):

  - name: output-parameter
steps:
- - name: generate-parameter
template: whalesay
- - name: consume-parameter
template: print-message
arguments:
parameters:
- name: message
value: "{{steps.generate-parameter.outputs.parameters.hello-param}}"

dag内template,您可以使用类似的语法访问各种任务的输出,只需使用 tasks.而不是steps. .

示例(see full Workflow):

    - name: main
dag:
tasks:
- name: flip-coin
template: flip-coin
- name: heads
depends: flip-coin
template: heads
when: "{{tasks.flip-coin.outputs.result}} == heads"
- name: tails
depends: flip-coin
template: tails
when: "{{tasks.flip-coin.outputs.result}} == tails"

container内或script模板,您只能访问该模板的输入*。您不能直接从容器或脚本模板访问步骤或任务模板的步骤或任务的输出。

引用 DAG 的步骤输出

如上所述,DAG 模板无法直接引用 steps 的步骤输出。模板。但steps内的一步模板可以将步骤输出传递到 DAG 模板

在您的示例中,它看起来像这样:

  templates:
- name: the-entrypoint
steps:
- - name: step01
template: first-step
- - name: step02
template: second-step
- - name: step03
template: third-step
- - name: step04-the-dag-step
template: fourth-step
arguments:
parameters:
- name: some-param
value: "{{steps.step03.outputs.result}}"
- name: fourth-step
inputs:
parameters:
- name: some-param
dag:
tasks:
# use the input parameter in the fourth-step template with "{{inputs.parameters.some-param}}"

tl;博士

steps.tasks.变量应该在单个步骤或任务模板中引用,但它们可以在模板之间显式传递。如果您需要使用 DAG 中某个步骤的输出,请直接将该输出作为调用 DAG 的参数传递。

在您的例子中,DAG 模板是作为四个步骤中的最后一个步骤调用的,因此您将在此处传递参数。

* 好的,您还可以访问 various other variables从内部 scriptcontainer模板,但您无权访问在另一个模板中作为内部变量的变量。

关于kubernetes - 如何使用 withParam 引用在 DAG 外部创建的 sys.stdout 以在 DAG 内部使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66499113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com