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

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

В закрытом контуре установка выполняется с локального рабочего места администратора с утилитой shtil. Узлы кластера и машина shtil должны иметь доступ к заранее подготовленному зеркалу образов.

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

Исполняемый файл shtil актуальной версией поставляется менеджером со стороны вендора с бандлом платформы вместе с артефактами для корпоративного зеркала. После распаковки бандла скопируйте утилиту на машину shtil, сделайте файл исполняемым (chmod +x ./shtil или актуальное имя бинаря). Порядок работы с бандлом и зеркалом см. на странице подготовка к установке в закрытом контуре. Версия shtil должна соответствовать версии вашего бандла.

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

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

Установка с GUI

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

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

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

Для закрытого контура обязательно укажите лицензию1 и адрес зеркала:

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

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

Если у зеркала самоподписной сертификат, используйте один из вариантов.

Пропустить проверку TLS зеркала:

./shtil install-gui \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
  --bootstrap-insecure

Передать каталог с доверенными сертификатами зеркала:

./shtil install-gui \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
  --bootstrap-registry-certs-dir="/path/to/certs"

Обратите внимание! Важно для Docker: если на машине shtil используется Docker, флаг --bootstrap-insecure не отключает TLS-проверку на этапе первичного docker pull: эту проверку выполняет демон Docker до запуска bootstrap-кластера. До запуска shtil настройте доверие к зеркалу: добавьте CA в /etc/docker/certs.d/<registry-host:port>/ca.crt или настройте insecure-registries в /etc/docker/daemon.json, затем перезапустите Docker.

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

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

Основные параметры запуска:

ПараметрОписание
--bootstrap-licenseЛицензия платформы. Обязательна для локального установочного сценария. Если лицензия содержит специальные символы ($, <, >, *, &, ?, /, \), заключите её в одинарные кавычки
--bootstrap-registryАдрес зеркала образов. В закрытом контуре обязателен
--bootstrap-insecureОтключает проверку TLS при обращении к зеркалу. Если используется Docker дополнительно настройте доверие к зеркалу
--bootstrap-registry-certs-dirКаталог с доверенными сертификатами зеркала; не заменяет настройку /etc/docker/certs.d/ или insecure-registries для Docker
--bootstrap-kubeconfig-pathПуть к kubeconfig локального установочного кластера
--passwordПароль администратора платформы
--name, -nИмя локального установочного кластера. По умолчанию используется shturval-installer
--waitОжидание готовности Control Plane узла локального кластера
--retryКоличество повторов при ошибках установки. Слишком малые значения автоматически повышаются до 10
--debugСохраняет контейнер при неуспешной установке для диагностики

После успешного запуска команда выводит сообщение о старте установщика, учётной записи администратора и URL веб-интерфейса.

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

Если 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.
  2. Войдите под учётной записью администратора.
  3. Нажмите Создать кластер управления.
  4. Заполните мастер установки и нажмите Создать кластер на шаге проверки данных.
  5. Дождитесь завершения развёртывания. Обычно установка занимает 20-60 минут. Вы можете закрыть вкладку браузера до завершения инсталляции, по возвращению откроется страница инсталляции кластера. Подробнее о статусе инсталляции кластера управления.
Скриншот стартового экрана локального установщика

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

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

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

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

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

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

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

Шаг 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. Без пула адреса вводятся вручную.

Шаг 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 должен быть доступен с рабочей станции администратора.

Шаг 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. Подробнее — клонирование диска.

Шаг 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. Подробнее — клонирование диска.
РолиРоли узлов через запятую; они будут добавлены в лейблы узлов.

Шаг 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 учётной записи.

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

