Shturval v2
Управление хостами по SSH.
Назначение
Shturval v2 — внутренний провайдер платформы «Штурвал». Он поддерживает добавление физических серверов и виртуальных машин в качестве хостов для дальнейшего использования в кластерах, а также позволяет создавать гибридные кластеры.
Провайдер не требует создания разных шаблонов для разных версий Kubernetes. При обновлении кластера, платформа “Штурвал” автоматически обновляет версию Kubernetes на узлах кластеров с провайдером Shturval v2.
Требования к хостам
Для работы с физическими серверами и виртуальными машинами провайдеру необходимы:
- доступ к хосту по SSH;
- возможность выполнять
sudo. Еслиsudoзапрашивает пароль, укажите Пароль пользователя в мастере установки или в экземпляре провайдера, передайте его из консоли или добавьте в Secret — см. Как добавить пароль для команд sudo; - установленные на хостах пакеты
iptablesиgnupg. - установленная на хостах ОС из списка поддерживаемых версий — см. поддерживаемые операционные системы в требованиях.
Создание экземпляра провайдера
На вкладке Платформа в карточке Провайдеры инфраструктуры нажмите Управлять. Откроется страница Конфигурация провайдеров. В блоке Сервисы провайдеров проверьте, включён ли Провайдер Shturval v2. Если сервис отключён, нажмите на переключатель и дождитесь запуска. Затем нажмите Добавить экземпляр провайдера → «+ Shturval v2».
Скриншот: вкладка «Платформа» — переход в конфигурацию провайдеров

Переключатель сервиса переводит связанные SSC провайдера в режим auto: сначала CRD-чарт, затем основной чарт провайдера. Дождитесь, пока сервис перейдёт в состояние готовности.

Форма конфигурации провайдера Shturval v2

Поля конфигурации
| Поле | Обязательность | Описание |
|---|---|---|
| Имя провайдера | Да | Уникальное имя для идентификации экземпляра в платформе. |
| Пул IP-адресов | Нет | Выберите пул для назначения адресов API-серверу и VIP Ingress при создании кластера. |
| Имя пользователя | Да | В блоке Общие учетные данные для хостов. Имя пользователя для подключения к хостам по SSH. |
| Пароль пользователя | Нет | Пароль пользователя SSH для команд sudo на узлах. Если поле пустое, sudo выполняется без пароля. То же поле есть при создании кластера управления. Из консоли — флаг --ssh-user-password или поле credentials.SSH.sshUserPassword, см. Пароль SSH-пользователя для sudo. |
| Версия | Нет | Версия хостов для подготовки утилитой stc. По умолчанию соответствует версии платформы. Укажите версию, с которой планируете развернуть клиентский кластер. Создание клиентского кластера с версией 2.14.0 недоступно. |
| Приватный ключ пользователя | Да | Загрузите файл с приватным ключом или введите ключ текстом. |
По умолчанию в провайдере используются общие учётные данные для всех хостов. При необходимости вы можете указать частные учётные данные для некоторых или всех хостов.
Учётные данные сохраняются в Secret кластера управления в неймспейсе shturval-capsm. Имя Secret формируется из имени экземпляра провайдера с суффиксом capsm-v2-provider-secret. Пример Secret приведён на странице Провайдер Shturval v2 (shturval-capsm).
Версия, с которой хосты готовятся утилитой stc, задаётся в ресурсе ShturvalProvider. Если планируете поднимать клиентский кластер более ранней версии, укажите её при подготовке нового экземпляра провайдера Shturval v2 или отдельно для хостов при добавлении в уже созданный экземпляр провайдера.
В ресурсе ShturvalProvider в поле spec.releaseVersion задается версия всех хостов. Для конкретного хоста версия указывается в spec.hosts[].releaseVersion. Если поле пустое, берётся spec.releaseVersion экземпляра провайдера. Значение копируется в ресурс ShturvalHost этого хоста, поле spec.releaseVersion. Пример:
spec:
releaseVersion: "2.15.0"
hosts:
- address: 10.11.12.13
releaseVersion: "2.14.1"
Пока хост свободен, версию можно изменить:
- Если изменить версию экземпляра провайдера, она запишется в
ShturvalHostтех свободных хостов, у которых своя версия не задана. - Если изменить версию конкретного хоста (
spec.hosts[].releaseVersion), обновится только этот хост. Если такой хост уже подготовлен утилитойstc, после изменении версии подготовка запускается заново.
Изменение версии провайдера или отдельного хоста меняет версию только свободных хостов, а у хостов, связанных с кластером, версия не меняется.
Добавление хостов
В блоке Хосты нажмите +. Справа откроется блок Добавление хостов.
Добавление хоста

