argo-workflows - 创建自定义 Argo 工件类型
问题描述
每当使用 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 中设置默认工件存储库。这将允许您仅指定key
(假设您在默认配置中设置了其他所有内容 - 如果没有为默认配置定义所有内容,您将需要指定更多内容)。
不幸的是,这只有在您只使用一个 S3 配置时才有效。如果您需要多种配置,减少样板文件将更加困难。
针对您的具体问题:不完全是。您不能创建自定义some-keyname
(如custom-s3
)作为artifacts
数组的成员。YAML 的确切格式在 Argo 的Workflow Custom Resource Definition中定义。如果您的 Workflow YAML 与该规范不匹配,它将被拒绝。
但是,您可以在将 YAML 安装到集群中之前使用外部模板工具来填充样板文件。我之前使用 Helm 来通过一组 S3 配置来做到这一点。在最简单的情况下,您可以使用类似sed
.
tl;dr - 对于一个 S3 配置,使用默认工件配置;对于多个 S3 配置,请使用模板工具。
推荐阅读
- javascript - 如果选择了超过 5 个单选框,则显示 javascript 消息
- button - MSO 按钮背景颜色
- javascript - 我如何能够将数组存储在我的 Discord Bot 的文本文件中?
- header - 由于固定的标题,CSS 正文边框不会一直到页面顶部
- node.js - 当文件已经从客户端上传为 multipart/form-data 时,如何从 node.js 将文件作为 multipart/form-data 发送?
- angular - “禁用”被定义为“CanColor & CanDisableRipple & HasTabIndex & MatChipBase”类中的一个属性,但在“MatChip”中作为一个访问权限被覆盖
- google-cloud-ml - 使用 AutoML Vision 进行 Web 检测
- javascript - 如何使徽章通知仅针对特定选项卡显示
- android - Android 导航库导航图中的可重用动画
- javascript - TypeError:postHandleFormChange 不是函数错误