Процесс установки

Инсталляция кластера управления через GUI/CLI, микрокластер, траблшутинг.

Установка выполняется с рабочего места администратора утилитой shtil. В открытом контуре машина shtil и узлы создаваемого кластера должны иметь сетевой доступ к официальному реестру образов r.shturval.tech (HTTPS, порт 443).

Перед установкой сверьтесь с требованиями для открытого контура, с подготовкой к установке (машина shtil, узлы, SSH, реестр образов) и с применимыми сценариями в схемах межсетевого взаимодействия. Про общий состав реестра образов см. также сервисы репозитория.

Доступные сценарии установки:

  • с GUI — install-gui, затем мастер установки в браузере;
  • с флагами — install-cli и подкоманда провайдера;
  • с YAML — install-cli … --yaml-path / -f.

Установка с GUI

Установка с GUI состоит из двух этапов: сначала shtil создаёт локальный установочный кластер, затем администратор настраивает кластер управления в веб-мастере установки.

Команда install-gui также доступна через синонимы create-cluster и create.

Этап 1. Запустите локальный установочный кластер

В открытом контуре обязателен флаг --bootstrap-license1. По умолчанию образы временного установочного кластера загружаются с r.shturval.tech.

./shtil install-gui \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ"

С заданным паролем2 admin:

./shtil install-gui \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --password="ПАРОЛЬ-ADMIN"

1 Если лицензия содержит специальные символы ($, <, >, *, &, ?, /, ), заключите её в одинарные кавычки.

2 Пароль в --password должен быть не короче 8 символов и содержать строчную букву, заглавную букву и цифру.

Основные параметры запуска локального установщика:

ПараметрОписание
--bootstrap-licenseЛицензия платформы. Обязательна для install-gui. Если лицензия содержит специальные символы ($, <, >, *, &, ?, /, ), заключите её в одинарные кавычки.
--bootstrap-registryАдрес реестра образов; по умолчанию r.shturval.tech
--bootstrap-insecureОтключить проверку TLS при обращении к реестру образов
--bootstrap-registry-certs-dirКаталог с доверенными сертификатами реестра
--bootstrap-kubeconfig-pathПуть к kubeconfig локального установочного кластера
--passwordПароль администратора платформы для входа в веб-интерфейс
--name, -nИмя локального установочного кластера (подсказка по умолчанию в справке: shturval-installer)
--wait, --retry, --debugОжидание Control Plane узла локального кластера, число повторов, режим сохранения контейнера при ошибке
-v, --verbosityДетализация лога CLI (до 10; см. ./shtil --help)

После успешного запуска в консоль выводятся данные учётной записи администратора и URL мастера установки в графическом интерфейсе. Учётные данные по умолчанию сохраняются в user.conf в каталоге данных установщика (~/.shturval/installer или /tmp/shturval/installer). Сохраните логин и пароль — они понадобятся для входа в постоянный кластер.

Браузер для веб-интерфейса — см. требования к браузерам.

Если shtil install-gui запускается на удалённой Linux-машине, откройте мастер установки в браузере по IP-адресу или hostname этой машины, без предварительного проброса портов, например, http://10.11.12.13:30080/.

Переход по hostname возможен только при условии, что в DNS настроен резолвинг доменного имени на IP-адрес.

Жизненный цикл локального установщика: кнопка «Отменить инсталляцию» в мастере установки сбрасывает заполненную форму создания кластера и возвращает к экрану инициализации; обновление страницы без отмены данные полей обычно не сбрасывает. После успешной установки постоянного кластера временный (bootstrap) кластер не удаляется автоматически — при необходимости очистите его по инструкции Деинсталляция временного кластера. При ошибке без --debug контейнер локального установщика может быть удалён; для диагностики используйте ./shtil install-gui ... --debug.

