创建自定义 Argo 工件类型

Create custom Argo artifact type

每当使用 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 在工作流控制器的配置映射中。这将允许您仅指定 key(假设您在默认配置中设置了所有其他内容 - 如果不是所有内容都为默认定义,则您需要指定更多内容)。

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

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

但是,您可以使用外部模板工具来填充样板文件,然后 YAML 安装到您的集群中。我之前使用 Helm 对​​一组 S3 配置执行此操作。最简单的,你可以使用像 sed.

这样的东西

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