Подготовка

Развёртывание зеркала и проверки перед инсталляцией кластера.

Последовательность установки (закрытый контур)

Ниже — общая схема шагов от подготовки до запуска платформы. Подробности по каждому этапу — в разделах этой страницы и на странице Процесс установки.

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

В закрытом контуре установщик и узлы обращаются к зеркалу образов и пакетов, которое разворачивается до инсталляции кластера управления. Утилиты stm и shtil запускаются на Linux-хостах: stm — на хосте зеркала для загрузки бандла в зеркало, shtil — на машине администратора для запуска локального установочного кластера и развёртывания кластера управления. После подготовки лицензии Enterprise, бандла, зеркала, машины shtil и целевой инфраструктуры запустите install-gui, install-cli или установку по YAML с параметрами зеркала.


Подготовка окружения

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

  • Лицензия — только Enterprise; нужна для развёртывания зеркала и для bootstrap при запуске shtil.
  • Бандл — tar-архив с образами и пакетами для версии платформы. Передает менеджер со стороны Штурвала.
  • Хост зеркала — хост с ОС Linux, на котором запускается stm. Требования к хосту — в разделе Требования к хосту зеркала.
  • Машина shtil — рабочая станция или хост с одной из поддерживаемых ОС, Podman из состава бандла (если shtil запускается на этом же хосте) и доступом к зеркалу по HTTPS (порт по настройке зеркала, обычно 443). Не планируйте добавлять этот хост в кластер как узел.
  • Провайдер инфраструктуры — заранее прочитайте, как устроена работа с провайдерами в платформе: от выбранного провайдера зависит, нужно ли подготовить готовые хосты или шаблон ВМ.
  • Целевая инфраструктура: либо уже подготовленные физические или виртуальные узлы Linux (сценарий провайдера Shturval v2), либо виртуализация (oVirt и подобные, VMware vSphere), из которой установщик создаст виртуальные машины под узлы кластера управления. Во всех случаях заранее определите количество узлов Control Plane и Worker и их ресурсы (см. требования).
  • Балансировка KubeAPI и Ingress: заранее определите, используете ли вы внутренние балансировщики (свободные VIP на узлах) или внешние. Требования к подсети Control Plane и VIP при внутренних балансировщиках — в разделе Подсеть Control Plane и виртуальные IP (VIP). Требования к внешнему балансировщику — в разделе Внешний балансировщик нагрузки.
  • Для Shturval v2 на каждый узел переносится SSH-ключ без passphrase, а пользователь для установки должен уметь выполнять sudo без ввода пароля.

Работа с зеркалом

Зеркало — это локальный репозиторий образов и пакетов платформы. Узлы кластера будут загружать дистрибутив с зеркала, т.к. доступа в интернет у них нет. Развернуть зеркало нужно до запуска инсталляции кластера; перед развёртыванием проверьте требования к ресурсам хоста зеркала.

Вы также можете использовать уже существующее зеркало — см. раздел Внешний Nexus.

Для работы с зеркалом используется утилита stm (Shturval Mirror). Она входит в состав бандла: после распаковки бандла вы запускаете команды stm на хосте зеркала. Зеркало можно развернуть от root или в режиме rootless (от непривилегированного пользователя) — см. раздел Rootless запуск зеркала. Ниже — пошаговая последовательность в зависимости от того, есть ли на этом хосте доступ в интернет.


Сценарий 1: Закрытый контур (на зеркале нет интернета)

На хосте зеркала нет доступа в интернет. Все образы и пакеты берутся только из бандла. Шаг 1. Перенос и распаковка бандла

Перенесите полученный от менеджера Штурвала tar-архив на хост зеркала (SCP, съёмный носитель и т.п.). Создайте каталог, распакуйте в него бандл:

mkdir newbundle && cd newbundle
tar -zxvf имя_бандла.tar.gz
cd ..

В результате появится каталог с содержимым бандла (в т.ч. утилита stm). Запомните путь к нему — например, ./newbundle/shturval-bundle.

Шаг 2. Инициализация зеркала и загрузка содержимого бандла

