创建自定义 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 配置,使用模板工具。
每当使用 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 配置,使用模板工具。