Кластер управления по умолчанию разворачивается с Gateway API. Способа управления HTTP-трафиком на этом шаге нет: внешний HTTP-трафик принимает Gateway API на Cilium. Контроллер Gateway API в Cilium и выпуск сертификатов для Gateway API в cert-manager уже включены. Модуль управления внешними подключениями (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.
Доставка приложенийКомпоненты непрерывной доставки и стратегий развёртывания.
Балансировщик нагрузкиКомпоненты распределения нагрузки и управления трафиком.
Инструменты ИБАнализ конфигураций и сканирование образов.
Показать расширенные настройкиПереключает выбор с групп сервисов на отдельные сервисы и чарты.

Шаг 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. Чтобы исправить параметр, вернитесь к нужному шагу через левую панель или кнопку Назад. После проверки нажмите Создать кластер.

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

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

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

Установка занимает 20-60 минут, вы можете закрыть вкладку браузера до завершения инсталляции. При возвращении на страницу инсталляции будет доступен статус инсталляции кластера управления. При перезагрузке страницы процесс установки восстановится автоматически. По завершении инсталляции вы получите данные для входа в платформу.

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

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

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

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

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

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

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

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

Провайдеры

В закрытом контуре используйте on-premise провайдеры:

ПровайдерПодкоманда
Shturval v2shturvalv2
oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualizationovirt
VMware vSpherevsphere

Сценарии и параметры сред описаны также в документации Shturval v2, oVirt и VMware vSphere.

Общие параметры

Для закрытого контура укажите --bootstrap-registry. Если у зеркала самоподписной сертификат, добавьте --bootstrap-insecure или передайте сертификаты через --bootstrap-registry-certs-dir. Если на машине shtil используется Docker, также заранее настройте доверие к зеркалу: --bootstrap-insecure не влияет на первичный docker pull. Сетевой контекст — схемы межсетевого взаимодействия и требования к закрытому контуру.

ГруппаПараметрыНазначение
Базовая--api-endpoint, -a, --use-external-kubeapi-lb, --provider-name, --cluster-nameАдрес API управления, внешний балансировщик KubeAPI, имя экземпляра провайдера и имя кластера
Сеть--pod-subnet, --service-subnetПодсети Pod и Service по CIDR; при ошибках см. конфликт адресных пространств (подсетей)
Ingress--ingress-vip, --ingress-default-fqdn, --use-external-ingress-lbПараметры внешнего доступа к Ingress
Безопасность и сертификаты--secure, параметры PEM, ACME и TLSПолитики запросов создания кластера и сертификаты Ingress
Системные сервисы--enabled-system-services, --minimalСписок включаемых компонентов и минимальная конфигурация; см. установку сервисов
Bootstrap--existing-bootstrap-kubeconfig, --bootstrap-kubeconfig-path, --bootstrap-license1, --bootstrap-registry, --bootstrap-insecure, --bootstrap-registry-certs-dirИспользование существующего bootstrap-кластера или создание локального, лицензия и параметры зеркала
Прочее--yaml-path, -f, --platform-version, --overwrite (вместо overwrite можно писать команду -y), --cluster-kubeconfig-pathФайл настроек, версия платформы, перезапись конфликтующих ресурсов и путь итогового kubeconfig

Обратите внимание! --existing-bootstrap-kubeconfig и --bootstrap-kubeconfig-path нельзя использовать вместе. --bootstrap-license не требуется, если передан kubeconfig действующего bootstrap-кластера.

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

Shturval v2

./shtil install-cli shturvalv2 \
  --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --ssh-user="ИМЯ-ПОЛЬЗОВАТЕЛЯ" \
  --path-ssh-private-key="/path/to/private-key" \
  --controlplane-nodes="IP-CP1,IP-CP2,IP-CP3" \
  --worker-nodes="IP-W1,IP-W2,IP-W3" \
  --api-endpoint="IP-API" \
  --ingress-vip="IP-INGRESS" \
  --cluster-name="ИМЯ-КЛАСТЕРА"

Обязательные параметры для Shturval v2:

ПараметрОписание
--api-endpoint, -aАдрес API-сервера
--path-ssh-private-keyПуть к файлу приватного SSH-ключа
--ssh-userИмя пользователя для SSH
--controlplane-nodes, -cIP или FQDN хостов Control Plane через запятую
--worker-nodes, -wIP или FQDN хостов Worker через запятую. При --minimal можно не указывать. Без Worker-узлов и без --minimal установка не начнётся

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

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

ПараметрОписание
--ssh-user-passwordПароль SSH-пользователя для команд sudo. В YAML — credentials.SSH.sshUserPassword. Для отдельного хоста со своими учётными данными — hosts[].credentials.SSH.sshUserPassword

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

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

Пример минимальной конфигурации на одном Control Plane узле:

./shtil install-cli shturvalv2 \
  --bootstrap-registry="mirror.corp.local" \
  --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"

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

./shtil install-cli ovirt \
  --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --url-provider="https://OVIRT-FQDN/ovirt-engine/api" \
  --user-provider="ПОЛЬЗОВАТЕЛЬ" \
  --password-provider="ПАРОЛЬ" \
  --datacenter-provider="ДАТА-ЦЕНТР" \
  --datacenter-cluster-provider="КЛАСТЕР" \
  --vnic-profile-provider="VNIC-ПРОФИЛЬ" \
  --template="ШАБЛОН-ВМ" \
  --provider-csi-storage="STORAGE-DOMAIN" \
  --api-endpoint="IP-API" \
  --ingress-vip="IP-INGRESS" \
  --cluster-name="ИМЯ-КЛАСТЕРА"

Основные параметры провайдера:

ПараметрОписание
--url-providerURL API oVirt с суффиксом /ovirt-engine/api
--user-provider, --password-providerУчётные данные oVirt
--datacenter-provider, --datacenter-cluster-providerДата-центр и кластер
--vnic-profile-providerVNIC-профиль
--template, -tИмя шаблона ВМ
--provider-csi-storageStorage Domain для CSI
--delete-persistent-volumesУдалять PV при удалении кластера (true / false). Если флаг не указан, используется политика профиля кластера
--sub-type-providerТип совместимой виртуализации: zvirt, hostvm, redvirt, rosavirt
--control-plane, --workersКоличество узлов
--cores-*, --memory-*, --disk-*Ресурсы ВМ
--disk-clone, --disk-clone-control-plane, --disk-clone-workersКлонировать диск ВМ: экземпляр провайдера, Control Plane и группа Worker по умолчанию. Если флаг не задан, поле не отправляется

VMware vSphere

./shtil install-cli vsphere \
  --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ" \
  --address-vcenter="VCENTER-FQDN" \
  --user-vcenter="ПОЛЬЗОВАТЕЛЬ" \
  --password-vcenter="ПАРОЛЬ" \
  --provider-datacenter="ДАТА-ЦЕНТР" \
  --provider-datastore="DATASTORE" \
  --provider-resource-pool="RESOURCE-POOL" \
  --provider-network="NETWORK" \
  --provider-folder="FOLDER" \
  --template="ШАБЛОН-ВМ" \
  --api-endpoint="IP-API" \
  --ingress-vip="IP-INGRESS" \
  --cluster-name="ИМЯ-КЛАСТЕРА"

Основные параметры провайдера:

ПараметрОписание
--address-vcenter, --user-vcenter, --password-vcenterПодключение к vCenter
--provider-datacenter, --provider-datastoreДата-центр и хранилище
--provider-resource-pool, --provider-network, --provider-folderПул ресурсов, сеть и папка ВМ
--template, -tИмя шаблона ВМ
--control-plane, --workersКоличество узлов
--cpu-*, --memory-*, --disk-*Ресурсы ВМ
--enable-csi, --delete-persistent-volumes, --provider-clone-mode, --provider-storage-policyДополнительные параметры

Установка с YAML

Установка с YAML выполняется командой install-cli без веб-мастера установки. Команда также доступна через синоним install.

Параметры передаются через YAML-манифест с помощью --yaml-path или -f.

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

Провайдеры

В закрытом контуре используйте on-premise провайдеры:

ПровайдерПодкоманда
Shturval v2shturvalv2
oVirt, zVirt, HostVM, РЕД Виртуализация, ROSA Virtualizationovirt
VMware vSpherevsphere

Сценарии и параметры сред описаны также в документации Shturval v2, oVirt и VMware vSphere.

Общие параметры

Для закрытого контура укажите --bootstrap-registry. Если у зеркала самоподписной сертификат, добавьте --bootstrap-insecure или передайте сертификаты через --bootstrap-registry-certs-dir. Если на машине shtil используется Docker, также заранее настройте доверие к зеркалу: --bootstrap-insecure не влияет на первичный docker pull. Сетевой контекст — схемы межсетевого взаимодействия и требования к закрытому контуру.

ГруппаПараметрыНазначение
Базовая--api-endpoint, -a, --use-external-kubeapi-lb, --provider-name, --cluster-nameАдрес API управления, внешний балансировщик KubeAPI, имя экземпляра провайдера и имя кластера
Сеть--pod-subnet, --service-subnetПодсети Pod и Service по CIDR; при ошибках см. конфликт адресных пространств (подсетей)
Ingress--ingress-vip, --ingress-default-fqdn, --use-external-ingress-lbПараметры внешнего доступа к Ingress
Безопасность и сертификаты--secure, параметры PEM, ACME и TLSПолитики запросов создания кластера и сертификаты Ingress
Системные сервисы--enabled-system-services, --minimalСписок включаемых компонентов и минимальная конфигурация; см. установку сервисов
Bootstrap--existing-bootstrap-kubeconfig, --bootstrap-kubeconfig-path, --bootstrap-license1, --bootstrap-registry, --bootstrap-insecure, --bootstrap-registry-certs-dirИспользование существующего bootstrap-кластера или создание локального, лицензия и параметры зеркала
Прочее--yaml-path, -f, --platform-version, --overwrite(вместо overwrite можно писать команду -y), --cluster-kubeconfig-pathФайл настроек, версия платформы, перезапись конфликтующих ресурсов и путь итогового kubeconfig

Обратите внимание! --existing-bootstrap-kubeconfig и --bootstrap-kubeconfig-path нельзя использовать вместе. --bootstrap-license не требуется, если передан kubeconfig действующего bootstrap-кластера.

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

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

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

Установка по YAML-манифесту

  1. Получите шаблон для нужного провайдера:

    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
    
  2. Заполните шаблон: провайдер, кластер, узлы, VIP, подсети и при необходимости сертификаты. Сверяйте сетевые значения и VIP с требованиями к закрытому контуру и схемами межсетевого взаимодействия. Исключите пересечения CIDR см. раздел про конфликт адресных пространств. Частые поля по провайдеру описаны также в документации Shturval v2, oVirt, VMware vSphere.

  3. Запустите установку:

    ./shtil install-cli ТИП-ПРОВАЙДЕРА \
      --yaml-path="ПУТЬ/К/ФАЙЛУ.yaml" \
      --bootstrap-registry="АДРЕС-ЗЕРКАЛА" \
      --bootstrap-license="ВАША-ЛИЦЕНЗИЯ"
    

    При самоподписанном сертификате зеркала добавьте --bootstrap-insecure или --bootstrap-registry-certs-dir. При использовании Docker на машине shtil дополнительно настройте доверие к зеркалу до запуска команды.

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

ПровайдерКонфигурация провайдераКонфигурация кластера
Shturval v2CapsmProviderConfigCapsmClusterConfig
oVirtCapovProviderConfigCapovClusterConfig
VMware vSphereCapvsProviderConfigCapvsClusterConfig

Пример для Shturval v2: в первом документе — type: CapsmProviderConfig, credentials.SSH (privateKey, userName, при необходимости sshUserPassword), hosts (address, labelsSelector.role, при частных учётных данных — credentials.SSH.sshUserPassword). Во втором — type: CapsmClusterConfig, в cluster: apiEndpoint, clusterName, ingressvip, podSubnet, serviceSubnet, minimal, controlPlaneNodesCount; при необходимости — provider.controlPlaneNodeConfig, provider.workerNodeConfigs.

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

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

Второй документ — кластер (CapsmClusterConfig). В рабочем install.yaml поместите его после провайдера с разделителем --- между документами:

---
type: CapsmClusterConfig
cluster:
  apiEndpoint: 10.11.12.13
  clusterName: myclustername
  controlPlaneNodesCount: 1
  ingressvip: 10.11.12.14
  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 } }

