argo-workflows - 创建自定义 Argo 工件类型

标签 argo-workflows

每当使用 S3 工件时,都需要以下声明:

s3:
  endpoint: s3.amazonaws.com
  bucket: "{{workflow.parameters.input-s3-bucket}}"
  key: "{{workflow.parameters.input-s3-path}}/scripts/{{inputs.parameters.type}}.xml"
  accessKeySecret:
    name: s3-access-user-creds
    key: accessKeySecret
  secretKeySecret:
    name: s3-access-user-creds
    key: secretKeySecret

如果可以将其抽象为如下内容,将会很有帮助:

custom-s3:
  bucket: "{{workflow.parameters.input-s3-bucket}}"
  key: "{{workflow.parameters.input-s3-path}}/scripts/{{inputs.parameters.type}}.xml"

有没有办法在 Argo 中进行这种自定义定义以减少样板代码?

最佳答案

对于给定的 Argo 安装,您可以 set a default artifact repository在工作流 Controller 的配置图中。这将允许您仅指定key(假设您在默认配置中设置了其他所有内容 - 如果没有为默认定义所有内容,您将需要指定更多内容)。

不幸的是,这仅在您仅使用一种 S3 配置时才有效。如果您需要多种配置,减少样板文件将会更加困难。

回答您的具体问题:不完全是。您无法创建自定义 some-keyname(例如 custom-s3)作为 artifacts 数组的成员。 YAML 的确切格式在 Argo 的 Workflow Custom Resource Definition 中定义。 。如果您的工作流程 YAML 与该规范不匹配,它将被拒绝。

但是,在将 YAML 安装到集群中之前,您可以使用外部模板工具来填充样板文件。我之前曾使用 Helm 通过一组 S3 配置来完成此操作。最简单的是,您可以使用诸如 sed 之类的东西。

tl;dr - 对于一个 S3 配置,使用默认工件配置;对于多个 S3 配置,请使用模板工具。

关于argo-workflows - 创建自定义 Argo 工件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64811799/

相关文章:

machine-learning - 如何将一个节点的输出作为输入参数传递到 Argo 工作流 DAG 中的另一个节点

kubernetes - 如何设置RBAC让用户在特定命名空间中提交Argo工作流程?

Kubernetes Argo 提交参数的步骤

argo-workflows - 如何获得子工作流程步骤/任务输出?

kubernetes - Argo 工作流中的动态 "Fan In"

kubernetes - 子字符串匹配条件时的 Argo 工作流程

argo-workflows - 在 Argo 中设置日期格式

kubernetes - Argo Workflows 信号量值为 0