Создание пользовательского типа артефакта Argo

#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, чтобы уменьшить шаблонность?

Ответ №1:

Для данной установки Argo вы можете установить репозиторий артефактов по умолчанию в configmap контроллера рабочего процесса. Это позволит вам указать только key (при условии, что вы установили все остальное в конфигурации по умолчанию — если не все определено по умолчанию, вам нужно будет указать больше вещей).

К сожалению, это сработает, только если вы используете только одну конфигурацию S3. Если вам нужно несколько конфигураций, сократить шаблонность будет сложнее.

В ответ на ваш конкретный вопрос: не совсем. Вы не можете создать пользовательский some-keyname (подобный custom-s3 ) в качестве члена artifacts массива. Точный формат YAML определен в определении пользовательского ресурса рабочего процесса Argo. Если ваш рабочий процесс YAML не соответствует этой спецификации, он будет отклонен.

Однако вы можете использовать внешние инструменты создания шаблонов для заполнения шаблона до установки YAML в вашем кластере. Я уже использовал Helm раньше, чтобы сделать именно это с коллекцией конфигураций S3. В самом простом случае вы могли бы использовать что-то вроде sed .

tl; dr — для одной конфигурации S3 используйте конфигурацию артефакта по умолчанию; для нескольких конфигураций S3 используйте инструмент создания шаблонов.