Пример для 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

Для oVirt и VMware vSphere ориентируйтесь на актуальный шаблон команд install-cli ovirt example и install-cli vsphere example; см. страницы развёртывание через oVirt и развёртывание через VMware vSphere.

Минимальный пример запуска Shturval v2 по YAML:

./shtil install-cli shturvalv2 \
  --yaml-path="install.yaml" \
  --bootstrap-registry="mirror.corp.local" \
  --bootstrap-license="ВАША-ЛИЦЕНЗИЯ"

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

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

Каталог данных установщика по умолчанию — ~/.shturval/installer. Если домашний каталог пользователя недоступен, используется /tmp/shturval/installer. Файл с учётными данными администратора — user.conf внутри каталога данных.

Перед удалением локального установочного кластера или management-кластера сохраните user.conf, если он нужен для дальнейшего доступа к интерфейсу управления.

Диагностика

Полезные команды

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

Для более подробного вывода используйте глобальный флаг --verbosity или -v.

Ошибки подключения к зеркалу

СимптомВозможная причинаРешение
Ошибка недостижимости реестраНет TCP-доступа к хосту или порту зеркалаПроверьте DNS, маршрутизацию, firewall и значение --bootstrap-registry
Ошибки TLS при доступе к зеркалуНедоверенный или самоподписной сертификатИспользуйте --bootstrap-insecure или передайте доверенные сертификаты через --bootstrap-registry-certs-dir
Ошибка TLS Docker при первичном docker pullДемон Docker не доверяет сертификату зеркала; флаги shtil ещё не применяются на этом этапеНастройте Docker на машине shtil: положите CA в /etc/docker/certs.d/<registry-host>/ca.crt или добавьте зеркало в insecure-registries, затем перезапустите Docker и повторите запуск. См. настройку доверия Docker к зеркалу
401 UnauthorizedОшибка лицензии или настроек зеркалаПроверьте лицензию и настройки зеркала

Проверка доступности зеркала:

curl -v https://mirror.corp.local

Ошибки рабочей станции

СимптомРешение
В PATH нет контейнерного runtimeПроверьте наличие docker из состава бандла. Он нужен для install-gui и операций с локальным установочным кластером
Delegate=yes / UserNS: cpu controller needs to be delegatedПодготовка к rootless Podman
Нужна диагностика неуспешной GUI-установкиПовторите запуск install-gui с --debug, чтобы сохранить контейнер

Ошибки SSH при Shturval v2

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

Ошибки при создании постоянного кластера

СимптомРешение
VIP уже используетсяИспользуйте свободные непингуемые адреса
Подсети не совпадают / конфликт CIDRПроверьте, что адрес API находится в подсети Control Plane и что podSubnet и serviceSubnet не пересекаются с сетью кластера; см. конфликт адресных пространств
Ошибка при загрузке образовПроверьте доступ узлов к зеркалу (сервисы репозитория)

Дополнительная диагностика

  • Расхождение времени — проверьте NTP или Chrony на всех узлах и хосте зеркала.
  • Недостаточно места — проверьте, что ресурсы узлов соответствуют требованиям.
  • Проверка CLI — команда version выводит версию shturval-installer; режим вывода зависит от уровня --verbosity.