unip-controller/deploy/crd/experiment-pipeline.yaml
2025-04-15 20:56:15 +03:00

392 lines
No EOL
21 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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