问题描述
无论何时使用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安装,您可以在工作流程控制器的configmap中set a default artifact repository。这将允许您仅指定key
(假设您在默认配置中设置了其他所有内容-如果未为默认配置定义所有内容,则需要指定更多内容)。
不幸的是,这仅在您仅使用一个S3配置时才有效。如果需要多种配置,减少样板将更加困难。
针对您的特定问题:不完全是。您无法创建自定义some-keyname
(例如custom-s3
)作为artifacts
数组的成员。 YAML的确切格式在Argo的Workflow Custom Resource Definition中定义。如果您的Workflow YAML与该规范不匹配,它将被拒绝。
但是,可以在群集中安装YAML之前,使用外部模板工具来填充样板 。我以前使用Helm来完成一系列S3配置的操作。最简单的说,您可以使用类似sed
的东西。
tl; dr-对于一个S3配置,请使用默认工件配置;对于多个S3配置,请使用模板工具。