unip-controller/deploy/crd/experiment-pipeline.yaml

392 lines
21 KiB
YAML
Raw Normal View History

2025-01-29 13:13:51 +00:00
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
# имя, должно соответствовать спецификации ниже, и быть в формате <plural>.<group>
name: experimentpipelines.unified-platform.cs.hse.ru
spec:
# имя группы, используемое в REST API: /apis/<group>/<version>
group: unified-platform.cs.hse.ru
# Список версий, поддерживаемых этим определением CustomResourceDefinition
versions:
- name: v1
# Каждая версия может быть влкючена или выключена при помощи served флага.
served: true
# Только одна версия может быть отмечена как storage версия.
storage: true
schema:
openAPIV3Schema:
type: object
description: ExperimentPipeline является определением ресурса ExperimentPipeline.
ExperimentPipeline - пайплайн, этапы которого выполняются как контейнеры.
properties:
spec:
type: object
description: ExperimentPipelineSpec определяет пайплайн.
Содержит спецификацию этапов с входными и выходными переменными, подсоединенных ящиков.
properties:
vars:
type: array
description: Список всех переменных пайплайна.
items:
maxItems: 32
type: object
description: Определение переменной.
properties:
name:
type: string
description: имя переменной
path:
type: string
maxLength: 255
description: Путь внутри контейнера, куда монтируется значение
переменной как файл или директория с файлами.
Может быть не задано, тогда используется путь,
заданный в конфигурации присоединенного ящика по умолчанию.
mountFrom:
type: object
description: Определение конфигурации монтирования файлов входной переменной.
Если не задано, то используется конфигурация присоединенного ящика по умолчанию.
properties:
box:
type: object
description: Настройки монтирования файлов входной переменной с помощью
присоединенных ящиков.
properties:
name:
type: string
description: Имя присоединенного ящика.
boxPath:
type: string
description: Путь внутри присоединенного ящика.
Если атрибут задан, то переменная ассоциирована с данными в ящике,
ее значение нельзя задать при запуске пайплайна.
required: [ "name" ]
required: [ "name" ]
stages:
type: array
description: Список этапов пайплайна.
items:
maxItems: 32
type: object
description: Определение этапа пайплайна.
properties:
name:
type: string
description: Имя этапа пайплайна.
image:
type: object
description: Определяет используемый образ для этапа.
properties:
existingImageName:
description: Имя существующего образа.
type: string
oneOf:
- properties:
existingImageName: {}
required: ["existingImageName"] # may be newImage
inputs:
type: array
description: Список входных переменных этапа.
items:
maxItems: 32
type: object
description: Определение входной переменной этапа.
properties:
name:
type: string
description: Имя входной переменной.
path:
type: string
maxLength: 255
description: Префикс пути внутри контейнера, куда монтируется значение
входной переменной как файл или директория с файлами.
Может быть не задано, тогда используется путь,
заданный в конфигурации присоединенного ящика по умолчанию.
mountFrom:
type: object
description: Определение конфигурации монтирования файлов входной переменной.
Если не задано, то используется конфигурация присоединенного ящика по умолчанию.
properties:
box:
type: object
description: Настройки монтирования файлов входной переменной с помощью
присоединенных ящиков.
properties:
name:
type: string
description: Имя присоединенного ящика.
boxPath:
type: string
description: Путь внутри присоединенного ящика.
Если атрибут задан, то переменная ассоциирована с данными в ящике,
ее значение нельзя задать при запуске пайплайна.
required: ["name"]
required: ["name"]
outputs:
type: array
description: Список выходных переменных этапа.
items:
maxItems: 32
type: object
description: Определение выходной переменной этапа.
properties:
name:
type: string
description: Имя выходной переменной.
path:
type: string
maxLength: 255
description: Префикс пути внутри контейнера, куда монтируется значение
выходной переменной как директория с файлами.
Может быть не задано, тогда используется путь,
заданный в конфигурации присоединенного ящика по умолчанию.
mountFrom:
type: object
description: Определение конфигурации монтирования файлов выходной переменной.
Если не задано, то используется конфигурация присоединенного ящика по умолчанию.
properties:
box:
type: object
description: Настройки монтирования файлов выходной переменной с помощью
присоединенных ящиков.
properties:
name:
type: string
description: Имя присоединенного ящика.
required: ["name"]
required: ["name"]
entryPoint:
type: object
description: Определяет параметры точки входа для старта этапа.
properties:
cmd:
type: array
description: Команда запуска этапа.
items:
maxItems: 32
type: string
required: ["cmd"]
envFrom:
type: array
description: Определяет список ссылок на Secret и ConfigMap,
из которых добавляются переменные окружения.
items:
maxItems: 32
type: object
properties:
configMapRef:
type: object
properties:
name:
type: string
required: ["name"]
secretRef:
type: object
properties:
name:
type: string
required: ["name"]
oneOf:
- properties:
configMapRef: {}
required: ["configMapRef"]
- properties:
secretRef: {}
required: ["secretRef"]
configFrom:
type: array
description: Определяет список подключаемых как файлов Secret и ConfigMap
items:
maxItems: 32
type: object
properties:
path:
type: string
configMap:
type: object
properties:
name:
type: string
items:
type: array
items:
maxItems: 32
type: object
properties:
key:
type: string
path:
type: string
required: ["key", "path"]
required: ["name"]
secret:
type: object
properties:
name:
type: string
items:
type: array
items:
maxItems: 32
type: object
properties:
key:
type: string
path:
type: string
required: ["key", "path"]
required: ["name"]
oneOf:
- properties:
path: {}
configMap: {}
required: ["path", "configMap"]
- properties:
path: {}
secret: {}
required: ["path", "secret"]
env:
type: array
description: Определяет список переменных окружения.
items:
maxItems: 32
type: object
properties:
name:
type: string
value:
type: string
required: ["name", "value"]
resourceLimits:
type: object
description: Определяет ограничения по CPU и оперативной памяти для этапа пайплайна.
properties:
cpu:
type: string
description: Ограничение по использованию CPU в формате
<числовое значение><единица измерения>.
Поддерживаются все единицы измерения ресурсов Kubernetes.
memory:
type: string
description: Ограничение по использованию оперативной памяти в формате
<числовое значение><единица измерения>.
Поддерживаются все единицы измерения ресурсов Kubernetes.
gpu:
type: string
description: Ограничение по использованию ресурсов графических ускорителей.
Поддерживается формат <числовое значение> для задания числа используемых
графических ускорителей узла.
required: ["image", "inputs", "outputs"]
connectedBoxes:
type: array
description: Определяет присоединенные ящики данных - ресурсы вида DataBox.
items:
maxItems: 32
type: object
properties:
name:
type: string
maxLength: 255
description: Имя присоединенного ящика.
path:
type: string
maxLength: 255
description: Путь внутри контейнера. Смысл зависит от типа присоединения ящика.
Для MountS3Box - директория, используемая для монтирования S3 ящика.
default:
type: boolean
default: false
mountS3Box:
type: object
description: Определение присоединения S3 ящика типа "монтирование".
properties:
s3BoxName:
type: string
description: Имя ящика.
required: ["s3BoxName"]
mountDataset:
type: object
description: Определение присоединения ящика датасета типа "монтирование".
properties:
datasetReferenceName:
type: string
description: Имя ящика-ссылки на датасет.
required: ["datasetReferenceName"]
required: ["name"]
oneOf:
- properties:
mountS3Box: {}
required: ["mountS3Box"]
- properties:
mountDataset: {}
required: ["mountDataset"]
continueWith:
type: object
description: Определяет пайплайн, который должен быть запущен после выполнения текущего
папйлайна.
properties:
name:
type: string
description: Имя пайплайна.
maxLength: 255
required: ["name"]
# oneOf:
# - properties:
# simplePipeline: {}
# required: ["simplePipeline"]
# - properties:
# mldevPipeline: {}
# required: ["mldevPipeline"]
required: ["stages", "connectedBoxes"]
status:
x-kubernetes-preserve-unknown-fields: true
type: object
properties:
conditions:
type: array
items:
maxItems: 32
type: object
properties:
type:
type: string
conditionStatus:
type: string
observedGeneration:
type: integer
lastTransitionTime:
type: string
reason:
type: string
message:
type: string
required: [ "type", "conditionStatus", "lastTransitionTime", "reason", "message"]
validation:
type: object
properties:
validationPodName:
type: string
nullable: true
default: {}
subresources:
status: {}
# Namespaced or Cluster
scope: Namespaced
names:
# имя во множественном числе, используемое в URL: /apis/<group>/<version>/<plural>
plural: experimentpipelines
# имя в единственном числе, используемое в CLI и для отображения
singular: experimentpipeline
# вид, обычно CamelCased в единственном числе, указывается в манифестах ресурсов
kind: ExperimentPipeline
# короткие имена для использования в операциях с ресурсами в CLI
shortNames:
- exppipeline
- exppipelines
- exppln
- expplns
categories:
- all