Одна команда создаёт конфигурацию зеркала (сертификаты, Nexus, Nginx) и загружает в него образы и пакеты из бандла:

stm bundle make --fqdn=FQDN-ЗЕРКАЛА --license=XXXX-XXXX-XXXX

Подставьте вместо FQDN-ЗЕРКАЛА адрес, по которому к зеркалу будут обращаться узлы и машина shtil (например, mirror.corp.local). Вместо XXXX-XXXX-XXXX — вашу Enterprise-лицензию. Команду выполните из каталога с распакованным бандлом или укажите путь к нему при необходимости.

После успешного выполнения зеркало запущено и готово к приёму запросов.

Альтернатива: инициализация и загрузка по отдельности

Если нужно сначала только создать конфигурацию зеркала, затем загрузить бандл:

# Только инициализация (конфигурация, сертификаты, запуск Nexus/Nginx)
stm init --fqdn=mirror.corp.local --license=XXXX-XXXX-XXXX

# Затем загрузка содержимого бандла
stm bundle load --path=./newbundle/shturval-bundle

Обновление зеркала (при выходе новых версий)

Если зеркало уже развёрнуто, перенесите и распакуйте бандл новой версии (шаг 1), выполните обновление утилиты stm, затем загрузите содержимое:

stm bundle load --path=./newbundle/shturval-bundle

Полная процедура — Работа с зеркалом после инсталляции.


Сценарий 2: Условно-закрытый контур (на зеркале есть интернет)

На хосте зеркала есть доступ в интернет. Можно один раз инициализировать зеркало и скачать образы и пакеты из репозитория Штурвала (без предварительного бандла).

Шаг 1. Инициализация зеркала и загрузка из репозитория

Одна команда создаёт зеркало и загружает указанную версию платформы из интернета:

stm make --fqdn=mirror.corp.local --license=XXXX-XXXX-XXXX --version=2.14.0

Шаг 2. Обновление зеркала (при выходе новых версий)

Если зеркало уже развёрнуто и нужно добавить новую версию, выполните обновление утилиты stm и затем загрузите релиз из репозитория r.shturval.tech.

Обновление утилиты stm

cp stm путь_к_зеркалу/          # заменить утилиту stm на версию из репозитория r.shturval.tech
cp -rp distr путь_к_зеркалу      # обновить образы контейнеров (Nginx, rewrite-правила)
cd путь_к_зеркалу                # перейти в каталог зеркала
./stm restart                    # перезапустить сервисы зеркала с новой stm и distr
stm download --version=2.14.0

Справочно: другие команды stm

Команда Назначение
stm start Запуск зеркала
stm stop Остановка зеркала (при необходимости — с флагом --force)
stm restart Перезапуск зеркала
stm status Проверка статуса зеркала и реестра
stm uninstall Удаление зеркала
stm bundle check Проверка целостности бандла
stm bundle load --path=ПУТЬ Загрузка содержимого бандла (после выполнения stm init)

Параметры инициализации (для stm init / stm bundle make / stm make): обязательные — --fqdn, --license; для загрузки из репозитория дополнительно --version. Опционально: --cert-file, --privkey-file (импорт своего сертификата), --https-port, --registry-port, --cri-socket.


Внешний Nexus

Если вы используете внешний Nexus (уже развёрнутый в инфраструктуре), образы и пакеты можно загрузить в него, а для доступа с узлов развернуть только Nginx с конфигурацией зеркала. Перед stm external load при обновлении выполните обновление утилиты stm.

Подготовка внешнего Nexus: создайте hosted-репозитории форматов raw, helm, docker (у docker-репозитория должен быть выделенный порт — коннектор). Для apt-дистрибутивов нужен hosted apt-репозиторий (в конфиге — deb_universal), для yum — hosted yum (rpm_universal). Имена репозиториев задаются в конфигурации.

Команды stm:

Команда Назначение
stm external config Генерация примера конфигурации config/external-config.yaml
stm external load --path=ПУТЬ Загрузка содержимого бандла во внешний Nexus
stm external nginx --fqdn=FQDN [--cert-file=... --privkey-file=...] Развёртывание Nginx для проксирования запросов к внешнему Nexus

