Модуль доступен только в Deckhouse Enterprise Edition.
Модуль находится в процессе активного развития. Функциональность может существенно измениться.
Адрес
Если шаблон публичных доменов
в кластере %s.example.com
, то в веб-приложение можно зайти по адресу
https://commander.example.com
Схема параметров кластера и ресурса
Есть две формы, которые пользователь собирает с помощью схемы:
- форма параметров кластера (входные параметры шаблона кластера),
- форма ресурса.
Схема определяет объект. Всегда есть возможность редактировать ее в визуальном редакторе формы.
Общедоступные поля
Ввод строки
Строка со значением по умолчанию
- key: something
type: string
title: Некое значение
default: Ввода нет
Необязательный параметр, его разрешено не заполнять (optional
)
- key: something
type: string
title: Некое значение
optional: true
Параметр заполняется один раз при создании ресурса или кластера, и далее его нельзя редактировать
(immutable
)
- key: something
type: string
title: Некое значение
immutable: true
Пароль и пояснение к нему (см format
и description
)
- key: password
type: string
format: password
minLength: 8
span: 2
title: Пароль
description: |
Придумайте нормальный пароль.
Пароль должен содержать то-то и то-то и обновляться каждые N дней.
Ввод числа
Можно задать максимум и необязательность
- key: ordinarySize
type: number
optional: true
max: 13
Можно задать минимум и сделать поле ввода на 4 колонки (максимальная ширина)
- key: eliteSize
type: number
description: In cm
min: 18
span: 4
Можно задать максимум и минимум
- key: elephantSize
type: number
description: In meters
min: 0.7
max: 2.5
span: 1
Ввод предопределенных значений
Простые значения
Выбор из заранее заданных значений. В интерфейсе пользователь видит то значение, которое выбирает
- key: kubeVersion
type: string
title: Версия Kubernetes
enum:
- Automatic
- "1.25"
- "1.26"
- "1.27"
Сложные значения
Выбор из заранее заданных объектных значений. В интерфейсе пользователь видит значение из text
, в
то время как для шаблона технически выбирается value
. Обратите внимание, что в value
доступны
только значения типа object (ключ-значение). Это значение не описывается схемой, структура обьекта
произвольна.
- key: kubeVersion
title: Версия Kubernetes
select:
- text: По умолчанию
value:
version: Automatic
isSupported: true
- text: 1.25 (поддержка закончится в марте)
value:
version: 1.25.8
isSupported: true
- text: 1.26
value:
version: 1.26.4
isSupported: true
- text: 1.27
value:
version: 1.27.3
isSupported: true
- text: 1.28 (экспериментальная)
value:
version: 1.28.0
isSupported: false
Поля, доступные в шаблоне кластера
Выбор одного ресурса из каталога
Каталоги имеют неизменяемое техническое имя (slug). Оно указывается в свойстве catalog
:
- key: slot
catalog: yandex-cloud-slot
title: Слот для кластера
immutable: true
description: >
Выберите букву. Она определит домен, префикс в облаке и IP-адрес. Этот слот
уникален для всех кластеров независимо от шаблона.
Допустим вы выбрали `N`. Шаблон домена будет `%s.X.kube.example.com`. Рекомендуем назвать кластер `dev-X`
Логин и пароль — всегда `admin@example.com`
Выбор нескольких ресурсов
Множественный выбор обеспечивается парой свойств: minItems
и maxItems
. Любое поле можно сделать
списком данных, если указать оба этих поля.
- key: slot
catalog: virtual-machines
title: Воркер-узлы
description: Сколько угодно воркеров, можно редактировать
minItems: 0
maxItems: 10000
Автовыбор
Иногда пользователю неважно, какой ресурс будет выбран из пула ресурсов. Поэтому авто-выбор делает подстановку свободного ресурса автоматически. автоматически выбранный ресурс можно заменить вручную на другой.
- key: publicAddressesForFrontendNodes
title: Публичные адреса
catalog: public-ip-addresses
minItems: 3
maxItems: 3
autoselect: true
Составные части
Разделитель
header
- Тип: string
Единственный тип разделителя — заголовок. Он поддерживает только текст. Других свойств у него нет.
- header: Доступ к образам
Свойства полей ввода
key
- Тип: string
Значение поля ввода нужно идентифицировать в шаблоне. Поэтому всегда должно быть свойство поля key
— это имя поля будет использоваться в шаблоне во время рендеринга конфигурации.
- Обязательное поле
В схеме:
- key: podSubnet
title: Подсеть подов
type: string
В шаблоне:
podSubnet: {{ .podSubnet | quote }}
type
- Тип: string
- Обязательное поле
- Допустимые значения:
string
number
boolean
У значения есть заранее заданный тип: строка, число или булевый.
title
- Тип: string
- Обязательное поле
У поля есть название, передающее смысл. Это одна строка текста. Оно отображается в форме параметров и в аудите.
description
- Тип: string
У поля может быть комментарий, раскрывающий смысл, объясняющий граничные условия, формат записи или исключения. Может быть несколько строк текста.
default
- Тип: зависит от
type
Значение по умолчанию заполняется, если поле отмечено необязательным. Также это значение показано
пользовалю, например, в виде плейсхолдера. Тип значения этого свойства должен совпадать с type
.
format
- Тип: string
У строк может быть формат, который определит особенности отображения и особенности валидации значений.
- Допустимые значения:
password
date-time
url
email
uuid
cuid
cuid2
ulid
emoji
span
- Тип: number
- Допустимые значения:
1
,2
,3
,4
- По умолчанию:
1
Это декоративное свойство, которое указывает, какую ширину занять на экране в долях: от 1 до 4. Поля ввода заполняют форму построчно по горизонтали, как текст. При этом ширина «строки» формы — это 4 элемента.
optional
- Тип: boolean
- По умолчанию:
false
Этот флаг говорит о том, что поле необязательное. Пустое значение будет проигнорировано, и свойство не будет передано в шаблон.
immutable
- Тип: boolean
- По умолчанию:
false
Этот флаг говорит о том, что поле заполняется только один раз, когда появляется во входных параметрах. Это поле становится недоступным для редактирования, если оно было уже заполнено. Это означает, что при обновлении кластера на новый шаблон с immutable-полем, его можно заполнить. Иммутабельность зависит от жизненного цикла параметра в форме, а не кластера.
enum
- Тип: array
Перечисляет допустимые значения, которое принимет поле. Поле представляет собой селектом независимо
для типа значения, выбранного в type
.
selector
- Тип: array
Это более сложный вариант enum
. В нем заложено строковое представление объекта (text
) и
произвольно сложное значение в value
, которое будет выбрано для шаблона. Текст указывают для
людей, а значения — для шаблона.
Пример:
- key: kubeVersion
title: Версия Kubernetes
select:
- text: По умолчанию
value:
version: Automatic
isSupported: true
- text: 1.25 (поддержка закончится в марте)
value:
version: 1.25.8
isSupported: true
- text: 1.26
value:
version: 1.26.4
isSupported: true
- text: 1.27
value:
version: 1.27.3
isSupported: true
- text: 1.28 (экспериментальная)
value:
version: 1.28.0
isSupported: false
catalog
- Тип: string
Выбор одного значения из каталога ресурсов. В значение списать slug каталога ресурсов. Поле type
указывать не нужно, потому что фактически это object
, схема которого описана в указанном каталоге.
Чтобы выбрать несколко значений (и получить список ресурсов на входе в шаблон), используйте
minItems
и maxItems
.
Пример:
- key: workerMachine
title: Виртуальная машина
catalog: virtual-machines
- key: workerMachines
title: Виртуальные машины
catalog: virtual-machines
minItems: 1
maxItems: 10
maxLength
(для строки)
- Тип: number
Для type: string
это поле добавляет валидацию на длину строки
minItems
, maxItems
(для выбора ресурсов)
- Тип: number
Валидация количества элементов выбранных из каталога ресурсов. Эта пара полей необязательна, но использовать их порознь запрещено: если использовать, то оба сразу.
autoselect
(для выбора ресурсов)
- Тип: boolean
- По умолчанию:
false
Иногда пользователю не столь важно, какой именно ресурс будет выбран. Тогда форма выбирает сама за пользователя доступный ресурсы. Но у пользователя при этом всегда есть возможность их изменить.
Пример:
- key: publicAddressesForFrontendNodes
title: Публичные адреса
catalog: public-ip-addresses
minItems: 3
maxItems: 3
autoselect: true
identifier
- Тип: boolean
- По умолчанию: зависит от заполнения
Ресурс — это плоский объект. У ресурса есть компактное представление в одну строку, составленное из
значений полей ресурса (без ключей). Значения ресурса указаны через запятую в порядке, заданной
схемой. Это компактное представление можно видеть как в перечне ресурсов внутри каталога, так и в
выборе ресурса в форме кластера (выпадающие списки). Чтобы выбрать ограниченный набор полей для
компактного отображения ресурса, используйте свойство identifier
.
Например, рассмотрим ресурс и его возможные варианты схемы
## Ресурс
login: anatoly
password: E3xE#%DH@hW
age: 42
Использовать все поля | Спрятать | Показывать явно | |
---|---|---|---|
Схема |
|
|
|
Представление |
|
|
|
Поведение |
По умолчанию для всех полей |
По умолчанию для всех полей |
Если явно указано |
unique
- Тип: boolean
- По умолчанию:
false
Этим флагом помечаются поля ресурсов, которые должны быть уникальными в рамках калалога. Неуникальные данные запрещено создавать, восстанавливать из архива или импортировать.
Также этим флагом помечаются поля кластера, которые должны быть уникальными среди всех кластеров. Неуникальные данные запрещено сохранять: создание и редактировать кластера завершится с ошибкой валидации.
Выбор из каталога для кластеров уникален настолько, насколько уникальны ресурсы. Выбор из каталога не требуется отмечать этим флагом.
- key: subnetCIDR
type: string
title: CIDR подсети
unique: true