unip-controller/deploy/crd/api-component.yaml

328 lines
20 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: 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