Скопируйте сгенерированный пример в config/external-config.yaml, заполните соответствие имён репозиториев и параметры подключения к Nexus. Для условно-закрытого контура доступна загрузка из репозитория Штурвала: stm external sync.


Rootless запуск зеркала

Зеркало можно запускать от непривилегированного пользователя (rootless): контейнеры работают без root, что повышает безопасность. Режим проверен на Ubuntu 20, 22, 24, Astra Linux 1.7, 1.8, РЕД ОС 7 и 8, Alt Linux 10, Rosa Chrome, ОСнова, Sber Linux, Debian 11 и 12, OEL 8, RHEL 8 и 9, Rocky Linux 8 и 9. На других дистрибутивах может потребоваться дополнительная настройка.

Подготовка от root

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

  2. Назначьте диапазоны subuid и subgid, включите lingering:

usermod --add-subuids 100000-165535 $USER
usermod --add-subgids 100000-165535 $USER
loginctl enable-linger $USER
  1. Убедитесь, что установлены утилиты newuidmap и newgidmap (как правило, входят в пакет uidmap).

  2. Проверьте параметр ядра kernel.unprivileged_userns_clone: выполните sysctl kernel.unprivileged_userns_clone. Если значение 0 — установите в 1 (добавьте в /etc/sysctl.conf и выполните sysctl -p). Если ошибка «No such file or directory» — на поддерживаемых дистрибутивах можно игнорировать.

  3. Порты 80 и 443 по умолчанию недоступны непривилегированному пользователю. Варианты:

    • при инициализации зеркала укажите порты выше 1024: --http-port=1080 --https-port=1443 (или другие свободные);
    • либо задайте net.ipv4.ip_unprivileged_port_start=80/etc/sysctl.conf, затем sysctl -p), чтобы разрешить привязку к 80 и 443.
  4. Если используется firewalld (Sber Linux, OEL, RHEL, Rocky) — откройте порты:

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

(Если зеркало слушает не 80/443, укажите свои порты.)

  1. Загрузите и распакуйте бандл в каталог, доступный этому пользователю.

  2. От root выполните инициализацию с указанием UID и GID пользователя и при необходимости портов:

./stm init --fqdn=mirror.corp.local --license=XXXX-XXXX-XXXX --uid=1001 --gid=1001 --http-port=1080 --https-port=1443

Подставьте свои --uid и --gid (id пользователя и группы). После инициализации зеркало будет остановлено, владелец файлов сменится на указанные uid:gid.

Запуск и работа от пользователя

  1. Переключитесь на созданного пользователя и запустите зеркало:
stm start
  1. Загрузите содержимое из бандла или из репозитория. При обновлении уже развёрнутого зеркала сначала выполните обновление утилиты stm:
# из бандла
stm bundle load --path=./newbundle/shturval-bundle

# из r.shturval.tech (условно-закрытый контур)
stm download --version=2.14.0
  1. Дальнейшее управление зеркалом (остановка, запуск, перезапуск) выполняйте от этого же пользователя: stm stop, stm start, stm restart.

Особенности на отдельных дистрибутивах

Alt Linux: утилиты newuidmap и newgidmap могут быть недоступны пользователю. Выполните от root:

chmod 751 /usr/bin/newuidmap /usr/bin/newgidmap
chmod u-s /usr/bin/newuidmap /usr/bin/newgidmap
setcap cap_setuid+eip /usr/bin/newuidmap
setcap cap_setgid+eip /usr/bin/newgidmap

Если iptables недоступен пользователю — добавьте /sbin/ в PATH или создайте симлинки, например в /bin: ln -s /sbin/xtables-legacy-multi /bin/iptables, аналогично для ip6tables.

ОСнова: пакет с newuidmap/newgidmap может отсутствовать; возможна установка пакета uidmap из совместимого дистрибутива (например, Ubuntu 20). В /etc/sysctl.conf добавьте user.max_user_namespaces = 15000 и выполните sysctl -p.


Сертификат от ACME (Step-CA, certbot)