| Поле хоста | Обязательность | Описание |
|---|---|---|
| IP-адрес или FQDN хоста | Да | IP или доменное имя хоста. Можно указать несколько адресов. |
| Роль | Да | Роль хоста. Можно выбрать рекомендуемую роль (controlplane, workers, infra, ingress, other) или ввести новое значение. Роль добавляется как лейбл хоста, например, role:other. |
| Версия | Нет | Версия, с которой хост будет подготовлен утилитой stc. Например, 2.14.1. По умолчанию используется версия провайдера. |
| Лейблы | Нет | Лейблы для селектора при создании кластера. Лейблы с сетевым интерфейсом, именем хоста, ОС и её версией, именем экземпляра провайдера, CPU, Memory и Disk создаются автоматически. |
| Использовать общие учётные данные | — | По умолчанию выбрано «Да». Выберите «Нет», если для хоста нужны свои учётные данные SSH: имя пользователя, пароль и приватный ключ. |
Вы можете использовать роли, доступные по умолчанию или создать кастомные роли для хостов. Для создания и назначения роли при добавлении хоста в провайдер в поле “Роль” введите имя вашей кастомной роли и в выпадающем блоке нажмите “Создать имя создаваемой роли”.
Частные учётные данные для хоста

При создании кластера или масштабировании группы узлов роли и лейблы позволяют выбрать нужные хосты. Если у группы узлов не задана роль хоста или селектор лейблов, к ней могут присоединяться любые доступные хосты.
Добавленные хосты отображаются в списке: IP-адрес, имя хоста, роль и статус. Роль в строке можно изменить, если хост ещё не присоединён к кластеру.
После добавления провайдер готовит каждый хост к включению в кластер. По SSH он проверяет доступ и права sudo, разворачивает компоненты узла, проверяет, свободен ли хост, и уникальность /etc/machine-id. Хост можно использовать для кластера только когда эти проверки пройдены и он готов к привязке ShturvalMachine: status.readyformachine: true.
Хост со статусом Свободен может ещё проходить подготовку. Если хост не готов, проверьте его conditions и при необходимости устраните указанную причину.
Просмотр и редактирование хостов
В зависимости от результата обработки провайдером хост может иметь один из статусов:
| Статус | Описание |
|---|---|
| Занят | Хост привязан к кластеру и недоступен для привязки или изменения. |
| Свободен | Хост готов к присоединению к кластеру. |
| Ошибка | У хоста невалидная конфигурация, например, недостаточно CPU или памяти; провайдер не может подключиться к хосту с указанными пользователем и приватным ключом; пользователь не имеет достаточных прав для выполнения команд по SSH. |
| Не создан | Провайдер не получил ответ от машины. Возможные причины: нет доступа к сети, в которой находится IP-адрес хоста, или адрес невалиден. |
| Не определён | Реконсиляция хоста не завершена. После её завершения статус изменится на один из перечисленных выше. |
Чтобы посмотреть подробную информацию о хосте, нажмите на строку с ним. Откроется окно Параметры хоста: IP-адрес, роль, версия, состояние, лейблы, общие учётные данные и сведения об узле.
Скриншот: состояния хоста

