328 lines
20 KiB
YAML
328 lines
20 KiB
YAML
|
|
apiVersion: apiextensions.k8s.io/v1
|
|||
|
|
kind: CustomResourceDefinition
|
|||
|
|
metadata:
|
|||
|
|
# имя, должно соответствовать спецификации ниже, и быть в формате <plural>.<group>
|
|||
|
|
name: apicomponents.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: APIComponent является определением ресурса APIComponent.
|
|||
|
|
APIComponent - компонент, предоставляющий интерфейс для внешнего доступа к приложению.
|
|||
|
|
properties:
|
|||
|
|
spec:
|
|||
|
|
type: object
|
|||
|
|
description: APIComponent определяет желаемое состояние API компонента.
|
|||
|
|
Содержит спецификацию внешних интерфейсов.
|
|||
|
|
properties:
|
|||
|
|
published:
|
|||
|
|
type: boolean
|
|||
|
|
default: true
|
|||
|
|
description: Published определяет, открыт или закрыт доступ
|
|||
|
|
к интерфейсу APIComponent.
|
|||
|
|
mlComponent:
|
|||
|
|
type: object
|
|||
|
|
description: MLComponent определяет параметры интерфейса к сервису
|
|||
|
|
MLComponent.
|
|||
|
|
properties:
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя ресурса MLComponent.
|
|||
|
|
required: ["name"]
|
|||
|
|
experimentPipeline:
|
|||
|
|
type: object
|
|||
|
|
description: ExperimentPipeline определяет параметры интерфейса к сервису пайплайна.
|
|||
|
|
properties:
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя ресурса ExperimentPipeline.
|
|||
|
|
required: ["name"]
|
|||
|
|
files:
|
|||
|
|
type: object
|
|||
|
|
description: Files определяет параметры интерфейса к сервису Files.
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
default: false
|
|||
|
|
description: Enabled определяет, открыт или закрыт доступ к интерфейсу Files.
|
|||
|
|
required: ["enabled"]
|
|||
|
|
pipelines:
|
|||
|
|
type: object
|
|||
|
|
description: Pipelines определяет параметры интерфейса к сервису Pipelines.
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
default: false
|
|||
|
|
description: Enabled определяет, открыт или закрыт доступ к интерфейсу Pipelines.
|
|||
|
|
required: ["enabled"]
|
|||
|
|
restfulApi:
|
|||
|
|
type: object
|
|||
|
|
description: RESTfulAPI определяет параметры REST API к предоставляемым сервисам.
|
|||
|
|
properties:
|
|||
|
|
path:
|
|||
|
|
type: string
|
|||
|
|
description: Путь, определяющий часть адреса предоставляемого интерфейса.
|
|||
|
|
auth:
|
|||
|
|
type: object
|
|||
|
|
description: Auth определяет параметры аутентификции.
|
|||
|
|
properties:
|
|||
|
|
basic:
|
|||
|
|
type: object
|
|||
|
|
description: Basic определяет параметры базовой аутентификации.
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
description: Определяет, включена ли базовая аутентификация.
|
|||
|
|
Считается, что если атрибут не задан, то базовая аутентификация включена.
|
|||
|
|
credentials:
|
|||
|
|
type: string
|
|||
|
|
description: Имя секрета с реквизитами базовой аутентификации
|
|||
|
|
в формате файла htpasswd.
|
|||
|
|
oidc:
|
|||
|
|
type: object
|
|||
|
|
description: OIDC определяет параметры OIDC аутентификации.
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
description: Определяет, включена ли OIDC аутентификация.
|
|||
|
|
Считается, что если атрибут не задан, то OIDC аутентификация включена.
|
|||
|
|
groups:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет разрешенные группы.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
roles:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет разрешенные роли.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
identityPassThrough:
|
|||
|
|
type: boolean
|
|||
|
|
default: true
|
|||
|
|
description: Определяет, передавать ли идентичность аутентифицированного пользователя
|
|||
|
|
в нижестоящий сервис.
|
|||
|
|
required: ["identityPassThrough"]
|
|||
|
|
anyOf:
|
|||
|
|
- properties:
|
|||
|
|
basic: {}
|
|||
|
|
required: ["basic"]
|
|||
|
|
- properties:
|
|||
|
|
oidc: {}
|
|||
|
|
required: ["oidc"]
|
|||
|
|
cors:
|
|||
|
|
type: object
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
description: Определяет, применяются ли настройки, заданные в спецификации ресурса.
|
|||
|
|
allowMethods:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет настройку CORS Allow Methods.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
allowHeaders:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет настройку CORS Allow Headers.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
exposeHeaders:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет настройку CORS Expose Headers.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
allowOrigin:
|
|||
|
|
type: array
|
|||
|
|
description: Определяет настройку CORS Allow Origin.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: string
|
|||
|
|
maxLength: 255
|
|||
|
|
maxAge:
|
|||
|
|
type: integer
|
|||
|
|
required: ["auth"]
|
|||
|
|
apiSpec:
|
|||
|
|
type: object
|
|||
|
|
description: Спецификация API для компонента, к которому APIComponent предоставляет интерфейс.
|
|||
|
|
properties:
|
|||
|
|
inputs:
|
|||
|
|
type: array
|
|||
|
|
description: Список входных переменных.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: object
|
|||
|
|
description: Определение входной переменной.
|
|||
|
|
properties:
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя входной переменной.
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
maxLength: 1000
|
|||
|
|
description: Описание входной переменной.
|
|||
|
|
type:
|
|||
|
|
type: object
|
|||
|
|
description: Определение типа входной переменной.
|
|||
|
|
Тип определяется только для входных переменных, значения которых
|
|||
|
|
передаются через API.
|
|||
|
|
properties:
|
|||
|
|
datatypes:
|
|||
|
|
type: array
|
|||
|
|
description: Список допустимых типов значений входной переменной.
|
|||
|
|
Тип значения используется при передаче значений входных переменных
|
|||
|
|
через API.
|
|||
|
|
Включает файловые типы 'FILE', 'WEBSITE'
|
|||
|
|
и объектные типы, такие как 'FP32', 'str', 'dict'.
|
|||
|
|
|
|||
|
|
В качестве значения файлового типа могут быть переданы локации файла или
|
|||
|
|
файловой группы.
|
|||
|
|
|
|||
|
|
Если передано значение объектного типа, то оно может быть сохранено в файл,
|
|||
|
|
(поведение зависит от типа компонента, который реализует интерфейс).
|
|||
|
|
|
|||
|
|
Тип содержимого файла (contentType) предопределен для типа 'WEBSITE' и всех
|
|||
|
|
объектных типов значения входной переменной.
|
|||
|
|
|
|||
|
|
Тип значения 'FILE' является допустимым, даже если он не задан в спецификации API.
|
|||
|
|
|
|||
|
|
Если атрибут datatypes не определен в спецификации API,
|
|||
|
|
то допустимыми являются все типы datatypes.
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
maxItems: 16
|
|||
|
|
contentTypes:
|
|||
|
|
type: array
|
|||
|
|
description: Список допустимых типов содержимого файла (или файлов),
|
|||
|
|
в котором содержится значение входной переменной.
|
|||
|
|
Типами содержимого могут быть любые MIME типы.
|
|||
|
|
|
|||
|
|
Тип содержимого используется при передаче значений входных переменных
|
|||
|
|
через API.
|
|||
|
|
|
|||
|
|
Если при запуске передано значение объектного типа,
|
|||
|
|
то оно может быть сохранено в файл,
|
|||
|
|
(поведение зависит от типа компонента, который реализует интерфейс).
|
|||
|
|
|
|||
|
|
Тип содержимого файла (contentType) предопределен для типа 'WEBSITE' и всех
|
|||
|
|
объектных типов значения входной переменной, поэтому может не передаваться при вызове.
|
|||
|
|
|
|||
|
|
Если при вызове передано значение файлового типа (datatype == 'FILE'),
|
|||
|
|
то тип содержимого файла может или должен быть передан,
|
|||
|
|
(поведение зависит от типа компонента, который реализует интерфейс).
|
|||
|
|
|
|||
|
|
Если атрибут contentTypes не определен в спецификации API,
|
|||
|
|
то допустимыми являются любые типы содержимого.
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
maxItems: 32
|
|||
|
|
required:
|
|||
|
|
type: boolean
|
|||
|
|
default: true
|
|||
|
|
description: Является ли входная переменная обязательной.
|
|||
|
|
required: [ "name" ]
|
|||
|
|
outputs:
|
|||
|
|
type: array
|
|||
|
|
description: Список выходных переменных.
|
|||
|
|
items:
|
|||
|
|
maxItems: 32
|
|||
|
|
type: object
|
|||
|
|
description: Определение выходной переменной.
|
|||
|
|
properties:
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
description: Имя выходной переменной.
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
maxLength: 1000
|
|||
|
|
description: Описание выходной переменной.
|
|||
|
|
type:
|
|||
|
|
type: object
|
|||
|
|
description: Определение типа выходной переменной.
|
|||
|
|
properties:
|
|||
|
|
datatypes:
|
|||
|
|
type: array
|
|||
|
|
description: Список допустимых типов значений выходной переменной.
|
|||
|
|
Тип значения используется для указания через API ожидаемого типа
|
|||
|
|
значений выходной переменной.
|
|||
|
|
|
|||
|
|
Включает файловые типы 'FILE', 'WEBSITE'.
|
|||
|
|
|
|||
|
|
Тип значения 'FILE' является допустимым, даже если он не задан в спецификации API.
|
|||
|
|
|
|||
|
|
Если атрибут datatypes не определен в спецификации API,
|
|||
|
|
то допустимыми являются все выходные типы datatypes.
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
maxItems: 16
|
|||
|
|
contentTypes:
|
|||
|
|
type: array
|
|||
|
|
description: Список допустимых типов содержимого файлов,
|
|||
|
|
в которых содержится значение выходной переменной.
|
|||
|
|
Типами содержимого могут быть любые MIME типы.
|
|||
|
|
|
|||
|
|
Тип содержимого используется для указания через API ожидаемого типа содержимого
|
|||
|
|
выходной переменной.
|
|||
|
|
|
|||
|
|
Если атрибут contentTypes не определен в спецификации API,
|
|||
|
|
то допустимыми являются любые типы содержимого.
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
maxItems: 32
|
|||
|
|
required: ["name"]
|
|||
|
|
allOf:
|
|||
|
|
- oneOf:
|
|||
|
|
- properties:
|
|||
|
|
mlComponent: {}
|
|||
|
|
required: ["mlComponent"]
|
|||
|
|
- properties:
|
|||
|
|
files: {}
|
|||
|
|
required: ["files"]
|
|||
|
|
- properties:
|
|||
|
|
pipelines: {}
|
|||
|
|
required: ["pipelines"]
|
|||
|
|
- properties:
|
|||
|
|
experimentPipeline: {}
|
|||
|
|
required: ["experimentPipeline"]
|
|||
|
|
- oneOf:
|
|||
|
|
- properties:
|
|||
|
|
restfulApi: {}
|
|||
|
|
required: ["restfulApi"]
|
|||
|
|
required: ["published"]
|
|||
|
|
status:
|
|||
|
|
x-kubernetes-preserve-unknown-fields: true
|
|||
|
|
type: object
|
|||
|
|
subresources:
|
|||
|
|
status: {}
|
|||
|
|
# Namespaced or Cluster
|
|||
|
|
scope: Namespaced
|
|||
|
|
names:
|
|||
|
|
# имя во множественном числе, используемое в URL: /apis/<group>/<version>/<plural>
|
|||
|
|
plural: apicomponents
|
|||
|
|
# имя в единственном числе, используемое в CLI и для отображения
|
|||
|
|
singular: apicomponent
|
|||
|
|
# вид, обычно CamelCased в единственном числе, указывается в манифестах ресурсов
|
|||
|
|
kind: APIComponent
|
|||
|
|
# короткие имена для использования в операциях с ресурсами в CLI
|
|||
|
|
shortNames:
|
|||
|
|
- apicmp
|
|||
|
|
- apicmps
|
|||
|
|
categories:
|
|||
|
|
- all
|