Модуль зеркала не интегрирован с ACME-сервером. Сертификат от Step-CA или другого ACME-провайдера можно получить с помощью certbot, затем скопировать в каталог зеркала.

  1. Остановите зеркало (чтобы освободить порты 80/443): stm stop или docker stop shturval_proxy.
  2. Запросите сертификат (подставьте свои FQDN, адрес ACME-сервера, email и при необходимости REQUESTS_CA_BUNDLE для корневого сертификата CA):
REQUESTS_CA_BUNDLE=/path/to/root_ca.crt certbot certonly -d mirror.corp.local \
  --server https://acme-server.example.local/directory --standalone --agree-tos -m admin@example.local
  1. Скопируйте сертификаты в каталог зеркала (путь к зеркалу и FQDN замените на свои):
cp /etc/letsencrypt/live/FQDN_ЗЕРКАЛА/fullchain.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/dst.pem
cp /etc/letsencrypt/live/FQDN_ЗЕРКАЛА/fullchain.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/fullchain.pem
cp /etc/letsencrypt/live/FQDN_ЗЕРКАЛА/privkey.pem ПУТЬ_ДО_ЗЕРКАЛА/config/certs/privkey.pem
  1. Запустите зеркало: stm start.
  2. Настройте обновление сертификата по расписанию (cron или systemd timer): перед продлением остановите Nginx/зеркало, выполните certbot renew, скопируйте новые файлы в config/certs/, снова запустите зеркало.

Работа с сертификатами

Сертификат можно импортировать при инициализации (--cert-file, --privkey-file) или отдельной командой:

stm cert import --cert-file=export/mirror_cert.pem --privkey-file=export/privkey.pem

Требования к сертификату: PEM, цепочка CA + сертификат, subjectAltName с FQDN зеркала (совпадает с --fqdn).

Генерация CSR:

stm cert csr --fqdn=mirror.corp.local

CSR и ключ сохраняются в каталог export/.


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

Выполните раздел Команды для проверки ниже: DNS зеркала, HTTPS к зеркалу, stm status на хосте зеркала.


Когда зеркало готово

Машина shtil (рабочее место администратора)

Машина shtil — рабочая станция или jump-хост с ОС Linux, с которого вызывается утилита shtil.

На машине должно быть выполнено:

  • Доступен Podman из состава бандла; исполняемый файл находится в PATH. В случае запуска shtil на том же хосте, где инициализировано зеркало, не устанавливайте вручную Podman/Docker. Если используете Docker и у зеркала самоподписной или корпоративный CA, доверие к зеркалу настроено на уровне демона Docker до запуска shtil; флага --bootstrap-insecure для первичного docker pull недостаточно.
  • Есть сетевой доступ к FQDN зеркала по HTTPS (порт по настройке зеркала, обычно 443).
  • Для сценария с графическим интерфейсом (install-gui) нужны права, достаточные для работы с каталогом /tmp, как правило при запуске от root или через sudo.
Требования к минимальным свободным ресурсам машины shtil при установке с GUI (`install-gui`)
Параметр CPU (vCPU) Memory (GiB) Disk (GiB)
Машина, с которой запускается install-gui 3 3 20

После запуска install-gui выполняется проверка свободных ресурсов.


Исполняемый файл shtil входит в состав бандла. После распаковки бандла скопируйте утилиту на машину shtil и сделайте файл исполняемым:

chmod +x ./shtil

Версия shtil должна соответствовать версии бандла.


Подготовка машины shtil к rootless Podman

Если shtil запускается не от root и bootstrap поднимается через rootless Podman (не Docker), на хосте выполните настройки ниже. При запуске от root/sudo или при использовании Docker раздел можно пропустить.

User namespaces

Для rootless Podman должно быть включено разрешение на создание непривилегированных user namespaces — параметр ядра kernel.unprivileged_userns_clone.

sysctl kernel.unprivileged_userns_clone

Если значение 0, установите 1: добавьте в /etc/sysctl.conf строку kernel.unprivileged_userns_clone = 1 и выполните:

sudo sysctl -p