Если хост не занят, можно удалить его или изменить параметры:
- роль;
- версию;
- учётные данные подключения;
- лейблы хоста.
Если хост находится в состоянии MachineAttached и привязан к кластеру, можно изменить только учётные данные для подключения. Остальные параметры недоступны для редактирования.
Скриншот: хост, привязанный к кластеру

После создания хоста провайдером в интерфейсе отображаются:
- IP-адрес хоста;
- состояние;
- сведения об операционной системе: тип и образ ОС;
- версия ядра;
- архитектура;
- сетевой интерфейс;
- root volume size;
- имя хоста;
- перечень портов;
- сведения о доступных вычислительных ресурсах.
Эти данные получаются провайдером непосредственно с хоста и не редактируются в интерфейсе. Они присваиваются хосту в виде лейблов для выбора в селекторе при добавлении хостов в кластер.
Если нужно изменить имя пользователя в учётных данных, укажите также приватный ключ пользователя. Иначе изменения не будут применены.
Удаление хостов
Можно удалить один хост или несколько хостов одновременно.
Для удаления одного хоста используйте один из способов:
- в списке хостов наведите курсор на строку с хостом, установите флажок Выбрать для удаления и нажмите значок удаления в блоке Хосты;
- откройте хост и в блоке Параметры хоста нажмите Удалить.
Чтобы удалить несколько хостов, установите флажки Выбрать для удаления в строках нужных хостов и нажмите значок удаления в блоке Хосты.
Удаление хостов

Хосты, привязанные к кластеру, удалить нельзя.
Как добавить пароль для команд sudo
В провайдере Shturval v2 команды на хостах могут выполняться через sudo с паролем. Пароль хранится в Secret в неймспейсе shturval-capsm кластера управления.
При создании кластера управления в мастере установки пароль задаётся в блоке Общие учетные данные для хостов, поле Пароль пользователя. Для отдельного хоста — в Параметры хоста, если не выбрано Использовать общие учетные данные.
Из консоли (./shtil install-cli shturvalv2, синоним install) тот же пароль можно задать сразу. Параметр необязательный: если его нет, sudo выполняется без пароля.
- флаг
--ssh-user-password; - в YAML конфигурации провайдера, блок
credentials.SSH—sshUserPassword; - для отдельного хоста, если не используются общие учётные данные, —
hosts[].credentials.SSH.sshUserPassword.
Флаг и поля описаны в процессе установки в открытом контуре и в закрытом контуре.
Если пароль нужен уже после создания экземпляра провайдера, укажите его в GUI или добавьте в Secret:
- в блоке Общие учётные данные для хостов укажите пароль в Пароль пользователя — применяется к хостам с общими учётными данными;
- в блоке Добавление хостов и в окне Параметры хоста укажите пароль в Пароль пользователя, если не использовать общие учётные данные для конкретного хоста.
Если пароль нужен, а в учётных данных его нет, в состоянии StcDeployment появится сообщение о необходимости задать пароль. Чтобы добавить пароль для выполнения команд sudo:
- Перейдите в кластер управления - неймспейс
shturval-capsm- раздел Хранилище - Secrets. - Найдите Secret c именем
<имя-экземпляра провайдера>-capsm-v2-provider-secretи добавьте ключsshPassword, в значении которого укажите пароль SSH-пользователя и сохраните изменения.
Пример Secret:
apiVersion: v1
kind: Secret
metadata:
name: <имя-экземпляра-провайдера>-capsm-v2-provider-secret
namespace: shturval-capsm
type: Opaque
data:
sshKey: dXNlcnNzaGtleQ==
sshUser: c2h0dXJ2YWw=
sshPassword: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KdXNlcnNzaGtleQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0=
Скриншот: Secret

- Вернитесь в экземпляр провайдера и дождитесь, когда хосты станут готовы к присоединению к кластеру.