Этап 2. Откройте мастер установки в графическом интерфейсе и пройдите шаги

  1. Откройте URL веб-интерфейса из вывода shtil (обычно http://<ip-машины-shtil>:30080).
  2. Войдите под учётной записью администратора.
  3. Нажмите Создать кластер управления.
  4. Заполните мастер установки и нажмите Создать кластер на шаге проверки данных.
  5. Дождитесь завершения развёртывания (ориентировочно 15–30 минут). Вкладку можно закрыть раньше: адрес установщика вернёт вас на страницу статуса. Что при этом сохранится, описано в разделе Статус инсталляции кластера управления.
Скриншот стартового экрана локального установщика

Стартовый экран локального установщика

Шаг 1. Выбор провайдера

Скриншот и поля шага

Мастер установки кластера управления — выбор провайдера

ПолеОписание
Имя кластераУникальное имя кластера управления. Используется в служебных объектах и FQDN. Указывайте латиницу, цифры и дефис.
Выберите провайдерВыберите провайдера инфраструктуры, подготовленного перед инсталляцией: Shturval v2, VMware vSphere, oVirt и подобные, OpenStack, VK Cloud или Selectel, Yandex Cloud.

Обратите внимание! провайдер, с которым разворачивается платформа, будет установлен в платформе как критически важный сервис - недоступен для отключения. Остальные инфраструктурные провайдеры в платформе будут выключены.

Перед заполнением формы проверьте требования выбранного провайдера: Shturval v2, VMware vSphere, oVirt и подобные провайдеры, OpenStack, VK Cloud, Selectel, Yandex Cloud.

Шаг 2. Конфигурация провайдера

Shturval v2

Провайдер Shturval v2 использует заранее подготовленные физические или виртуальные хосты. Шаблон ВМ для этого провайдера не нужен: мастер установки подключается к хостам по SSH и устанавливает компоненты на выбранные узлы.

Скриншот и поля шага

Конфигурация провайдера Shturval v2 в мастере установки install-gui

ПолеОписание
Имя провайдераИмя экземпляра провайдера.
Имя пользователяВ блоке Общие учетные данные для хостов. Пользователь для подключения к хостам по SSH.
Пароль пользователяНеобязательное. В том же блоке. Пароль пользователя SSH для команд sudo на узлах. Если поле пустое, sudo выполняется без пароля.
Приватный ключ пользователяПриватный ключ для подключения к хостам. Загрузите файл или введите текст. Публичная часть ключа должна быть на всех целевых хостах.
ХостыIP-адреса или FQDN хостов, роли (controlplane, workers, infra и другие) и при необходимости лейблы. В Параметры хоста поле Пароль пользователя доступно, если не выбрано Использовать общие учетные данные.

После загрузки хостов провайдер готовит каждый из них к включению в кластер. По SSH он проверяет доступ и права sudo, разворачивает компоненты узла, проверяет, что свободен ли хост и уникальность /etc/machine-id. Следующий шаг конфигурации доступен только когда все добавленные хосты прошли проверки и готовы к привязке ShturvalMachine: status.readyformachine: true.

Свободный хост может ещё проходить подготовку. Если хост не готов, проверьте его conditions и при необходимости устраните указанную причину.

По умолчанию в провайдере используются общие учётные данные для всех хостов, включая Пароль пользователя. Для отдельного хоста пароль задаётся в Параметры хоста. Из консоли тот же пароль передаётся флагом --ssh-user-password или полем credentials.SSH.sshUserPassword — см. Пароль SSH-пользователя для sudo.

Учётные данные сохраняются в Secret кластера управления в неймспейсе shturval-capsm. Имя Secret формируется из имени экземпляра провайдера с суффиксом capsm-v2-provider-secret. Пример Secret приведён на странице Провайдер Shturval v2 (shturval-capsm).

VMware vSphere

Для провайдера VMware vSphere используйте vCenter и параметры, подготовленные перед инсталляцией. Узлы кластера управления будут созданы из шаблона ВМ; если шаблон не был создан заранее, подготовьте его по инструкции и вернитесь к установке.

Скриншот и поля шага

Конфигурация провайдера VMware vSphere в мастере установки install-gui

ПолеОписание
Название экземпляраИмя конфигурации vSphere в мастере установки.
Пул IP-адресовПул для API-сервера и VIP Ingress. Без пула адреса вводятся вручную.
Адрес vCenterIP-адрес или FQDN сервера vCenter.
Имя пользователяУчётная запись vCenter в формате username@domain.
ПарольПароль учётной записи vCenter.
DatacenterВиртуальный датацентр, доступный после проверки подключения.
Resource PoolРесурсный пул, в котором будут создаваться ВМ кластера управления.
NetworkСеть для ВМ. В сети должен работать DHCP.
DatastoreХранилище для дисков ВМ.
Путь для хранения ВМПапка или путь на Datastore для файлов ВМ.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Для oVirt и подобных провайдеров используйте Engine, сеть и параметры виртуализации, подготовленные перед инсталляцией. Узлы кластера управления будут созданы из шаблона ВМ; если шаблон не был создан заранее, подготовьте его по инструкции и вернитесь к установке.

Скриншот и поля шага

Конфигурация провайдера oVirt в мастере установки install-gui

ПолеОписание
Название экземпляраИмя конфигурации провайдера в мастере установки.
URL EngineПолный адрес API Engine, например, https://ovirt.example.com/ovirt-engine/api.
Имя пользователяУчётная запись Engine с доменом, например, admin@internal.
ПарольПароль учётной записи Engine.
Проверка сертификатаПроверка TLS-сертификата Engine. Отключайте только если доверие к корпоративному или самоподписному CA не настроено.
DatacenterВиртуальный датацентр из списка после успешной проверки подключения.
Кластер (Clusters)Кластер виртуализации, где будут создаваться ВМ.
Профиль VNICСетевой профиль для интерфейсов ВМ. В сети должен работать DHCP.
Разрешить CSIРазрешает включить CSI-интеграцию для Persistent Volumes на шаге основных данных.
Пул IP-адресовПул для API-сервера и VIP Ingress. Без пула адреса вводятся вручную.

OpenStack, VK Cloud, Selectel

Для провайдера OpenStack, VK Cloud или Selectel используйте проект, сеть, типы ВМ и параметры API, подготовленные перед инсталляцией. Узлы кластера управления будут созданы из образа/шаблона ВМ; если он не был создан заранее, подготовьте шаблон ВМ провайдера и вернитесь к установке.

Скриншоты и поля шага

Конфигурация провайдера OpenStack в мастере установки install-gui

Конфигурация провайдера VK Cloud в мастере установки install-gui

Конфигурация провайдера Selectel в мастере установки install-gui

ПолеОписание
Auth URL / Identity endpointURL службы авторизации Keystone.
Project IDИдентификатор проекта в облаке.
Project Domain IDИдентификатор домена проекта.
Region nameРегион или зона размещения.
InterfaceИнтерфейс доступа к API, обычно public.
Identity API VersionВерсия Identity API, обычно 3.
Сертификат (cacert)Корневой сертификат при использовании корпоративного или самоподписного CA.
Проверять сертификатВключает проверку TLS-сертификата API.
Тип учётной записиСервисный пользователь или токен. Для Selectel используйте сервисного пользователя.
Name / usernameИмя сервисного пользователя.
ПарольПароль сервисного пользователя.
User Domain NameДомен пользователя, если он требуется в облаке.
ТокенТокен доступа, если выбран тип учётной записи Токен.
Имя провайдераУникальное имя экземпляра провайдера.
CloudNameИмя облака в конфигурации.
Сетевой интерфейс ВМИмя интерфейса на создаваемых ВМ, например, eth0.
sshKeyNameSSH-ключ OpenStack для доступа к ВМ.
Подсеть узловПодсеть для узлов кластера управления.
externalNetworkIDИдентификатор внешней сети для внешнего доступа.
Типы ВМ (flavours)Доступные типы виртуальных машин для узлов.
Типы дисков (volume types)Доступные типы томов для дисков ВМ.
Зоны доступностиAvailability zones при необходимости.
Управление Security GroupsУправление группами безопасности со стороны платформы.
Разрешить CSIРазрешает включить OpenStack Cinder CSI на шаге основных данных.

Yandex Cloud

Для провайдера Yandex Cloud используйте папку, подсеть и параметры API, подготовленные перед инсталляцией. Узлы кластера управления будут созданы из шаблона ВМ; если шаблон не был создан заранее, подготовьте его по инструкции с флагом --keep-cloud-init и вернитесь к установке.

Скриншот и поля шага
ПолеОписание
Авторизованный ключ сервисной учетной записиJSON-ключ сервисного аккаунта. После ввода нажмите Проверить подключение.
ID папкиНужен, если аккаунт не может получить список папок.
Имя провайдераИмя экземпляра. Латиница в нижнем регистре, цифры и дефис, от 1 до 63 символов. Имя create недоступно.
ПапкаКаталог Yandex Cloud. Если доступна одна папка, изменить её нельзя.
ПодсетьОдна подсеть выбранной папки: имя, ID и зона доступности.
Типы платформыPlatform ID, из которых потом выбирается размер узлов.
Тип дисковТипы дисков узлов, например, network-ssd и network-hdd.
БалансировщикВнешний или Внутренний. По умолчанию Внешний.
Тип балансировщикаALB или NLB. По умолчанию ALB.
Разрешена установка CSIДа / Нет. По умолчанию Нет. При Да на шаге основных данных можно включить интеграцию CSI.
Шаблоны виртуальных машинХотя бы один шаблон: имя в облаке и версия Kubernetes.

Сервисному аккаунту необходимы роли compute.editor и alb.editor, для работы CSI дополнительно роль k8s.clusters.agent.

Шаг 3. Основные данные

Shturval v2

Скриншоты и поля шага

Shturval v2 — основные данные, базовый режим

Shturval v2 — основные данные, расширенные настройки

Shturval v2 — внешний балансировщик API

Shturval v2 — внешний балансировщик Ingress

ПолеОписание
Версия Kubernetes / версия платформыСовместимая версия Kubernetes и платформы для кластера управления.
Адрес API-сервера кластераIP или FQDN для KubeAPI. Можно выбрать свободный адрес из пула или ввести вручную.
VIP-адрес для IngressIPv4-адрес для системного Ingress, если внешний балансировщик Ingress не используется.
DNS-запись IngressWildcard FQDN для Ingress при использовании DNS вместо VIP.
Использовать внешний балансировщик для IngressОставляет для Ingress поле DNS-записи. Внешний балансировщик должен быть подготовлен до запуска развёртывания.
Использовать внешний балансировщик для API-сервераДля API-сервера указывается FQDN внешнего балансировщика. Балансировщик должен быть готов до установки.
Установить расширенные параметры информационной безопасностиВключает Secret Encryption для etcd, TLS-соединение с Kubelet и преднастроенную политику аудита.
Подсеть подовCIDR для Pod-сети. Не должен пересекаться с сетью узлов и сервисов.
Подсеть сервисовCIDR для Service ClusterIP. Не должен пересекаться с сетью узлов и подов.
Профиль кластераНабор политик и параметров, применяемых к кластеру.

VIP нужны, если не используются внешние балансировщики для KubeAPI и Ingress. Оба адреса должны быть свободны. Адрес API должен быть в подсети Control Plane, а VIP Ingress должен быть доступен с рабочей станции администратора.

VMware vSphere

Скриншоты и поля шага

VMware vSphere — основные данные, базовый режим

VMware vSphere — основные данные, расширенные настройки

ПолеОписание
Шаблон провайдераШаблон ВМ для нужной версии Kubernetes, подготовленный перед инсталляцией по инструкции. Если шаблон один, он выбирается автоматически. Если в экземпляре несколько шаблонов на одну версию Kubernetes, после выбора версии платформы появится обязательное поле Шаблон ВМ.
Адрес API-сервера кластераVIP или FQDN для KubeAPI. Выберите адрес из пула или введите вручную.
VIP-адрес для IngressIPv4-адрес для системного Ingress в базовом режиме.
VIP-адрес для Ingress или DNS-запись IngressВ расширенном режиме можно указать IPv4-адрес или Wildcard FQDN.
Версия платформыСовместимая версия платформы для выбранного шаблона.
Включить интеграцию CSIВключает vSphere CSI для Persistent Volumes, если это разрешено шаблоном и правами vCenter.
Удалить PV при удалении кластера с включенной интеграцией CSIДа / Нет. По умолчанию Нет. Подробнее: Удаление PV при удалении кластера.
Использовать внешний балансировщикПереводит трафик Ingress на внешний балансировщик; для Ingress указывается DNS-запись.
Установить расширенные параметры информационной безопасностиВключает Secret Encryption для etcd, TLS-соединение с Kubelet и преднастроенную политику аудита.
Подсеть подовCIDR для Pod-сети.
Подсеть сервисовCIDR для Service ClusterIP.
Профиль кластераНабор политик и параметров, применяемых к кластеру.

VIP нужны, если не используются внешние балансировщики для KubeAPI и Ingress. Оба адреса должны быть свободны. Адрес API должен быть в подсети Control Plane, а VIP Ingress должен быть доступен с рабочей станции администратора.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Скриншоты и поля шага

oVirt — основные данные, базовый режим

oVirt — основные данные, расширенные настройки

Скриншот: поле удаления PV

Удалить PV при удалении кластера с включенной интеграцией CSI

ПолеОписание
Шаблон провайдераШаблон ВМ для нужной версии Kubernetes, подготовленный перед инсталляцией по инструкции.
Версия платформыСовместимая версия платформы для выбранного шаблона.
Адрес API-сервера кластераVIP или FQDN для KubeAPI. Выберите адрес из пула или введите вручную.
VIP-адрес для IngressIPv4-адрес для системного Ingress в базовом режиме.
VIP-адрес для Ingress или DNS-запись IngressВ расширенном режиме можно указать IPv4-адрес или Wildcard FQDN.
Включить интеграцию CSIВключает CSI-интеграцию, если она разрешена в экземпляре провайдера.
Удалить PV при удалении кластера с включенной интеграцией CSIДа / Нет. По умолчанию Нет. Подробнее: Удаление PV при удалении кластера.
Использовать внешний балансировщикПереводит трафик Ingress на внешний балансировщик; для Ingress указывается DNS-запись.
Установить расширенные параметры информационной безопасностиВключает Secret Encryption для etcd, TLS-соединение с Kubelet и преднастроенную политику аудита.
Подсеть подовCIDR для Pod-сети.
Подсеть сервисовCIDR для Service ClusterIP.
Профиль кластераНабор политик и параметров, применяемых к кластеру.

VIP нужны, если не используются внешние балансировщики для KubeAPI и Ingress. Оба адреса должны быть свободны. Адрес API должен быть в подсети Control Plane, а VIP Ingress должен быть доступен с рабочей станции администратора.

OpenStack, VK Cloud, Selectel

Скриншот и поля шага

OpenStack — основные данные

ПолеОписание
Экземпляр провайдераЭкземпляр OpenStack, VK Cloud или Selectel, в котором указан подготовленный образ/шаблон ВМ. Если экземпляр один, он выбирается автоматически.
Версия платформыСовместимая версия платформы для выбранных образов.
Включить интеграцию CSIВключает CSI для облачных дисков, если это разрешено экземпляром провайдера.
Удалить PV при удалении кластера с включенной интеграцией CSIДа / Нет. По умолчанию Нет. Подробнее: Удаление PV при удалении кластера.
Использовать внешний балансировщик для IngressДля облачного сценария обычно включено; после создания кластера настройте балансировщик в панели облака.
DNS-запись IngressWildcard FQDN. Если поле пустое, применяется автоматическая схема *.<имя-кластера>.ip-<IP_EXTERNAL_LB>.shturval.link.
Установить расширенные параметры информационной безопасностиВключает Secret Encryption для etcd, TLS-соединение с Kubelet и преднастроенную политику аудита.
Подсеть подовCIDR для Pod-сети.
Подсеть сервисовCIDR для Service ClusterIP.
Подсеть узловCIDR для узлов; если не задан, используется подсеть из конфигурации провайдера.
Профиль кластераНабор политик и параметров, применяемых к кластеру.

Yandex Cloud

Скриншот и поля шага

Yandex Cloud — основные данные, базовый режим

Yandex Cloud — основные данные, расширенные настройки

Скриншот: поле удаления PV

Удалить PV при удалении кластера с включенной интеграцией CSI

ПолеОписание
Экземпляр провайдераЭкземпляр Yandex Cloud, созданный на шаге 2. Если экземпляр один, он выбирается автоматически.
Версия KubernetesВерсия из шаблона ВМ экземпляра.
Версия платформыСовместимая версия платформы для выбранного шаблона.
Шаблон ВМПоявляется, если в экземпляре несколько шаблонов на одну версию Kubernetes.
Включить интеграцию CSIВключает CSI для дисков Yandex Cloud (shturval-capy-csi), если это разрешено экземпляром провайдера. По умолчанию Нет.
Удалить PV при удалении кластера с включенной интеграцией CSIДа / Нет. По умолчанию Нет. Недоступно, пока в экземпляре Разрешена установка CSI — Нет. Подробнее: Удаление PV при удалении кластера.
Использовать внешний балансировщик для IngressДля Yandex Cloud обычно включено; после создания кластера настройте балансировщик в консоли Yandex Cloud.
DNS-запись IngressWildcard FQDN. В расширенном режиме можно изменить.
Установить расширенные параметры информационной безопасностиВключает Secret Encryption для etcd, TLS-соединение с Kubelet и преднастроенную политику аудита.
Подсеть подовCIDR для Pod-сети. Не должна пересекаться с сетью узлов и сервисов.
Подсеть сервисовCIDR для Service ClusterIP. Не должна пересекаться с сетью узлов и подов.
Профиль кластераНабор политик и параметров, применяемых к кластеру.

KubeAPI и Ingress публикуются через балансировщики Yandex Cloud. Внешний балансировщик Ingress включён по умолчанию.

Шаг 4. Конфигурация Control Plane узлов

Shturval v2

Скриншоты и поля шага

Shturval v2 — Control Plane

Shturval v2 — Control Plane, расширенные настройки

ПолеОписание
Количество Control Plane узловНечётное значение, не больше 5.
Потенциально доступные хостыХосты с ролью controlplane или подходящими лейблами.
Селектор хостовРасширенный выбор хостов по лейблам и выражениям.

VMware vSphere

Скриншот и поля шага

VMware vSphere — Control Plane

ПолеОписание
Количество Control Plane узловНечётное значение, обычно 1 для теста или 3 для отказоустойчивого кластера.
CPU / память / дискРесурсы ВМ Control Plane. Значения не должны быть ниже минимальных ограничений интерфейса.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Скриншот и поля шага

oVirt — Control Plane

ПолеОписание
Количество Control Plane узловНечётное значение, не больше 5.
Cores / Sockets / ThreadsВычислительные ресурсы ВМ Control Plane.
ПамятьОбъём оперативной памяти ВМ.
ДискОбъём диска ВМ; при локальном хранилище не меньше минимального значения интерфейса.
Клонировать диск при создании ВМДа клонирует диски узлов этой группы, Нет создаёт их без клонирования. По умолчанию берёт значение экземпляра провайдера, а если и там По умолчанию — feature gate disk-clone. Подробнее — клонирование диска.

OpenStack, VK Cloud, Selectel

Скриншот и поля шага

OpenStack — Control Plane

ПолеОписание
Количество Control Plane узловНечётное значение, не больше 5.
Тип ВМFlavor для ВМ Control Plane.
Тип дискаVolume type для диска ВМ.
ДискОбъём диска ВМ.
Зона доступностиAvailability zone для размещения Control Plane узлов.

Yandex Cloud

Скриншот и поля шага

Yandex Cloud — Control Plane

ПолеОписание
Количество Control Plane узловНечётное значение, не больше 5.
Тип платформыPlatform ID из списка, заданного на шаге 2.
Тип дискаТип диска из списка шага 2.
Количество ядерНе меньше 4.
Объем оперативной памятиНе меньше 8Gi (8192Mi).
Объем дискаРазмер загрузочного диска. В интерфейсе по умолчанию 60Gi.

Шаг 5. Конфигурация Worker-узлов

Shturval v2

Скриншоты и поля шага

Shturval v2 — группы Worker

Shturval v2 — параметры Worker

Shturval v2 — селектор Worker

ПолеОписание
Группа Worker-узловГруппа хостов, например, default или infra.
МасштабированиеРучное количество узлов или автоматический диапазон.
Роль хостовРоль для выбора хостов в базовом режиме, например, workers или infra.
Селектор хостовРасширенный выбор Worker-хостов по лейблам.

VMware vSphere

Скриншоты и поля шага

VMware vSphere — группы Worker

VMware vSphere — параметры Worker

ПолеОписание
Группа Worker-узловГруппа ВМ, например, default или infra.
МасштабированиеРучное количество узлов или автоматический диапазон.
CPU / память / дискРесурсы ВМ Worker-узлов.
РолиРоли узлов через запятую; они будут добавлены в лейблы узлов.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Скриншоты и поля шага

oVirt — группы Worker

oVirt — параметры Worker

ПолеОписание
Группа Worker-узловГруппа ВМ, например, default или infra.
МасштабированиеРучное количество узлов или автоматический диапазон.
Cores / Sockets / ThreadsВычислительные ресурсы ВМ Worker-узлов.
ПамятьОбъём оперативной памяти Worker-узлов.
ДискОбъём диска Worker-узлов.
Клонировать диск при создании ВМДа клонирует диски узлов этой группы, Нет создаёт их без клонирования. По умолчанию берёт значение экземпляра провайдера, а если и там По умолчанию — feature gate disk-clone. Подробнее — клонирование диска.
РолиРоли узлов через запятую; они будут добавлены в лейблы узлов.

OpenStack, VK Cloud, Selectel

Скриншот и поля шага

OpenStack — Worker-группы

ПолеОписание
Группа Worker-узловГруппа ВМ, например, default или infra.
МасштабированиеРучное количество узлов или автоматический диапазон.
Тип ВМFlavor для Worker-узлов.
Тип дискаVolume type для диска Worker-узлов.
ДискОбъём диска Worker-узлов.
Зона доступностиAvailability zone для размещения Worker-узлов.
РолиРоли узлов через запятую; они будут добавлены в лейблы узлов.

Yandex Cloud

Скриншоты и поля шага

Yandex Cloud — группы Worker

Yandex Cloud — параметры Worker

ПолеОписание
Группа Worker-узловГруппа ВМ, например, default или infra.
МасштабированиеРучное количество узлов или автоматический диапазон.
Тип платформыPlatform ID из списка, заданного на шаге 2.
Тип дискаТип диска из списка шага 2.
Количество ядерНе меньше 4.
Объем оперативной памятиНе меньше 8Gi (8192Mi).
Объем дискаРазмер диска Worker-узлов.
РолиРоли узлов через запятую; они будут добавлены в лейблы узлов.

Шаг 6. Установка сертификата

Shturval v2

Скриншот и поля шага

Шаг «Установка сертификата»

ВариантОписание
СамоподписнойСертификат выпускается платформой. Подходит для тестовых и внутренних стендов.
ПромежуточныйИспользуется промежуточный CA; загрузите цепочку сертификатов и закрытый ключ.
ACMEИспользуется ACME-сервер; укажите корневой CA и URL сервера.
КорпоративныйИспользуется готовый сертификат Ingress и закрытый ключ, выпущенные вашим CA.
Let’s EncryptИспользуется Let’s Encrypt; укажите email учётной записи.

VMware vSphere

Скриншот и поля шага

Шаг «Установка сертификата»

ВариантОписание
СамоподписнойСертификат выпускается платформой. Подходит для тестовых и внутренних стендов.
ПромежуточныйИспользуется промежуточный CA; загрузите цепочку сертификатов и закрытый ключ.
ACMEИспользуется ACME-сервер; укажите корневой CA и URL сервера.
КорпоративныйИспользуется готовый сертификат Ingress и закрытый ключ, выпущенные вашим CA.
Let’s EncryptИспользуется Let’s Encrypt; укажите email учётной записи.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Скриншот и поля шага

Шаг «Установка сертификата»

ВариантОписание
СамоподписнойСертификат выпускается платформой. Подходит для тестовых и внутренних стендов.
ПромежуточныйИспользуется промежуточный CA; загрузите цепочку сертификатов и закрытый ключ.
ACMEИспользуется ACME-сервер; укажите корневой CA и URL сервера.
КорпоративныйИспользуется готовый сертификат Ingress и закрытый ключ, выпущенные вашим CA.
Let’s EncryptИспользуется Let’s Encrypt; укажите email учётной записи.

OpenStack, VK Cloud, Selectel

Скриншот и поля шага

Шаг «Установка сертификата»

ВариантОписание
СамоподписнойСертификат выпускается платформой. Подходит для тестовых и внутренних стендов.
ПромежуточныйИспользуется промежуточный CA; загрузите цепочку сертификатов и закрытый ключ.
ACMEИспользуется ACME-сервер; укажите корневой CA и URL сервера.
КорпоративныйИспользуется готовый сертификат Ingress и закрытый ключ, выпущенные вашим CA.
Let’s EncryptИспользуется Let’s Encrypt; укажите email учётной записи.

Yandex Cloud

Скриншот и поля шага

Шаг «Установка сертификата»

ВариантОписание
СамоподписнойСертификат выпускается платформой. Подходит для тестовых и внутренних стендов.
ПромежуточныйИспользуется промежуточный CA; загрузите цепочку сертификатов и закрытый ключ.
ACMEИспользуется ACME-сервер; укажите корневой CA и URL сервера.
КорпоративныйИспользуется готовый сертификат Ingress и закрытый ключ, выпущенные вашим CA.
Let’s EncryptИспользуется Let’s Encrypt; укажите email учётной записи.

Имя в сертификате должно совпадать с DNS-записью Ingress.

Шаг 7. Выбор сервисов

Кластер управления по умолчанию разворачивается с Gateway API. Модуль управления внешними подключениями (shturval-ingress-controller) устанавливается в режиме absent. CRD модуля Gateway API критически важный сервис платформы устанавливаются включенным по умолчанию.

Shturval v2

Скриншоты и поля шага

Выбор сервисов по группам

Расширенный выбор сервисов

ПолеОписание
Критические сервисыОбязательные компоненты платформы, включая CRD Gateway API. Всегда включены и недоступны для отключения.
МониторингМетрики, дашборды и экспорт метрик.
ЛогированиеСбор и обработка логов.
Резервное копирование и восстановлениеСервисы резервного копирования и работы со snapshot.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

VMware vSphere

Скриншоты и поля шага

Выбор сервисов по группам

Расширенный выбор сервисов

ПолеОписание
Критические сервисыОбязательные компоненты платформы, включая CRD Gateway API. Всегда включены и недоступны для отключения.
МониторингМетрики, дашборды и экспорт метрик.
ЛогированиеСбор и обработка логов.
Резервное копирование и восстановлениеСервисы резервного копирования и работы со snapshot.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Скриншоты и поля шага

Выбор сервисов по группам

Расширенный выбор сервисов

ПолеОписание
Критические сервисыОбязательные компоненты платформы, включая CRD Gateway API. Всегда включены и недоступны для отключения.
МониторингМетрики, дашборды и экспорт метрик.
ЛогированиеСбор и обработка логов.
Резервное копирование и восстановлениеСервисы резервного копирования и работы со snapshot.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

OpenStack, VK Cloud, Selectel

Скриншоты и поля шага

Выбор сервисов по группам

Расширенный выбор сервисов

ПолеОписание
Критические сервисыОбязательные компоненты платформы, включая CRD Gateway API. Всегда включены и недоступны для отключения.
МониторингМетрики, дашборды и экспорт метрик.
ЛогированиеСбор и обработка логов.
Резервное копирование и восстановлениеСервисы резервного копирования и работы со snapshot.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

Yandex Cloud

Скриншоты и поля шага

Выбор сервисов по группам

Расширенный выбор сервисов

ПолеОписание
Критические сервисыОбязательные компоненты платформы, включая CRD Gateway API. Всегда включены и недоступны для отключения.
МониторингМетрики, дашборды и экспорт метрик.
ЛогированиеСбор и обработка логов.
Резервное копирование и восстановлениеСервисы резервного копирования и работы со snapshot.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

Модуль shturval-capy-csi в этот список не входит: он ставится при включённой интеграции CSI на шаге основных данных.

Шаг 8. Проверка данных

Shturval v2

Описание шага

Проверьте сводку параметров: имя кластера, провайдер, адреса API и Ingress, сетевые CIDR, конфигурацию Control Plane, Worker-группы, сертификат и выбранные сервисы. Кластер управления разворачивается с Gateway API. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

VMware vSphere

Описание шага

Проверьте сводку параметров: имя кластера, провайдер, адреса API и Ingress, сетевые CIDR, конфигурацию Control Plane, Worker-группы, сертификат и выбранные сервисы. Кластер управления разворачивается с Gateway API. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization

Описание шага

Проверьте сводку параметров: имя кластера, провайдер, адреса API и Ingress, сетевые CIDR, конфигурацию Control Plane, Worker-группы, сертификат и выбранные сервисы. Кластер управления разворачивается с Gateway API. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

OpenStack, VK Cloud, Selectel

Описание шага

Проверьте сводку параметров: имя кластера, провайдер, адреса API и Ingress, сетевые CIDR, конфигурацию Control Plane, Worker-группы, сертификат и выбранные сервисы. Кластер управления разворачивается с Gateway API. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

Yandex Cloud

Описание шага

Проверьте сводку параметров: имя кластера, провайдер, адреса API и Ingress, сетевые CIDR, конфигурацию Control Plane, Worker-группы, сертификат и выбранные сервисы. Кластер управления разворачивается с Gateway API. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

Статус инсталляции кластера управления

Подробное описание этапов статуса, цветовой индикации, таблиц узлов и сервисов см. Статус развертывания кластера.

После запуска развёртывания на экране отображается статус инсталляции кластера управления с этапами.

Установка идёт долго, вкладку браузера можно закрыть или обновить, не дожидаясь конца. Адрес установщика в этом браузере запоминает незавершённую установку: откройте его снова — попадёте на страницу статуса, и этапы продолжат обновляться. На странице об этом написано: «Инсталляция запущена. При перезагрузке страницы прогресс установки восстановится автоматически. По завершении инсталляции вы получите данные для входа в платформу».

Когда кластер уже развёрнут, тот же адрес снова открывает мастер установки, а не страницу прошлой установки. Если временный кластер удалён и shtil install-gui запущен заново, ход предыдущей установки тоже не подхватывается.

По завершении инсталляции вы автоматически перейдёте на этап «Кластер готов». На этом этапе доступны:

  • статический kubeconfig постоянного кластера управления — скачайте и сохраните его;
  • ссылка для перехода в постоянный кластер управления. Для входа используйте логин и пароль администратора платформы, полученные при запуске установки.

Инсталляция кластера управления считается завершённой, когда выполнены минимальные требования:

  • готова инфраструктура;
  • готов минимум 1 Control Plane узел;
  • успешно установлены сервисы shturval-backend, shturval-auth, shturval-frontend, shturval-gateway-api-crds.

Когда kubeconfig и ссылка в интерфейс постоянного кластера уже доступны, отдельные этапы могут ещё выполняться: например, могут устанавливаться не все сервисы или применяться не все NCI. Вы можете дождаться завершения всех этапов в интерфейсе временного кластера или проверить состояние в постоянном кластере: NCI — на странице Конфигурация узлов, при необходимости правьте узлы через создание и работу с NCI; сервисы — на странице Установленные сервисы.

Установка сервисов репозитория Shturval выполняется в два этапа: сначала поднимаются критически важные сервисы, затем сервисы, выбранные на шаге «Выбор сервисов». Этап установки сервисов репозитория Shturval считается завершённым только после установки всех сервисов: критически важных и выбранных пользователем (состав и обновление артефактов реестра см. в сервисах репозитория). Для кластера управления в статусе также отображается этап «Репликация» со списком conditions репликации.

Установка с флагами

Установка с флагами выполняется командой install-cli (синоним install) без прохождения веб-мастера установки платформы.

Параметры --bootstrap-registry / --bootstrap-insecure обычно не задают: используется публичный реестр образов платформы. Лицензию для временного установочного кластера передайте флагом --bootstrap-license, если не используете заранее подготовленный kubeconfig (--existing-bootstrap-kubeconfig — см. install-cli --help).

Провайдеры

Провайдер / средаПодкоманда install-cli
Shturval v2shturvalv2
oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualizationovirt
VMware vSpherevsphere
OpenStackopenstack
VK Cloudvkcloud
Selectelselectel
Yandex Cloudyandex

Общие группы параметров

Сетевой контекст: схемы межсетевого взаимодействия и требования для открытого контура.

ГруппаПараметры (пример)Назначение
Базовая--api-endpoint, -a, --provider-name, --cluster-nameТочка API управления платформы, имена экземпляра провайдера и кластера
Сеть--pod-subnet, --service-subnetCIDR Pod и Service; см. также проверку пересечения подсетей
Ingress--ingress-vip, --ingress-default-fqdn, --use-external-ingress-lbДоступ к Ingress
Системные сервисы--enabled-system-services, --minimalСостав компонентов; см. установку сервисов
Bootstrap--bootstrap-license, --bootstrap-registry, --bootstrap-insecure, --bootstrap-registry-certs-dir, --existing-bootstrap-kubeconfig, --bootstrap-kubeconfig-path, …Подключение временного установочного кластера или использование уже существующего bootstrap-kubeconfig; в открытом контуре чаще достаточно --bootstrap-license. Взаимоисключающие и обязательные комбинации см. --help
Прочее--yaml-path, -f, --platform-version, --overwrite(вместо overwrite можно писать команду -y), --cluster-kubeconfig-path, --follow-install-logs, --install-logs-fileАльтернативная подача настроек, версия платформы, режим перезаписи, путь итогового kubeconfig, логи подов временного кластера на время ожидания готовности

При сочетании YAML и флагов для установки сначала читаются поля YAML-файла; перекрываются только те флаги командной строки, которые указаны явно.

Shturval v2 — пример

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster"

Пароль SSH-пользователя для sudo

Если на хостах команды выполняются через sudo с паролем, передайте пароль SSH-пользователя. Параметр необязательный. Без него установка идёт как раньше: пользователь выполняет sudo без пароля.

  • флаг --ssh-user-password;
  • в YAML, блок credentials.SSH — sshUserPassword;
  • в YAML, блок hosts, если у хоста свои учётные данные, — credentials.SSH.sshUserPassword.

Как задать пароль в интерфейсе уже созданного провайдера — в разделе Как добавить пароль для команд sudo.

Обязательные сочетания и краткие формы (-c, -w, -a и др.) уточняйте в ./shtil install-cli shturvalv2 --help. Полные таблицы по провайдерам — в справочнике флагов.

Минимальная конфигурация (один CP):

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster" \
  --minimal=true

Пример повторного запуска с перезаписью конфликтующих ресурсов на существующем bootstrap-кластере:

bin/shtil install-cli shturvalv2 \
  --overwrite \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/username/sh/kubeconfigs/certs/id_ed25519" \
  --api-endpoint="10.XX.XXX.246" \
  --ingress-vip="10.XX.XXX.252" \
  --controlplane-nodes="10.XX.XXX.145" \
  --worker-nodes="10.XX.XXX.69" \
  --bootstrap-kubeconfig-path="/home/username/sh/kubeconfigs/01bt" \
  -v=10 \
  --cluster-name="mgmt617c1" \
  --provider-name="sht617p1"

Справочник флагов install-cli

Общие параметры (все провайдеры)
ПараметрОбязательностьОписание
-a, --api-endpoint [string]Да для всех провайдеров кроме OpenStack/VK Cloud/Selectel и Yandex CloudАдрес API-сервера кластера управления (IP или FQDN без порта и протокола, например, 10.11.12.100)
--provider-name [string]НетИмя экземпляра провайдера (по умолчанию cluster-management-provider)
--cluster-name [string]НетИмя кластера (по умолчанию shturval-management)
--pod-subnet [string]НетПодсеть Pod в формате CIDR (по умолчанию 172.16.0.0/16)
--service-subnet [string]НетПодсеть Service в формате CIDR (по умолчанию 10.96.0.0/12)
--ingress-default-fqdn [string]Да, если не задан --ingress-vip. Нет для OpenStack/VK Cloud/Selectel и Yandex CloudDNS-запись Ingress. Можно указать apps.example.corp или *.apps.example.corp
--ingress-vip [string]Да, если не задан --ingress-default-fqdn. Нельзя для OpenStack/VK Cloud/Selectel и Yandex CloudVIP Ingress
--use-external-ingress-lbНетВнешний балансировщик Ingress. Для OpenStack/VK Cloud/Selectel и Yandex Cloud по умолчанию true
--secureНетРасширенные настройки безопасности (по умолчанию false)
--ingress-certs-*НетПути к CA/TLS/ACME для Ingress (--ingress-certs-ca-crt-path, --ingress-certs-tls-crt-path, --ingress-certs-acme-url и др.; см. справку)
--enabled-system-services [string]НетСписок системных сервисов через запятую. С --minimal=true игнорируется
--existing-bootstrap-kubeconfig, -bНетПуть к kubeconfig уже существующего временного кластера. Не вместе с --bootstrap-kubeconfig-path
--bootstrap-kubeconfig-pathНетПуть к файлу, куда записать kubeconfig создаваемого временного кластера. Не вместе с --existing-bootstrap-kubeconfig
--bootstrap-license [string]Как правило да, если нет готового bootstrap-kubeconfigЛицензия; при спецсимволах — одинарные кавычки
--bootstrap-registry [string]НетРеестр образов (по умолчанию r.shturval.tech)
--bootstrap-insecureНетНе проверять TLS реестра
--yaml-path, -fНетПуть к YAML манифесту постоянного кластера
--minimalНетМинимальный набор сервисов (часто один CP)
--platform-version [string]НетВерсия платформы (по умолчанию = версии shtil)
-y, --overwriteНетПринудительное обновление при повторном запуске
--follow-install-logsНетВывод логов подов bootstrap кластера в stderr. Поды неймспейсов Cluster API (capi-system, capi-kubeadm-bootstrap-system, capi-kubeadm-control-plane-system), shturval-cluster-manager и неймспейс контроллера провайдера. Строка начинается с [неймспейс/под]. По умолчанию выключено
--install-logs-file [string]НетПуть файла с логами подов bootstrap кластера. Работает только вместе с --follow-install-logs. Если путь не задан, файл создаётся в каталоге, из которого запущена команда: shtil-install-<имя-кластера>.log
-v, --verbosityНетДетализация лога
Shturval v2
ПараметрОбязательностьОписание
--path-ssh-private-key [string]ДаПуть к приватному SSH-ключу
--ssh-user [string]ДаПользователь SSH
--ssh-user-password [string]НетПароль пользователя SSH для команд sudo на узлах. Если флаг не задан, sudo выполняется без пароля. В мастере установки то же значение — поле Пароль пользователя. См. Пароль SSH-пользователя для sudo
-c, --controlplane-nodes [string]ДаIP/FQDN Control Plane через запятую
-w, --worker-nodes [string]Да, если --minimal falseIP или FQDN Worker через запятую. Кластер без Worker-узлов ставится только с --minimal: иначе shtil команду не выполняет
--use-external-kubeapi-lbНетВнешний балансировщик KubeAPI

Кластер с провайдером Shturval v2 без Worker-узлов можно поставить только в минимальном режиме, для этого передайте --minimal. Если не заданы ни --worker-nodes, ни --minimal, установка не начнётся. При установке из YAML флаг --minimal в команде включает минимальный режим, даже если в файле этого параметра нет.

oVirt / zVirt / HostVM / РЕД Виртуализация / ROSA Virtualization
ПараметрОбязательностьОписание
-u, --url-providerДаURL API Engine, с суффиксом /ovirt-engine/api
--user-providerДаУчётная запись (например admin@internal)
--password-providerДаПароль; при спецсимволах — кавычки
--tls-insecure-providerНетОтключить проверку TLS к Engine
--tls-cert-path-providerНетПуть к доверенному CA
--sub-type-providerНетzvirt, hostvm, redvirt, rosavirt
--datacenter-providerДаИмя датацентра
--datacenter-cluster-providerДаИмя кластера
--vnic-profile-providerДаVNIC-профиль
-t, --templateДаШаблон ВМ
--provider-csi-storageДаStorage Domain для CSI
--allow-csiНетРазрешить CSI
--delete-persistent-volumesНетУдалять PV при удалении кластера (true / false). Если флаг не указан, используется политика профиля кластера
--control-plane, --workersНетКоличество узлов
--cores-control-plane, --memory-control-plane, --disk-control-plane, --sockets-*, --threads-*НетРесурсы ВМ Control Plane
--cores-workers, --memory-workers, --disk-workers, …НетРесурсы Worker
--disk-cloneНетКлонировать диск ВМ на уровне экземпляра провайдера. Если флаг не задан, поле не отправляется
--disk-clone-control-planeНетКлонировать диск ВМ узлов Control Plane. Если флаг не задан, поле не отправляется
--disk-clone-workersНетКлонировать диск ВМ группы Worker по умолчанию. Если флаг не задан, поле не отправляется
VMware vSphere
ПараметрОбязательностьОписание
--address-vcenterДаFQDN или IP vCenter
--user-vcenterДаУчётная запись
--password-vcenterДаПароль
--provider-datacenterДаДатацентр
--provider-datastoreДаDatastore
--provider-resource-poolДаResource pool
--provider-networkДаСеть (DHCP для ВМ узлов)
--provider-folderДаПапка ВМ
--provider-clone-modeНетlinkedClone / fullClone
--provider-storage-policyНетStorage policy при необходимости
-t, --templateДаШаблон ВМ
--enable-csiНетВключить CSI
--delete-persistent-volumesНетУдалять PV при удалении кластера (true / false). Если флаг не указан, используется политика профиля кластера
--control-plane, --workersНетКоличество узлов
--cpu-control-plane, --memory-control-plane, --disk-control-planeНетРесурсы CP
--cpu-workers, --memory-workers, --disk-workersНетРесурсы Worker
OpenStack / VK Cloud / Selectel
ПараметрОбязательностьОписание
--url-authДа для OpenStack; может не требоваться для VK/SelectelKeystone URL с портом, например, https://openstack.example.com:5000/v3
--project-idДаID проекта
--project-domain-idДаID домена проекта
--tls-insecure-providerНетПропустить проверку TLS
--tls-cert-pathНетPEM CA для API
--region-nameНетРегион
--interfaceНетИнтерфейс endpoint (public и др.)
--identity-api-versionНетВерсия Identity API
--tokenУсловноТокен (OpenStack; не вместе с login/password)
--loginУсловноСервисная УЗ
--passwordУсловноПароль УЗ
--user-domain-nameУсловноДомен пользователя
--cloud-nameДаИмя облака в терминах облачного API
--ssh-key-nameДаИмя SSH keypair в облаке
--node-cidrДаПодсеть узлов, например, 10.0.0.0/24
--external-network-idДаID внешней сети
--flavorsДаСписок flavor через запятую
--volume-typesДаТипы томов через запятую
--availability-zonesНетЗоны доступности
--manage-security-groups, --disable-port-security, --dnsНетСеть/SEC
--machine-image-nameДаИмя образа/шаблона ВМ
--enable-csiНетCSI
--delete-persistent-volumesНетУдалять PV при удалении кластера (true / false). Если флаг не указан, используется политика профиля кластера
--control-plane, --workersНетЧисло узлов
--flavor-name-cp, --volume-type-cp, --availability-zone-cp, --disk-cpНетCP в облаке
--flavor-name-workers, --volume-type-workers, …НетWorkers в облаке
Yandex Cloud
ПараметрОбязательностьОписание
--yandex-key-pathДаПуть к JSON-ключу сервисного аккаунта. В запрос уходит содержимое файла. Для узлов нужны роли compute.editor и alb.editor, для CSI ещё k8s.clusters.agent
--folder-idДаID папки Yandex Cloud. В экземпляре указывается одна папка
--network-idДаID сети, в которой создаются узлы
--subnet-idДаID подсети узлов
--zone-idДаЗона доступности, например, ru-central1-a
--allowed-platform-idsДаДопустимые platform ID через запятую, например, standard-v3
--allowed-volume-typesДаДопустимые типы дисков через запятую, например, network-ssd
--templateДаID образа ВМ. Образ готовят с флагом stc --keep-cloud-init
--enable-csiНетВключить CSI (shturval-capy-csi) и разрешить его на экземпляре провайдера. По умолчанию false
--load-balancer-typeНетТип балансировщика облака: ALB или NLB. По умолчанию ALB
--load-balancer-internalНетВнутренний балансировщик. По умолчанию false
--provider-nameНетИмя экземпляра. По умолчанию cluster-management-provider.
--control-plane, --workersНетЧисло узлов. Control Plane — положительное нечётное число, по умолчанию 1. Worker — целое число от 0, по умолчанию 3
--platform-id-control-plane, --cores-control-plane, --memory-control-plane, --disk-control-plane, --volume-type-control-planeНетРесурсы ВМ Control Plane. По умолчанию 4 vCPU, 16000Mi и диск 60Gi. vCPU не меньше 4, память не меньше 8Gi. Platform ID и тип диска, если не заданы, берутся первыми из допустимых списков
--platform-id-workers, --cores-workers, --memory-workers, --disk-workers, --volume-type-workersНетРесурсы ВМ Worker. По умолчанию 8 vCPU, 32000Mi и диск 300Gi. Те же минимумы по vCPU и памяти

Примеры команд под выбранную сетевую схему

Порты, протоколы и матрицы трафика — на странице Схемы межсетевого взаимодействия. Ниже — отдельные команды для копирования: блок install-gui (реестр по умолчанию r.shturval.tech) и примеры install-cli под сеть кластера управления.

Локальный установщик (install-gui)

./shtil install-gui \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ"

Shturval v2 — внутренний KubeAPI, внешний Ingress

Схемы: с CoreHA на клиенте, без него на схеме клиента.

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="10.11.12.100" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --use-external-ingress-lb=true \
  --cluster-name="mgmt-cluster"

Shturval v2 — внутренний KubeAPI и внутренний Ingress

Схема: внутренний Ingress (VIP Worker).

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster"

Shturval v2 — внешний KubeAPI и внешний Ingress

Схема: оба внешних балансировщика.

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="api.example.corp" \
  --use-external-kubeapi-lb=true \
  --ingress-default-fqdn="*.apps.example.corp" \
  --use-external-ingress-lb=true \
  --cluster-name="mgmt-cluster"

Shturval v2 Stand-alone — внутренний KubeAPI и внутренний Ingress

Схема: stand-alone, оба VIP внутри кластера.

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster"

Shturval v2 Stand-alone — внутренний KubeAPI, внешний Ingress

Схема: stand-alone и внешний Ingress LB.

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1,10.11.12.2,10.11.12.3" \
  --worker-nodes="10.11.12.11,10.11.12.12,10.11.12.13" \
  --api-endpoint="10.11.12.100" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --use-external-ingress-lb=true \
  --cluster-name="mgmt-cluster"

oVirt / VMware vSphere — внутренний KubeAPI, внешний Ingress

Схема: oVirt и vSphere.

./shtil install-cli ovirt \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --api-endpoint="10.11.12.100" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --use-external-ingress-lb=true \
  --url-provider="https://ovirt.example.corp/ovirt-engine/api" \
  --user-provider="admin@internal" \
  --password-provider="Example-Ovirt-Pass1" \
  --datacenter-provider="Default" \
  --datacenter-cluster-provider="Default" \
  --vnic-profile-provider="ovirtmgmt" \
  --template="rocky9-template" \
  --provider-csi-storage="data-domain-1" \
  --cluster-name="mgmt-cluster"
./shtil install-cli vsphere \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --api-endpoint="10.11.12.100" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --use-external-ingress-lb=true \
  --address-vcenter="vcenter.example.corp" \
  --user-vcenter="administrator@vsphere.local" \
  --password-vcenter="Example-Vcenter-Pass1" \
  --provider-datacenter="/Example-Datacenter" \
  --provider-datastore="datastore1" \
  --provider-resource-pool="/Example-Datacenter/host/Example-Cluster/Resources/Example-Pool" \
  --provider-network="/Example-Datacenter/network/VM-Network" \
  --provider-folder="/Example-Datacenter/vm/workloads" \
  --template="rocky9-template" \
  --cluster-name="mgmt-cluster"

oVirt / VMware vSphere — CoreHA на клиенте

Схема: CoreHA DNS на клиенте. Команды установки кластера управления те же, что в подразделе «внутренний KubeAPI, внешний Ingress».

oVirt / VMware vSphere — внутренний KubeAPI и внутренний Ingress

Схема: оба VIP внутри кластера.

./shtil install-cli ovirt \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --url-provider="https://ovirt.example.corp/ovirt-engine/api" \
  --user-provider="admin@internal" \
  --password-provider="Example-Ovirt-Pass1" \
  --datacenter-provider="Default" \
  --datacenter-cluster-provider="Default" \
  --vnic-profile-provider="ovirtmgmt" \
  --template="rocky9-template" \
  --provider-csi-storage="data-domain-1" \
  --cluster-name="mgmt-cluster"
./shtil install-cli vsphere \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --address-vcenter="vcenter.example.corp" \
  --user-vcenter="administrator@vsphere.local" \
  --password-vcenter="Example-Vcenter-Pass1" \
  --provider-datacenter="/Example-Datacenter" \
  --provider-datastore="datastore1" \
  --provider-resource-pool="/Example-Datacenter/host/Example-Cluster/Resources/Example-Pool" \
  --provider-network="/Example-Datacenter/network/VM-Network" \
  --provider-folder="/Example-Datacenter/vm/workloads" \
  --template="rocky9-template" \
  --cluster-name="mgmt-cluster"

OpenStack, VK Clouf, Selectel — внешние LB

Схема: внешние LB для KubeAPI и Ingress.

В справке install-cli перечислены подкоманды openstack, vkcloud, selectel. Полные таблицы флагов см. в разделе Справочник флагов install-cli на этой странице.

./shtil install-cli openstack \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --use-external-kubeapi-lb=true \
  --use-external-ingress-lb=true \
  --url-auth="https://openstack.example.com:5000/v3" \
  --project-id="example-project-id" \
  --project-domain-id="example-project-domain-id" \
  --user-domain-name="users" \
  --login="openstack-admin" \
  --password="Openstack-Example-Pass1" \
  --cloud-name="openstack" \
  --ssh-key-name="my-ssh-keypair" \
  --node-cidr="10.0.0.0/24" \
  --external-network-id="external-network-uuid" \
  --flavors="flavor-medium,flavor-large" \
  --volume-types="fast-ssd,default" \
  --machine-image-name="rocky9-shturval-template"
./shtil install-cli vkcloud \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --use-external-kubeapi-lb=true \
  --use-external-ingress-lb=true \
  --url-auth="https://openstack.example.com:5000/v3" \
  --cloud-name="vkcloud" \
  --project-id="example-project-id" \
  --project-domain-id="example-project-domain-id" \
  --user-domain-name="users" \
  --login="openstack-admin" \
  --password="Openstack-Example-Pass1" \
  --ssh-key-name="my-ssh-keypair" \
  --node-cidr="10.0.0.0/24" \
  --external-network-id="external-network-uuid" \
  --flavors="flavor-medium,flavor-large" \
  --volume-types="fast-ssd,default" \
  --machine-image-name="rocky9-shturval-template"
./shtil install-cli selectel \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --use-external-kubeapi-lb=true \
  --use-external-ingress-lb=true \
  --url-auth="https://openstack.example.com:5000/v3" \
  --cloud-name="selectel" \
  --project-id="example-project-id" \
  --project-domain-id="example-project-domain-id" \
  --user-domain-name="users" \
  --login="openstack-admin" \
  --password="Openstack-Example-Pass1" \
  --ssh-key-name="my-ssh-keypair" \
  --node-cidr="10.0.0.0/24" \
  --external-network-id="external-network-uuid" \
  --flavors="flavor-medium,flavor-large" \
  --volume-types="fast-ssd,default" \
  --machine-image-name="rocky9-shturval-template"

Yandex Cloud

./shtil install-cli yandex \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --yandex-key-path="/home/admin/yandex-sa-key.json" \
  --folder-id="b1g-folder-id" \
  --network-id="enp-network-id" \
  --subnet-id="e9b-subnet-id" \
  --zone-id="ru-central1-a" \
  --allowed-platform-ids="standard-v3" \
  --allowed-volume-types="network-ssd,network-hdd" \
  --template="fd8-image-id" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --enable-csi=true

Пример: минимальная конфигурация (1 Control Plane)

Микрокластер — вариант управляющего кластера на одном Control Plane узле (6 vCPU, 8 GiB RAM, 80 GiB диск). Удобен для испытаний и пилотов. Требования: минимальная конфигурация в требованиях.

Обратите внимание! Внимание: не для production. До 5 клиентских кластеров. Логирование, мониторинг и резервное копирование в этом пресете не ставятся.

Консоль (install-cli):

В команде нет Worker-узлов, поэтому указан --minimal. Без этого флага shtil для Shturval v2 такую установку не начнёт.

./shtil install-cli shturvalv2 \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="shturval" \
  --path-ssh-private-key="/home/admin/.ssh/id_ed25519" \
  --controlplane-nodes="10.11.12.1" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster" \
  --minimal=true

oVirt / совместимые виртуализации

./shtil install-cli ovirt \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --url-provider="https://ovirt.example.corp/ovirt-engine/api" \
  --user-provider="admin@internal" \
  --password-provider="Example-Ovirt-Pass1" \
  --datacenter-provider="Default" \
  --datacenter-cluster-provider="Default" \
  --vnic-profile-provider="ovirtmgmt" \
  --template="rocky9-template" \
  --provider-csi-storage="data-domain-1" \
  --api-endpoint="10.11.12.100" \
  --ingress-vip="10.11.12.101" \
  --cluster-name="mgmt-cluster"

При необходимости: --sub-type-provider, --control-plane, --workers, ресурсы ВМ (--cores-*, --memory-*, --disk-*), --allow-csi, --tls-insecure-provider, --tls-cert-path-provider — см. ./shtil install-cli ovirt --help.

vSphere

Используйте ./shtil install-cli vsphere и параметры vCenter (--address-vcenter, учётная запись, датацентр, datastore, ресурсный пул, сеть, папка, шаблон). Полный список: ./shtil install-cli vsphere --help.

OpenStack / VK Cloud / Selectel

ЗапускНазначение
./shtil install-cli openstackOpenStack (CAPOS)
./shtil install-cli vkcloudVK Cloud
./shtil install-cli selectelSelectel

Ориентируйтесь на OpenStack и CAPOS и на вывод shtil install-cli openstack --help для перечисления флагов (--url-auth, --project-id, --ssh-key-name, --external-network-id, образы машин и т.д.). Подкомандная справка обязательна для облаков: API и имена объектов зависят от проекта.

Yandex Cloud

Control Plane по умолчанию один. --workers=0 не создаёт Worker-узлы. --minimal=true ставит минимальный набор сервисов.

./shtil install-cli yandex \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --yandex-key-path="/home/admin/yandex-sa-key.json" \
  --folder-id="b1g-folder-id" \
  --network-id="enp-network-id" \
  --subnet-id="e9b-subnet-id" \
  --zone-id="ru-central1-a" \
  --allowed-platform-ids="standard-v3" \
  --allowed-volume-types="network-ssd,network-hdd" \
  --template="fd8-image-id" \
  --ingress-default-fqdn="*.apps.example.corp" \
  --workers=0 \
  --minimal=true

Установка с YAML

Параметры установки передаются YAML-файлом с помощью флага --yaml-path. Сначала применяется YAML, затем только явно указанные флаги CLI переопределяют отдельные поля.

Провайдеры и типы документов

Примеры YAML-файла для заполнения своими значениями параметров выводит подкоманда example с указанием на провайдер:

Shturval v2:

./shtil install-cli shturvalv2 example > install.yaml

oVirt (и совместимые виртуализации):

./shtil install-cli ovirt example > install.yaml

VMware vSphere:

./shtil install-cli vsphere example > install.yaml

OpenStack:

./shtil install-cli openstack example > install.yaml

VK Cloud:

./shtil install-cli vkcloud example > install.yaml

Selectel:

./shtil install-cli selectel example > install.yaml

Yandex Cloud:

./shtil install-cli yandex example > install.yaml

Конфигурация состоит из разделов: конфигурации провайдера и самого кластера, разделённых ---.

ОбластьТип первого документаТип второго документа
Shturval v2CapsmProviderConfigCapsmClusterConfig
oVirtCapovProviderConfigCapovClusterConfig
vSphereCapvsProviderConfigCapvsClusterConfig
OpenStack, VK Cloud, SelectelCaposProviderConfigCaposClusterConfig
Yandex CloudCapycProviderConfigCapycClusterConfig

Конструкторы YAML

Интерактивные формы для подготовки манифестов (два файла: провайдер и кластер):

Параметры YAML-манифеста

Обязательность ниже приведена по аннотированным шаблонам YAML. Поля без явного значения можно оставить закомментированными, если они необязательны и подходит значение по умолчанию.

Общие параметры кластера

Параметр YAMLПровайдерыОбязательностьОписание
typeВсеДаТип документа: CapsmProviderConfig, CapsmClusterConfig, CapovProviderConfig, CapovClusterConfig, CapvsProviderConfig, CapvsClusterConfig, CaposProviderConfig, CaposClusterConfig, CapycProviderConfig или CapycClusterConfig
clusterВсе cluster-документыДаКонфигурация кластера управления
cluster.apiEndpointShturval v2, oVirt, vSphereДаАдрес API-сервера кластера управления: IP или FQDN без порта и протокола
cluster.clusterNameВсе, кроме Yandex CloudНетИмя кластера управления. По умолчанию cluster-management
cluster.clusterNameYandex CloudДаИмя кластера управления. В шаблоне shturval-management. Пустое имя установщик не принимает
cluster.enabledServicesВсеНетСписок включённых сервисов. Если cluster.minimal: true, значение игнорируется
cluster.externalKubeAPILBShturval v2НетИспользовать внешний балансировщик для API-сервера. По умолчанию false
cluster.externalingresslbВсе, кроме Yandex CloudНетИспользовать внешний балансировщик для Ingress. По умолчанию false
cluster.externalingresslbYandex CloudНетВнешний балансировщик Ingress. По умолчанию true
cluster.ingressShturval v2, oVirt, vSphereДа, если не задан cluster.ingressvipWildcard DNS-запись для Ingress, например, <cluster_name>.<base_domain>
cluster.ingressOpenStack, VK Cloud, Selectel, Yandex CloudНетDNS-запись Ingress. Допустимы apps.example.corp и *.apps.example.corp. Для Yandex Cloud имеет смысл при externalingresslb: true
cluster.ingressvipShturval v2, vSphereДа, если cluster.externalingresslb: falseVIP-адрес Ingress-контроллера
cluster.ingressvipoVirtНетVIP-адрес Ingress-контроллера; используется при cluster.externalingresslb: false
cluster.ingressvipYandex CloudНетVIP Ingress. Задаётся только при externalingresslb: false и не вместе с cluster.ingress
cluster.controlPlaneNodesCountВсеНетКоличество Control Plane узлов. Минимум 1, по умолчанию 1
cluster.podSubnetВсеНетCIDR подсети Pod. По умолчанию 172.16.0.0/16
cluster.serviceSubnetВсеНетCIDR подсети Service. По умолчанию 10.96.0.0/12
cluster.secureВсеНетВключить расширенные параметры безопасности. По умолчанию false
cluster.deletePersistentVolumesoVirt, vSphere, OpenStack, VK Cloud, SelectelНетУдалять persistent volumes при удалении кластера. true / false. Если параметр не задан, используется политика профиля кластера
cluster.shturvalVersionВсеНетВерсия платформы. Должна соответствовать версии shtil; в Shturval v2 переданное значение игнорируется
cluster.minimalВсеНетМинимальный набор сервисов. Если true, cluster.enabledServices игнорируется
cluster.overwriteВсеНетПерезаписывать провайдер, если он уже существует. По умолчанию false
cluster.followInstallLogsВсеНетВывод логов подов bootstrap кластера в stderr. Поды неймспейсов Cluster API (capi-system, capi-kubeadm-bootstrap-system, capi-kubeadm-control-plane-system), shturval-cluster-manager и неймспейс контроллера провайдера. Строка начинается с [неймспейс/под]. По умолчанию выключено
cluster.installLogsFileВсеНетПуть файла с логами подов bootstrap кластера. Может быть задан только при followInstallLogs: true. Если путь пустой, shtil пишет в каталог запуска команды файл shtil-install-<имя-кластера>.log

Сертификаты Ingress

Параметр YAMLОбязательностьОписание
ingressCertsНетСертификат кластера. Если не задан, используется самоподписной сертификат. Можно выбрать только один подтип: ca, tls или acme
ingressCerts.ca.crtPathНет, но вместе с ingressCerts.ca.keyPathПуть к цепочке сертификатов в PEM
ingressCerts.ca.keyPathНет, но вместе с ingressCerts.ca.crtPathПуть к закрытому ключу промежуточного сертификата CA
ingressCerts.tls.crtPathНет, но вместе с ingressCerts.tls.keyPathПуть к корпоративному или самоподписному TLS-сертификату для доменного имени Ingress
ingressCerts.tls.keyPathНет, но вместе с ingressCerts.tls.crtPathПуть к закрытому ключу TLS-сертификата Ingress
ingressCerts.acme.rootPathНет, но вместе с ingressCerts.acme.urlПуть к корневому сертификату CA для ACME
ingressCerts.acme.urlНет, но вместе с ingressCerts.acme.rootPathАдрес ACME-сервера с портом и путём к ресурсу
ingressCerts.acme.emailНетEmail для учётной записи Let’s Encrypt

Shturval v2 (CapsmProviderConfig)

Параметр YAMLОбязательностьОписание
nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
credentials.SSHДаОбщие учётные данные для SSH-подключения к хостам
credentials.SSH.privateKeyДаПуть к приватному SSH-ключу
credentials.SSH.userNameДаИмя пользователя для SSH
credentials.SSH.sshUserPasswordНетПароль SSH-пользователя для команд sudo на хостах с общими учётными данными. Если не задан, sudo выполняется без пароля. См. Пароль SSH-пользователя для sudo
hostsДаСписок хостов для узлов кластера
hosts[].addressДаIP-адрес или FQDN хоста
hosts[].labelsSelectorДаСелектор с меткой роли хоста role
hosts[].credentialsНетnull — общие учётные данные из credentials.SSH. Чтобы задать свои, укажите объект SSH с userName, privateKey и при необходимости sshUserPassword
hosts[].credentials.SSH.sshUserPasswordНетПароль SSH-пользователя для sudo на этом хосте. Задаётся, когда hosts[].credentials не null. Если пароль не задан ни здесь, ни в credentials.SSH.sshUserPassword, sudo выполняется без пароля

Shturval v2 (CapsmClusterConfig)

Параметр YAMLОбязательностьОписание
providerНетКонфигурации групп узлов; по умолчанию группы Control Plane и Worker предзаполнены
provider.controlPlaneNodeConfig.controlPlaneSelector.matchExpressionsНетСовпадающие выражения хостов для группы Control Plane
provider.controlPlaneNodeConfig.controlPlaneSelector.matchLabels.roleНетМетка хостов Control Plane. Роль должна быть controlplane
provider.controlPlaneNodeConfig.nodeConfig.groupNameНе переопределятьИмя группы Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.roles[].nameНе переопределятьРоль группы Control Plane узлов
provider.controlPlaneNodeConfig.nameНетИмя экземпляра провайдера; должно совпадать с name в CapsmProviderConfig
provider.workerNodeConfigsНетКонфигурация Worker-узлов; создание дополнительных Worker-групп недоступно
provider.workerNodeConfigs[].workersCountНетКоличество узлов в дефолтной Worker-группе. По умолчанию 3
provider.workerNodeConfigs[].workerSelector.matchExpressionsНетСовпадающие выражения хостов для Worker-группы
provider.workerNodeConfigs[].workerSelector.matchLabels.roleНетМетка роли хоста для Worker-группы. Рекомендовано и по умолчанию workers
provider.workerNodeConfigs[].nodeConfig.groupNameНетИмя Worker-группы, например, default или infra
provider.workerNodeConfigs[].nodeConfig.roles[].nameНе переопределятьРоль группы Worker-узлов

oVirt / zVirt / HostVM / РЕД Виртуализация / ROSA Virtualization (CapovProviderConfig)

Параметр YAMLОбязательностьОписание
nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
credentials.oVirtДаУчётные данные для подключения к API Engine oVirt
credentials.oVirt.urlДаURL API Engine oVirt с суффиксом /ovirt-engine/api
credentials.oVirt.usernameДаИмя пользователя для аутентификации в API oVirt
credentials.oVirt.passwordДаПароль для аутентификации в API oVirt
connectionНетНастройки TLS-подключения к API oVirt
connection.tlsInsecureНетОтключить проверку TLS-сертификата. По умолчанию true
connection.tlsCertPathНетПуть к CA-сертификату для проверки TLS при tlsInsecure: false
providerConfigДаКонфигурация провайдера oVirt
providerConfig.subtypeНетПодтип oVirt-подобного провайдера: zvirt, hostvm, redvirt, rosavirt
providerConfig.datacenterДаИмя датацентра oVirt
providerConfig.datacenterClusterДаИмя кластера oVirt внутри датацентра
providerConfig.vnicProfileДаИмя VNIC-профиля для сетевых интерфейсов ВМ
providerConfig.templateДаИмя шаблона ВМ в выбранном датацентре
providerConfig.csiStorageНетИмя домена хранения для динамических постоянных томов через CSI; пустое значение отключает CSI
providerConfig.diskCloneНетКлонировать диск ВМ при создании. true или false. Если поле не задано, действует feature gate disk-clone
providerConfig.vmTypeНетТип создаваемых ВМ. По умолчанию server
providerConfig.templateNetInterfaceНетИмя сетевого интерфейса в шаблоне. По умолчанию eth0

oVirt / zVirt / HostVM / РЕД Виртуализация / ROSA Virtualization (CapovClusterConfig)

Параметр YAMLОбязательностьОписание
providerНетКонфигурации узлов; по умолчанию группы Control Plane и Worker предзаполнены
provider.nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
provider.controlPlaneNodeConfigНетКонфигурация Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.groupNameНе переопределятьИмя группы Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.roles[].nameНе переопределятьРоль группы Control Plane узлов
provider.controlPlaneNodeConfig.capovNodeConfig.cpu.coresНетКоличество ядер CPU на Control Plane узел. По умолчанию 4
provider.controlPlaneNodeConfig.capovNodeConfig.cpu.socketsНетКоличество CPU-сокетов на Control Plane узел. По умолчанию 1
provider.controlPlaneNodeConfig.capovNodeConfig.cpu.threadsНетКоличество потоков CPU на сокет. По умолчанию 1
provider.controlPlaneNodeConfig.capovNodeConfig.memory.sizeMBНетРазмер памяти в МБ на Control Plane узел. По умолчанию 16000
provider.controlPlaneNodeConfig.capovNodeConfig.memory.guaranteedMBНетГарантированная память в МБ; должна совпадать с sizeMB. По умолчанию 16000
provider.controlPlaneNodeConfig.capovNodeConfig.osDiskSizeGBНетРазмер диска ОС в ГБ на Control Plane узел. По умолчанию 100
provider.controlPlaneNodeConfig.capovNodeConfig.diskCloneНетКлонировать диск ВМ узлов Control Plane. Если поле не задано, берётся providerConfig.diskClone, затем feature gate disk-clone
provider.workerNodeConfigsНетКонфигурация Worker-узлов
provider.workerNodeConfigs[].nodeConfig.groupNameНетИмя Worker-группы, например, default или infra
provider.workerNodeConfigs[].nodeConfig.roles[].nameНе переопределятьРоль группы Worker-узлов
provider.workerNodeConfigs[].workersCountНетКоличество узлов в дефолтной Worker-группе. По умолчанию 3
provider.workerNodeConfigs[].capovNodeConfig.cpu.coresНетКоличество ядер CPU на Worker-узел. По умолчанию 8
provider.workerNodeConfigs[].capovNodeConfig.cpu.socketsНетКоличество CPU-сокетов на Worker-узел. По умолчанию 1
provider.workerNodeConfigs[].capovNodeConfig.cpu.threadsНетКоличество потоков CPU на сокет. По умолчанию 1
provider.workerNodeConfigs[].capovNodeConfig.memory.sizeMBНетРазмер памяти в МБ на Worker-узел. По умолчанию 32000
provider.workerNodeConfigs[].capovNodeConfig.memory.guaranteedMBНетГарантированная память в МБ; должна совпадать с sizeMB. По умолчанию 32000
provider.workerNodeConfigs[].capovNodeConfig.osDiskSizeGBНетРазмер диска ОС в ГБ на Worker-узел. По умолчанию 300
provider.workerNodeConfigs[].capovNodeConfig.diskCloneНетКлонировать диск ВМ этой группы. Если поле не задано, берётся providerConfig.diskClone, затем feature gate disk-clone

vSphere (CapvsProviderConfig)

Параметр YAMLОбязательностьОписание
nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
credentials.vSphereДаУчётные данные для подключения к vCenter
credentials.vSphere.addressVcenterДаIP-адрес или FQDN vCenter
credentials.vSphere.usernameVcenterДаИмя пользователя учётной записи vCenter
credentials.vSphere.passwordVcenterДаПароль учётной записи vCenter
connectionНетНастройки TLS-соединения для vCenter
connection.tlsInsecureНетОтключить проверку TLS-сертификатов. По умолчанию true
connection.tlsCertPathНетПуть к CA-сертификату для проверки TLS при tlsInsecure: false
providerConfigДаКонфигурация провайдера vSphere
providerConfig.datacenterДаИмя datacenter vSphere
providerConfig.datastoreДаDatastore в datacenter
providerConfig.resourcePoolДаПуть к пулу ресурсов для ВМ
providerConfig.networkДаИмя сети для сетевых интерфейсов ВМ
providerConfig.folderДаПуть к папке ВМ в инвентаре vCenter
providerConfig.templateДаИмя шаблона ВМ в выбранном датацентре
providerConfig.cloneModeНетРежим клонирования: linkedClone или fullClone. По умолчанию linkedClone
providerConfig.storagePolicyНетИмя политики хранения для дисков ВМ
providerConfig.enableCSIНетВключить драйвер vSphere CSI. По умолчанию true
providerConfig.templateNetInterfaceНетИмя сетевого интерфейса в шаблоне. По умолчанию eth0

vSphere (CapvsClusterConfig)

Параметр YAMLОбязательностьОписание
providerНетКонфигурации узлов; по умолчанию группы Control Plane и Worker предзаполнены
provider.nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
provider.controlPlaneNodeConfigНетКонфигурация Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.groupNameНе переопределятьИмя группы Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.roles[].nameНе переопределятьРоль группы Control Plane узлов
provider.controlPlaneNodeConfig.capvsNodeConfig.cpu.coresНетКоличество ядер CPU на Control Plane узел. По умолчанию 4
provider.controlPlaneNodeConfig.capvsNodeConfig.memory.sizeMBНетРазмер памяти в МБ на Control Plane узел. По умолчанию 16000
provider.controlPlaneNodeConfig.capvsNodeConfig.osDiskSizeGBНетРазмер диска ОС в ГБ на Control Plane узел. По умолчанию 100
provider.workerNodeConfigsНетКонфигурация Worker-узлов
provider.workerNodeConfigs[].nodeConfig.groupNameНе переопределятьИмя дефолтной Worker-группы
provider.workerNodeConfigs[].nodeConfig.roles[].nameНе переопределятьРоль группы Worker-узлов
provider.workerNodeConfigs[].workersCountНетКоличество узлов в дефолтной Worker-группе. По умолчанию 3
provider.workerNodeConfigs[].capvsNodeConfig.cpu.coresНетКоличество ядер CPU на Worker-узел. По умолчанию 8
provider.workerNodeConfigs[].capvsNodeConfig.memory.sizeMBНетРазмер памяти в МБ на Worker-узел. По умолчанию 32000
provider.workerNodeConfigs[].capvsNodeConfig.osDiskSizeGBНетРазмер диска ОС в ГБ на Worker-узел. По умолчанию 300

OpenStack / VK Cloud / Selectel (CaposProviderConfig)

Параметр YAMLОбязательностьОписание
nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
cloudNameДаИмя облака, например, vkcloud или openstack
connectionДаУчётные данные для подключения к OpenStack
connection.authURLДаURL службы авторизации OpenStack Keystone с портом
connection.projectIDДаID проекта OpenStack
connection.projectDomainIDДаID домена проекта OpenStack
connection.tlsInsecureНетПропустить проверку TLS-сертификата API OpenStack
connection.tlsCertPathНетПуть к CA-сертификату в формате PEM
connection.regionНетИмя региона OpenStack
connection.interfaceНетИнтерфейс endpoint OpenStack, например, public или internal
connection.identityAPIVersionНетВерсия Identity API OpenStack. По умолчанию 3
connection.tokenНетТокен аутентификации; только для OpenStack, нельзя использовать одновременно с login и password
connection.loginНет, но вместе с connection.passwordИмя сервисной учётной записи с ролями heat_stack_owner, admin
connection.passwordНет, но вместе с connection.loginПароль сервисной учётной записи
connection.userDomainNameНетИмя домена пользователя; должен быть задан для OpenStack и VK Cloud
resourcesДаКонфигурация провайдера OpenStack
resources.sshKeyNameДаИмя пары SSH-ключей для доступа к ВМ
resources.nodeCIDRДаПодсеть узлов; не должна пересекаться с cluster.podSubnet и cluster.serviceSubnet
resources.externalNetworkIDДаID внешней сети для floating IP и внешнего доступа
resources.flavorsДаСписок типов ВМ
resources.volumeTypesДаСписок типов дисков
resources.machineImageNameДаИмя шаблона ВМ; версия Kubernetes шаблона должна соответствовать версии Штурвала и shtil
resources.availabilityZonesНетСписок зон доступности
resources.managedSecurityGroupsНетУправление группами безопасности. По умолчанию true
resources.disablePortSecurityНетОтключить port security. По умолчанию false
resources.dnsНетDNS-серверы
resources.enableCSIНетВключить интеграцию CSI. По умолчанию false

OpenStack / VK Cloud / Selectel (CaposClusterConfig)

Параметр YAMLОбязательностьОписание
providerНетКонфигурации узлов; по умолчанию группы Control Plane и Worker предзаполнены
provider.nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider
provider.controlPlaneNodeConfigНетКонфигурация Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.groupNameНе переопределятьИмя группы Control Plane узлов
provider.controlPlaneNodeConfig.nodeConfig.roles[].nameНе переопределятьРоль группы Control Plane узлов
provider.controlPlaneNodeConfig.caposNodeConfig.openstackFlavorNameНетТип ВМ для Control Plane узлов; если не задан, используется первый из resources.flavors
provider.controlPlaneNodeConfig.caposNodeConfig.volumeSizeНетРазмер корневого тома Control Plane узлов в ГБ. По умолчанию 100
provider.controlPlaneNodeConfig.caposNodeConfig.volumeTypeНетТип диска Control Plane узлов; если не задан, используется первый из resources.volumeTypes
provider.controlPlaneNodeConfig.caposNodeConfig.availabilityZoneНетЗона доступности Control Plane узлов; если не задана, используется первая из resources.availabilityZones
provider.workerNodeConfigsНетКонфигурация Worker-узлов
provider.workerNodeConfigs[].nodeConfig.groupNameНе переопределятьИмя дефолтной Worker-группы
provider.workerNodeConfigs[].nodeConfig.roles[].nameНе переопределятьРоль группы Worker-узлов
provider.workerNodeConfigs[].workersCountНетКоличество узлов в дефолтной Worker-группе. По умолчанию 3
provider.workerNodeConfigs[].caposNodeConfig.openstackFlavorNameНетТип ВМ для Worker-узлов; если не задан, используется первый из resources.flavors
provider.workerNodeConfigs[].caposNodeConfig.volumeSizeНетРазмер корневого тома Worker-узлов в ГБ. По умолчанию 300
provider.workerNodeConfigs[].caposNodeConfig.volumeTypeНетТип диска Worker-узлов; если не задан, используется первый из resources.volumeTypes
provider.workerNodeConfigs[].caposNodeConfig.availabilityZoneНетЗона доступности Worker-узлов; если не задана, используется первая из resources.availabilityZones

Yandex Cloud (CapycProviderConfig)

Параметр YAMLОбязательностьОписание
nameНетИмя экземпляра провайдера. По умолчанию cluster-management-provider. Строчные латинские буквы, цифры и дефис. Имя create недоступно
connectionДаУчётные данные для подключения к Yandex Cloud
connection.keyPathДаПуть к JSON-ключу сервисного аккаунта. В запрос уходит содержимое файла
connection.folderIdДаID папки. В конфигурации одна папка
networkIDДаID сети Yandex Cloud
subnetIDДаID подсети Yandex Cloud
zoneIDДаЗона доступности, например, ru-central1-a
allowedPlatformIDsДаСписок допустимых platform ID
allowedVolumeTypesДаСписок допустимых типов дисков
templateДаID образа ВМ
kubeVersionНетВерсия Kubernetes образа. Если поле пустое, её подставляет shtil из версии платформы
loadBalancerTypeНетТип балансировщика: ALB или NLB. По умолчанию ALB
loadBalancerInternalНетВнутренний балансировщик. По умолчанию false
enableCSIНетВключить CSI (shturval-capy-csi) в кластере. По умолчанию false

Yandex Cloud (CapycClusterConfig)

Параметр YAMLОбязательностьОписание
cluster.clusterNameДаИмя кластера управления. В шаблоне shturval-management
cluster.externalingresslbНетВнешний балансировщик Ingress. По умолчанию true
cluster.ingressНетDNS-запись Ingress, apps.example.corp или *.apps.example.corp. Используется при externalingresslb: true
cluster.ingressvipНетVIP Ingress. Только при externalingresslb: false и не вместе с cluster.ingress
cluster.controlPlaneNodesCountНетЧисло узлов Control Plane. Положительное нечётное, по умолчанию 1
cluster.podSubnetНетCIDR подсети Pod. По умолчанию 172.16.0.0/16
cluster.serviceSubnetНетCIDR подсети Service. По умолчанию 10.96.0.0/12
cluster.secureНетРасширенные параметры безопасности. По умолчанию false
cluster.shturvalVersionНетВерсия платформы. Должна совпадать с версией shtil
cluster.minimalНетМинимальный набор сервисов. Если true, cluster.enabledServices игнорируется
cluster.enabledServicesНетСписок включённых сервисов репозитория Shturval
providerНетКонфигурации узлов. Если блок не задан, shtil подставляет размеры по умолчанию и группу default
provider.nameНетИмя экземпляра провайдера. Если задано, заменяет name из CapycProviderConfig
provider.controlPlaneNodeConfig.nodeConfig.groupNameНе переопределятьИмя группы Control Plane
provider.controlPlaneNodeConfig.nodeConfig.roles[].nameНе переопределятьРоль группы Control Plane
provider.controlPlaneNodeConfig.capycNodeConfig.platformIDНетPlatform ID Control Plane. Если не задан, берётся первый из allowedPlatformIDs
provider.controlPlaneNodeConfig.capycNodeConfig.cpuCoresНетvCPU Control Plane. По умолчанию 4, не меньше 4
provider.controlPlaneNodeConfig.capycNodeConfig.memorySizeНетПамять Control Plane, например, 16000Mi. По умолчанию 16000Mi, не меньше 8Gi
provider.controlPlaneNodeConfig.capycNodeConfig.volumeSizeНетРазмер диска Control Plane, например, 60Gi. По умолчанию 60Gi
provider.controlPlaneNodeConfig.capycNodeConfig.volumeTypeНетТип диска Control Plane. Если не задан, берётся первый из allowedVolumeTypes
provider.workerNodeConfigsНетГруппы Worker. Первая группа без роли infra становится группой default. Группа с ролью node-role.kubernetes.io/infra обрабатывается как infra. Если такой группы нет, shtil добавляет группу infra с 0 узлов и размером ВМ как у Worker
provider.workerNodeConfigs[].nodeConfig.groupNameНетИмя группы, например, default или infra. Имена уникальны: infra нельзя отдать другой группе, а группу infra нельзя назвать default
provider.workerNodeConfigs[].nodeConfig.roles[].nameНетРоль группы: node-role.kubernetes.io/workers или node-role.kubernetes.io/infra
provider.workerNodeConfigs[].workersCountНетЧисло узлов группы, целое от 0. Для default по умолчанию 3
provider.workerNodeConfigs[].capycNodeConfig.cpuCoresНетvCPU Worker. По умолчанию 8, не меньше 4
provider.workerNodeConfigs[].capycNodeConfig.memorySizeНетПамять Worker. По умолчанию 32000Mi, не меньше 8Gi
provider.workerNodeConfigs[].capycNodeConfig.volumeSizeНетДиск Worker. По умолчанию 300Gi
provider.workerNodeConfigs[].capycNodeConfig.platformIDНетPlatform ID Worker. Если не задан, берётся первый из allowedPlatformIDs
provider.workerNodeConfigs[].capycNodeConfig.volumeTypeНетТип диска Worker. Если не задан, берётся первый из allowedVolumeTypes

Подсети и VIP должны быть согласованы с требованиями к открытому контуру и с топологией в схемах межсетевого взаимодействия.

При коллизии CIDR — проверка пересечения подсетей при создании кластера.

Шаги

  1. Сохраните вывод нужной подкоманды example в файл.
  2. Отредактируйте манифест: провайдер, кластер, узлы, VIP, подсети и при необходимости сертификаты и сервисы (состав компонентов см. также установку сервисов).
  3. Запустите установку (открытый контур, стандартный реестр — обычно достаточно лицензии):
./shtil install-cli ТИП-ПРОВАЙДЕРА \
  --yaml-path="/home/admin/install.yaml" \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ"

Пример YAML-манифеста для Shturval v2 (два документа в одном файле, разделитель ---). Условные адреса в одном формате с примерами CLI: узлы 10.11.12.x, KubeAPI 10.11.12.100, Ingress VIP 10.11.12.101.

Первый документ — провайдер (CapsmProviderConfig):

---
type: CapsmProviderConfig
name: myprovidername
credentials:
  SSH:
    privateKey: /home/admin/.ssh/id_ed25519
    userName: shturval
    # sshUserPassword: пароль-пользователя
hosts:
  - address: 10.11.12.1
    labelsSelector: { role: controlplane }
    credentials: null
    # Свои учётные данные хоста вместо null:
    # credentials:
    #   SSH:
    #     privateKey: /home/admin/.ssh/id_ed25519
    #     userName: shturval
    #     sshUserPassword: пароль-пользователя
  - address: 10.11.12.11
    labelsSelector: { role: workers }
    credentials: null

---

type: CapsmClusterConfig
cluster:
  apiEndpoint: 10.11.12.100
  clusterName: myclustername
  controlPlaneNodesCount: 1
  ingressvip: 10.11.12.101
  podSubnet: 172.16.0.0/16
  serviceSubnet: 10.96.0.0/12
  minimal: true
provider:
  controlPlaneNodeConfig:
    controlPlaneSelector: { matchLabels: { role: controlplane } }
    nodeConfig: { groupName: control-plane, roles: [{ name: node-role.kubernetes.io/control-plane }] }
  workerNodeConfigs:
    - nodeConfig: { groupName: default, roles: [{ name: node-role.kubernetes.io/workers }] }
      workersCount: 1
      workerSelector: { matchLabels: { role: workers } }

Пример YAML-манифеста для oVirt с несколькими группами Worker-узлов. В provider.workerNodeConfigs задайте отдельный элемент для каждой группы, например, default и infra.

---
type: CapovProviderConfig
name: sht-capov-mgmt-prov
credentials:
  oVirt:
    url: https://ovirt.example.com/ovirt-engine/api
    username: ВВЕДИТЕ-ПОЛЬЗОВАТЕЛЯ
    password: ВВЕДИТЕ-ПАРОЛЬ
connection:
  tlsInsecure: true
providerConfig:
  datacenter: DCname
  datacenterCluster: RHVLab
  vnicProfile: CHLab_LAN_3260
  template: имя-шаблона-в-инфраструктуре-ovirt
  csiStorage: CHLab_Pure_VM_Store
ingressCerts:
  ##ca:
    ##crtPath:
    ##keyPath:
  ##tls:
    ##crtPath:
    ##keyPath:

---
type: CapovClusterConfig
cluster:
  apiEndpoint: 10.XX.XXX.236
  clusterName: sht-capov-mgmt7
  controlPlaneNodesCount: 1
  ingressvip: 10.XX.XXX.237
  minimal: true
provider:
  name: sht-capov-mgmt-prov
  controlPlaneNodeConfig:
    nodeConfig:
      groupName: control-plane
    roles:
      - name: node-role.kubernetes.io/control-plane
    capovNodeConfig:
      cpu:
        cores: 8
        sockets: 1
        threads: 1
      memory:
        sizeMB: 9000
        guaranteedMB: 9000
      osDiskSizeGB: 60
  workerNodeConfigs:
    - nodeConfig:
        groupName: default
        roles:
          - name: node-role.kubernetes.io/workers
      workersCount: 1
      capovNodeConfig:
        cpu:
          cores: 8
          sockets: 1
          threads: 1
        memory:
          sizeMB: 12000
          guaranteedMB: 12000
        osDiskSizeGB: 60
    - nodeConfig:
        groupName: infra
        roles:
          - name: node-role.kubernetes.io/workers
      workersCount: 1
      capovNodeConfig:
        cpu:
          cores: 8
          sockets: 1
          threads: 1
        memory:
          sizeMB: 9000
          guaranteedMB: 9000
        osDiskSizeGB: 60

Полные аннотированные шаблоны YAML

Структура полей и комментарии к ним в актуальном виде вы получаете командой ./shtil install-cli <провайдер> example (рекомендуемый способ).

Установка одной командой с манифестом (открытый контур):

./shtil install-cli shturvalv2 \
  --yaml-path="/home/admin/install.yaml" \
  --bootstrap-license='ВАША-ЛИЦЕНЗИЯ'

Для закрытого контура к команде добавьте --bootstrap-registry и при необходимости --bootstrap-insecure / --bootstrap-registry-certs-dir — см. установку без доступа к интернету.

Первые шаги после установки

ДействиеОписание
Проверьте доступОткройте URL управляющего кластера. Логин: admin, пароль — в user.conf каталога данных установщика (~/.shturval/installer или /tmp/shturval/installer) либо заданный в --password. Кластер управления должен быть в статусе Готов.
Сохраните учётные данныеСохраните пароль администратора и kubeconfig. В интерфейсе: пользовательское меню → Скачать Kubeconfig.
Настройте базовые сущностиДоставка пользователей, пул IP-адресов, провайдер и шаблон ВМ. Дальнейшие сервисы — установка сервисов; реестр платформы — сервисы репозитория; настройки узлов — конфигурация узлов (NCI).

Перед выполнением очистки временного кластера или деинсталляции платформы, если понадобится повторный доступ к уже развёрнутому интерфейсу, сохраните user.conf вручную.

Обратите внимание! экземпляр провайдера инфраструктуры, которым был развёрнут кластер управления, не следует повторно использовать как инфраструктурный провайдер для клиентских кластеров — создайте отдельный экземпляр провайдера для рабочих нагрузок (см. обзор провайдеров).

Диагностика

Быстрая проверка CLI и логирования

./shtil --help
./shtil install-gui --help
./shtil install-cli --help
./shtil install-cli shturvalv2 --help
./shtil version

Для детальных логов CLI используйте глобально --verbosity / -v (до 10).

При повторном запуске install-cli после ошибочной конфигурации на том же временном кластере смотрите флаг -y / --overwrite в справке. Лицензия со спецсимволами ($, <, >, *, &, ?, /, \) должна быть в одинарных кавычках.

Раннее прерывание установки локального установщика

ПроверкаЧто делать
docker или podman в PATHИнструменты контейнеризации нужны для install-gui; при установленных обоих по умолчанию предпочтение Docker
Delegate=yes / UserNS: cpu controller needs to be delegatedПодготовка к rootless Podman
Ресурсы и ОС машины shtilСм. требования к машине shtil и поддерживаемые ОС
Доступ к реестру образовС машины shtil и узлов целевого кластера: curl -v https://r.shturval.tech

Ошибки SSH (Shturval v2)

СимптомДействие
Permission deniedПроверьте ключ и ssh-copy-id до доступа установщика
sudo: no tty presentЕсли sudo требует пароль, передайте --ssh-user-password или credentials.SSH.sshUserPassword — см. Пароль SSH-пользователя для sudo. Для sudo без пароля добавьте пользователя в sudoers, например, shturval ALL=(ALL) NOPASSWD: ALL
SELinux блокирует доступПо политике организации временно переведите в permissive или отключите SELinux для окна установки (согласуйте с ИБ)

Устойчивый кластер и сеть

СимптомДействие
Занят VIPОсвободите адреса, выделите непингуемые VIP или опишите использование балансировщиков
Подсети / overlapping CIDRСм. проверку пересечения подсетей и согласуйте --pod-subnet, --service-subnet или поля YAML
Не монтируются образы узламиСеть до r.shturval.tech и исключённые блокировки; см. также репозиторий

Дополнительно

  • Время: NTP/Chrony на узлах, расхождения не более 1–2 с.
  • Диск: ориентиры см. раздел ресурсов в требованиях для открытого контура.
  • Отладка GUI: install-gui ... --debug — контейнер локального установщика не удаляется при ошибке.