Если команда возвращает ошибку cannot stat /proc/sys/kernel/unprivileged_userns_clone: No such file or directory, параметр настраивать не нужно.

Делегирование cgroup

На части дистрибутивов, где systemd ниже 252 (например, Debian 11, РЕД ОС 7.3, Astra Linux 1.7, RHEL/Rocky 8, Ubuntu 20.04) без делегирования контейнер bootstrap-кластера падает с ошибкой UserNS: cpu controller needs to be delegated. См. kind rootless. Делегирование можно выполнить скриптом (см. ниже). Он создаёт /etc/systemd/system/user@.service.d/delegate.conf с Delegate=cpu cpuset io memory pids и выполняет systemctl daemon-reload.

После выполнения скрипта потребуется полный выход из SSH/сессии и повторный вход. Если bootstrap по-прежнему падает — перезагрузка хоста (как в выводе скрипта).

chmod +x ./scripts/setup-systemd-user-cgroup-delegate.sh
sudo ./scripts/setup-systemd-user-cgroup-delegate.sh
Скрипт setup-systemd-user-cgroup-delegate.sh
#!/usr/bin/env bash
# Настраивает делегирование cgroup-контроллеров для user@.service (systemd user session).
# Нужно для rootless Podman и локального bootstrap-кластера (kind-подобный node-image):
# без делегирования cpu контейнер падает с "UserNS: cpu controller needs to be delegated".
# См. https://kind.sigs.k8s.io/docs/user/rootless/
#
# Запуск: sudo ./scripts/setup-systemd-user-cgroup-delegate.sh
# После выполнения — полный выход из сессии пользователя и вход снова или reboot.
set -euo pipefail
DROP_IN_DIR="/etc/systemd/system/user@.service.d"
DROP_IN_FILE="${DROP_IN_DIR}/delegate.conf"
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
  echo "Запустите от root: sudo $0" >&2
  exit 1
fi
mkdir -p "$DROP_IN_DIR"
tee "$DROP_IN_FILE" <<'EOF'
[Service]
Delegate=cpu cpuset io memory pids
EOF
systemctl daemon-reload
echo "Готово: $DROP_IN_FILE"
echo "Выполните полный выход из SSH/сессии и вход снова или: sudo reboot"

Команды для проверки перед началом инсталляции

Ниже — типовые проверки перед запуском shtil. Подставляйте FQDN-ЗЕРКАЛА и адреса VIP из вашей схемы (см. требования).

DNS: имя зеркала резолвится (машина shtil и при необходимости узел)

getent hosts FQDN-ЗЕРКАЛА

Критерий успеха: в выводе есть IP-адрес зеркала.

Если записей нет: настройте корпоративный DNS или локальный резолвер; без резолва узлы и shtil не смогут обратиться к зеркалу по HTTPS. Для временной диагностики можно проверить локальный /etc/hosts, но постоянное решение должно соответствовать политике вашей инфраструктуры.

HTTPS к зеркалу (машина shtil или узел)

curl -I --connect-timeout 10 https://FQDN-ЗЕРКАЛА

Критерий успеха: в ответе HTTP/1.1 200 или HTTP/2 200 (или иной успешный код от вашего Nginx/зеркала).

Если ответа нет или есть ошибка — действуйте по шагам:

  1. Проверьте подробный вывод: он покажет, где обрыв — DNS, TCP, TLS или ответ сервера.
curl -vI --connect-timeout 10 https://FQDN-ЗЕРКАЛА
  1. Проверьте, что порт зеркала доступен с машины shtil и с узлов кластера. Если зеркало слушает не 443, укажите фактический порт:
curl -vI --connect-timeout 10 https://FQDN-ЗЕРКАЛА:ПОРТ
  1. При ошибке TLS с самоподписным сертификатом для диагностики допустимо:
curl -vkI --connect-timeout 10 https://FQDN-ЗЕРКАЛА

Для рабочей установки согласуйте доверие к CA или используйте флаги --bootstrap-insecure / --bootstrap-registry-certs-dir при запуске shtil (см. процесс установки).

Настройка доверия Docker к зеркалу

Флаги --bootstrap-insecure и --bootstrap-registry-certs-dir влияют на containerd внутри bootstrap-кластера (через hosts.toml или монтирование CA). Эти флаги не настраивают доверие локального Docker daemon.

Первичную TLS-проверку при docker pull выполняет сам демон Docker до запуска bootstrap-кластера. При зеркале с самоподписным или иным недоверенным сертификатом одного --bootstrap-insecure недостаточно: до запуска установки настройте доверие к зеркалу одним из способов.

sudo mkdir -p /etc/docker/certs.d/FQDN-ЗЕРКАЛА
sudo cp /path/to/ca.crt /etc/docker/certs.d/FQDN-ЗЕРКАЛА/ca.crt

Если зеркало работает не на стандартном порту, используйте каталог с портом: /etc/docker/certs.d/FQDN-ЗЕРКАЛА:ПОРТ/ca.crt. Перезапуск Docker при добавлении CA в /etc/docker/certs.d/ не требуется: Docker читает этот каталог на лету.

  1. Откройте файл /etc/docker/daemon.json и пропишите
{
  "insecure-registries": ["FQDN-ЗЕРКАЛА"]
}
  1. Перезапустите Docker:
sudo systemctl restart docker

Если доверие к зеркалу для Docker не настроено, установщик заранее выводит предупреждение, а при неудачном docker pull — ошибку с конкретным путём /etc/docker/certs.d/<registry-host:port>/ca.crt для вашего зеркала.

Если проверка неуспешна после диагностики: до запуска установки устраните DNS, маршрутизацию, firewall или настройки сертификата зеркала.

Хост зеркала: stm status

stm status

Критерий успеха: компоненты зеркала в рабочем состоянии (см. вывод команды).

Если stm не найден: выполните команду из каталога с распакованным бандлом или добавьте путь к stm в PATH.

Если компоненты остановлены: запустите зеркало и повторите проверку:

stm start
stm status

Если статус всё ещё не рабочий, проверьте свободность портов Nginx, сертификат и параметры инициализации зеркала.

Проверка, что виртуальные IP-адреса свободны

На каждом IP-адресе из подсети Control Plane, который будет использоваться как VIP KubeAPI или Ingress и ещё не назначен интерфейсу узла, выполните проверку:

ping -c 2 IP

Замените IP на реальный адрес (например, ping -c 2 10.11.12.100).

Критерий успеха: узлы в подсети не отвечают на ping по выбранному VIP (адрес свободен под kube-vip).

Если узел отвечает: выбранный IP уже используется — выберите другой свободный IP из подсети Control Plane и повторите проверку. Если ICMP в сети запрещён, согласуйте с сетевым администратором другой способ проверки свободности адреса.

Узел: SELinux (если дистрибутив с SELinux)

getenforce

Если команда getenforce недоступна: на дистрибутиве без SELinux этот подраздел не применяйте.

Варианты вывода:

  • enforcing — политика применяется (для согласованного сценария нужен переход в permissive или disabled, либо отдельная политика по согласованию с ИБ).
  • permissive — предупреждения без блокировок (подходит при согласовании с ИБ).
  • disabled — политика не загружена (подходит при согласовании с ИБ).

Если режим enforcing и требуется отключить SELinux до установки (после согласования с ИБ):

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

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

sudo reboot

Узел: время и NTP

timedatectl status

При установленном Chrony:

chronyc tracking

Критерий успеха: время синхронизировано; расхождение с машиной shtil не существенно для вашей политики (большой разбег — риск для сертификатов и etcd).

Если команда chronyc недоступна: используйте в первую очередь timedatectl и сравнение date; при необходимости настройте или установите Chrony по документации вашей ОС.

Если время не синхронизировано: настройте NTP или Chrony на узлах, машине shtil и хосте зеркала, затем повторите проверку.

Узел: репозитории пакетов

Debian / Ubuntu:

sudo apt update

RHEL и совместимые (если есть dnf):

sudo dnf repolist

Если dnf нет:

sudo yum repolist

Критерий успеха: нет ошибок из-за полностью недоступных репозиториев.

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

Работа с провайдерами

Перед установкой выберите провайдера инфраструктуры и подготовьте его по соответствующему сценарию. Общую схему — экземпляры провайдеров, пулы IP и шаблоны ВМ — см. на странице Как устроена работа с провайдерами в платформе.

oVirt и подобные провайдеры

Если выбран oVirt, zVirt, HostVM, РЕД Виртуализация или ROSA Virtualization, подготовьте среду виртуализации до запуска инсталляции: учётную запись с нужными правами, Datacenter, Cluster, сеть с профилем VNIC и DHCP. Подробности — на странице oVirt и подобные провайдеры.

Для узлов кластера управления заранее создайте шаблон виртуальной машины. При использовании зеркала укажите в stc template тот же registry, который будет использоваться при развёртывании платформы.

VMware vSphere

Если выбран VMware vSphere, подготовьте vCenter: учётную запись с сервисными ролями, Datacenter, Resource Pool, Network, Datastore и путь для хранения ВМ. Подробности — на странице VMware vSphere.

Для узлов кластера управления заранее создайте шаблон виртуальной машины. Убедитесь, что шаблон подключён к сети, из которой будущие ВМ получат адреса по DHCP, и подготовлен с параметрами registry закрытого контура.

Провайдер Shturval v2

В случае выбора этого провайдера поднимите физические или виртуальные хосты до начала инсталляции. Требования к ресурсам и ОС на странице с требованиями, а порядок добавления хостов — на странице Shturval v2.

Локально сгенерируйте ключ без passphrase и скопируйте его на каждый узел:

ssh-keygen -t ed25519 -f ./shturval -N ""
ssh-copy-id -i ./shturval.pub shturval@10.11.12.1

Повторите ssh-copy-id для каждого IP-адреса узла (подставьте свой пользователь и адреса). SSH-ключ должен быть без passphrase. Пользователь (например, shturval) должен иметь sudo без пароля на всех целевых узлах.

ssh -i /path/to/private_key USER@NODE
ssh -i /path/to/private_key USER@NODE 'sudo -n true'

Критерий успеха: вход по ключу без запроса пароля ключа; второй вызов завершается с кодом 0.

Если вход по SSH неуспешен: проверьте IP или FQDN узла, пользователя, путь к приватному ключу, права на файл ключа и что публичный ключ скопирован на узел. Убедитесь, что служба sshd на узле принимает подключения и не блокируется межсетевым экраном.

Если sudo -n true завершается ошибкой: настройте выполнение sudo без запроса пароля для пользователя установки, например через sudoers по правилам вашей организации.


Чек-лист перед установкой

  • Хост зеркала — подготовлен (SELinux disabled/permissive, порты 80 и 443 свободны; Podman вручную не установлен, если shtil запускается на этом же хосте)
  • Бандл — получен от менеджера Штурвала (tar-архив с образами и пакетами)
  • Лицензия Enterprise — получена по договору
  • Машина shtil — есть доступ к зеркалу по HTTPS; если используется Docker и у зеркала недоверенный сертификат, доверие настроено на уровне Docker daemon
  • Rootless Podman: при запуске shtil не от root — подготовка хоста (user namespaces и делегирование cgroup)
  • Работа с провайдерами — прочитано, как устроены провайдеры в платформе.
  • Провайдер Shturval v2 — если выбран этот провайдер, созданы физические или виртуальные хосты будущего кластера, настроены SSH-ключ без passphrase и sudo без пароля (см. Shturval v2).
  • Провайдер oVirt и подобные или VMware vSphere — если выбран один из этих провайдеров, подготовлена виртуализация и создан шаблон ВМ провайдера; подробности: oVirt и подобные, VMware vSphere.
  • NTP — время синхронизировано на всех узлах и хосте зеркала
  • VIP или внешние балансировщики — подготовлены по выбранному сценарию для KubeAPI и Ingress
  • Доступ к зеркалу — с машины shtil и с каждого узла кластера по порту 443 (см. раздел Команды для проверки: DNS и HTTPS)