Всё об инсталляции

Вводная информация

Для инсталляции платформы используется модуль первичной установки - shturval installer (stc) и лицензия. Модуль обновляется каждый релиз и всегда доступен для скачивания документации в разделе Платформа/Инсталляция. Прежде чем начать инсталляцию, определите, какая версия лицензии вам подойдет: enterprise или community edition.

Инсталляция в открытом контуре (т.е. из публичного репозитория shturval) доступна в любой версии лицензии. Инсталляция в закрытом контуре доступна только в enterprise лицензии. В закрытом контуре дополнительно требуется бандл - tar-архив, который содержит в себе всё необходимое для установки платформы, и утилита shturval mirror (stm) для работы с зеркалом. Бандл и утилита передаются заказчику вместе с enterprise лицензией.

Прежде чем начать инсталляцию обязательно ознакомьтесь с требованиями к платформе:

Вы можете инсталлировать платформу с различного типа сертификатами: самоподписными, корпоративными, промежуточными сертификатами или сертификатами ACME. В случае инсталляции с самоподписными сертификатами потребуется их принять в веб-интерфейсе.

Инсталляция

Выбрали лицензию? Тогда переходим к инсталляции. Если еще нет, запросите лицензию CE или обратитесь за enterprise лицензией к представителю продукта Штурвал.

  1. Определить контур инсталляции:
  • Открытый (со всех хостов кластера потребуется доступ по 443 порту до r.shturval.tech)
  • Закрытый (только для enterprise!. Перед запуском инсталляции выполните подготовку зеркала, для этого используйте выданный менеджером бандл.)
  1. Подготовьте хосты с одной из ОС, указанных в таблице:

Не забудьте проверить:

  • SELinux отключен или в режиме permissive;
  • время между хостами и вашей рабочей машиной синхронизировано;
  • с хостов удалены недоступные (например, родные) репозитории (потребуется только iptables и gnupg).
  1. Создайте на каждом хосте пользователя. Этот пользователь должен иметь возможность выполнять sudo без пароля.
  2. Вы можете использовать внешний или внутренний балансировщик KubeAPI и/или Ingress:
  • Если используете внешний балансировщик, то для каждого компонента нужен FQDN (примеры сетевого взаимодействия)
  • Если не используете внешний балансировщик, то подготовьте 2 непингуемых (свободных) IP-адреса. Они не должны быть настроены на каком-либо из хостов кластера, но должны быть в одной подсети с хостами Master-узлов.
  1. Подготовьте сертификаты для применения при инсталляции или запустить установку без них, тогда будут установлены самоподписные сертификаты.
  2. Для запуска инсталляции
  • с машины на ОС Linux скачайте stc для linux и выполните команду, чтобы сделать файл исполняемым:
chmod +x ./stc-2.10.0
  1. Сгенерируйте ключевую пару с помощью команды:
ssh-keygen -t ed25519 -f shturval
  1. Скопируйте ее на каждый хост будущего кластера с помощью команды:
ssh-copy-id -i shturval.pub ssh-user@IP-адрес-хоста

где вместо IP-адрес-хоста пропишите IP хоста будущего кластера. Если хостов будет более одного, выполните команду для каждого хоста.

  1. Подготовьте адреса ntp-серверов, с которыми должна происходить синхронизация времени хостов (использованные в шаге 2).
  2. Для инсталляции на рабочей машине с ОС Linux или Windows (в зависимости от того, какой stc вы скачали) запустите команду, в которую необходимо подставить свои значения параметров
Все доступные параметры инсталлятора stc-2.10.0
Параметр Обязательный Описание
--debug нет Выводить в лог всю информацию об ошибках (по умолчанию false)
--dry-run нет Проверка конфигурации. Установка службы shturvald на узлы будущего кластера. (по умолчанию false)
--quiet нет Выключить stdout. Только код выхода
--ssh-private-key [string] да Путь к файлу приватного ключа SSH
--ssh-user [string] да Имя пользователя для подключения по SSH
--workdir [string] нет Рабочая директория кластера (для файлов конфигурации, логов и пр.)
--skip-check нет Пропустить проверку хостов перед инсталляцией. Значение по умолчанию – false
--master-nodes [string] да Адреса Master-узлов
--worker-nodes [string] да, если не указан --minimal Адреса Worker-узлов
--api-endpoint [string] да Адрес API управления кластером
--cluster-name [string] да Имя кластера
--disabled-system-services [string] нет Список отключенных системных сервисов
--enabled-system-services [string] нет Список включенных системных сервисов
--ingress [string] да, если не указан --ingress-vip Wildcard DNS-запись для ingress в формате apps.corporate.domain. Чтобы задать DNS-запись для ingress, должен быть указан параметр--use-external-ingress-lb со значением true
--ingress-vip [string] да, если не указан --ingress VIP адрес для ingress контроллера
--interactive нет Признак интерактивного режима. Значение по умолчанию – false
--license [string] да Лицензионный ключ для загрузки пакетов
--monitoring-endpoint [string] нет Адрес кластера мониторинга для отправки системных метрик
--ntp-servers [string] нет Список серверов синхронизации времени (через запятую)
--registry [string] нет Адрес реестра образов и репозиториев пакетов. Значение по умолчанию – r.shturval.tech
--secure нет Признак установки дополнительных параметров безопасности. Значение по умолчанию – false
--timezone [string] нет Часовой пояс. Значение по умолчанию – Europe/Moscow
--use-external-ingress-lb да, если задан --ingress Использовать внешний балансировщик для Ingress контроллера. Значение по умолчанию – false
--use-external-kubeapi-lb нет Использовать внешний балансировщик кластерного IP. Значение по умолчанию – false
--ca-cert да, если не указаны --acme-root-cert или --ingress-cert Путь до цепочки сертификатов (ваш промежуточный сертификат -> сертификат корпоративного центра сертификации) в формате “pem” файла, который может быть использован в дальнейшем для подписания других сертификатов
--ca-key да, если задан --ca-cert Путь до закрытого ключа промежуточного сертификата CA
--acme-root-cert да, если не указаны --ca-cert или --ingress-cert Путь до файла корневого сертификата CA для ACME
--acme-url да, если задан --acme-root-cert Адрес ACME сервера с портом и путем к ресурсу, например: https://acme.corp.lan:8443/directory
--ingress-cert [string] да, если не указаны --ca-cert или --acme-root-cert Путь до корпоративного сертификата(“pem” файла), который был выпущен CA(в этом случае в файле будет цепочка сертификатов) или самоподписан для доменного имени Ingress
--ingress-key [string] да, если задан --ingress-cert Путь до закрытого ключа корпоративного сертификата Ingress
--pod-subnet [string] нет Подсеть для подов. Значение по умолчанию – 172.16.0.0/16
--service-subnet [string] нет сервисов. Значение по умолчанию – 10.96.0.0/12
--minimal нет Признак установки минимального набора сервисов. Требуется при инсталляции кластера управления на 1 Master-узле. При установке в минимальной конфигурации недоступны параметры --disabled-system-services и --enabled-system-services. Значение по умолчанию – false

Примеры команд для инсталляции

  • Для инсталляции в закрытом контуре добавьте в нужную команду параметр --registry=corp.domain.local:443, где вместо corp.domain.local введите адрес вашего реджистри.
  • Для инсталляции с цепочкой сертификатов (ваш промежуточный сертификат -> сертификат корпоративного центра сертификации) в конец нужной команды добавьте ключи --ca-cert=ВВЕДИТЕ-ПУТЬ-ДО-ПРОМЕЖУТОЧНОГО-СЕРТИФИКАТА("pem" файла) и --ca-key=ВВЕДИТЕ-ПУТЬ-ДО-ЗАКРЫТОГО-КЛЮЧА-ПРОМЕЖУТОЧНОГО-СЕРТИФИКАТА
  • Для инсталляции с корпоративными сертификатами в конец нужной команды добавьте ключи --ingress-cert=ВВЕДИТЕ-ПУТЬ-ДО-КОРПОРАТИВНОГО-СЕРТИФИКАТА("pem" файла) и --ingress-key=ВВЕДИТЕ-ПУТЬ-ДО-ЗАКРЫТОГО-КЛЮЧА-ПРОМЕЖУТОЧНОГО-СЕРТИФИКАТА
  • Для инсталляции с ACME сертификатами в конец нужной команды добавьте ключи --acme-root-cert=ВВЕДИТЕ-ПУТЬ-ДО-КОРНЕВОГО-СA-ДЛЯ-ACME и --acme-url=ВВЕДИТЕ-АДРЕС-ACME-СЕРВЕРА-С-ПОРТОМ-И-ПУТЁМ-К-РЕСУРСУ
  • При необходимости использования внешнего хранилища данных для OpenSearch, ознакомьтесь с инструкцией.
Набор сервисов, устанавливаемых в кластере управления при инсталляции на одном Master-узле
Название чарта Название сервиса
shturval-backend Модуль программного управления Платформой
shturval-backend-crds CRD модуля программного управления Платформой
shturval-frontend Модуль графического управления Платформой
shturval-metrics-collector-crds CRD компонента управления CR модуля мониторинга
shturval-capi Провайдер Cluster-API
shturval-capi-crds CRD провайдера Cluster-API
shturval-capbd Провайдер Basis Dynamix
shturval-capbd-crds CRD провайдера Basis Dynamix
shturval-capos Провайдер OpenStack
shturval-capos-crds CRD OpenStack
shturval-capsm Провайдер Shturval V2
shturval-capsm-crds CRD провайдера Shturval V2
shturval-capvs Провайдер vSphere
shturval-capvs-crds CRD провайдера vSphere
shturval-capov Провайдер oVirt
shturval-capov-crds CRD провайдера oVirt
shturval-capy Провайдер Yandex Cloud
shturval-capy-crds CRD провайдера Yandex Cloud
shturval-cluster-manager Менеджер клиентских кластеров
shturval-cluster-manager-crds CRD менеджера клиентских кластеров
shturval-networking Модуль управления сетями кластера
shturval-local-csi Модуль локального хранения
shturval-snapshotter Оператор snapshotter
shturval-snapshotter-crds CRD оператора snapshotter
shturval-node-config Модуль управления конфигурациями узлов
shturval-node-config-crds CRD модуля управления конфигурациями узлов
shturval-policy-manager-crd CRD модуля анализа конфигураций приложений
shturval-services Модуль управления сервисами
shturval-services-crds CRD модуля управления сервисами
shturval-update Модуль обновления кластера
shturval-update-crds CRD модуля обновления кластера
shturval-vip Модуль управления виртуальными IP-адресами. Компонент конфигурации узлов
shturval-vip-provider Модуль управления виртуальными IP-адресами. Компонент конфигурации сервисов
shturval-caching-dns Модуль управления локальным DNS
shturval-cert-manager Модуль управления TLS-сертификатами
shturval-cert-manager-crds CRD модуля управления TLS-сертификатами
shturval-trust-manager Модуль доставки корневых сертификатов
shturval-trust-manager-crds CRD модуля доставки корневых сертификатов
shturval-ingress-controller Модуль управления внешними подключениями
shturval-logs-operator-crds CRD компонента модуля централизованного хранения логов
shturval-monitoring-crds CRD компонента модуля локального сбора метрик

Примеры команд для инсталляции на 1 Master-узле (minimal)

Команда для запуска инсталляции на 1 Master-узле с VIP для API-сервера и Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА  \
 --api-endpoint=ВВЕДИТЕ-IP-ДЛЯ-API-СЕРВЕРА \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТА \
 --timezone=Europe/Moscow \
 --ingress-vip=ВВЕДИТЕ-IP-АДРЕС-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
 --minimal=true
Команда для запуска инсталляции на 1 Master-узле с внешним балансировщиком для API-сервера и VIP для Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА  \
 --use-external-kubeapi-lb=true  \
 --api-endpoint=ВВЕДИТЕ-ВАШ-FQDN \
 --timezone=Europe/Moscow \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТА \
 --ingress-vip=ВВЕДИТЕ-IP-АДРЕС-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
 --minimal=true
Команда для запуска инсталляции на 1 Master-узле с VIP для API-сервера и внешним балансировщиком для Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 --api-endpoint=ВВЕДИТЕ-IP-ДЛЯ-API-СЕРВЕРА \
 --timezone=Europe/Moscow \
 --use-external-ingress-lb=true \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТА \
 --ingress=--ingress=ВВЕДИТЕ-FQDN-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
 --minimal=true
Команда для запуска инсталляции на 1 Master-узле с внешним балансировщиком для API-сервера и Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 -license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 -cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 -ssh-user=shturval \
 -ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 -use-external-kubeapi-lb=true \
 -api-endpoint=ВВЕДИТЕ-FQDN-API-СЕРВЕРА \
 --timezone=Europe/Moscow \
 --use-external-ingress-lb=true \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТА \
 --ingress=ВВЕДИТЕ-FQDN-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
 --minimal=true

Примеры команд для инсталляции в отказоустойчивой конфигурации (3 Master + 3 Worker)

Команда для запуска инсталляции на 3 Master-узлах и 3 Worker-узлах с VIP для API-сервера и Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 --api-endpoint=ВВЕДИТЕ-IP-ДЛЯ-API-СЕРВЕРА \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --worker-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --timezone=Europe/Moscow \
 --ingress-vip=ВВЕДИТЕ-IP-АДРЕС-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
Команда для запуска инсталляции на 3 Master-узлах и 3 Worker-узлах с внешним балансировщиком для API-сервера и VIP для Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 --use-external-kubeapi-lb=true \
 --api-endpoint=ВВЕДИТЕ-FQDN-API-СЕРВЕРА \
 --timezone=Europe/Moscow \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --worker-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --ingress-vip=ВВЕДИТЕ-IP-АДРЕС-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
Команда для запуска инсталляции на 3 Master-узлах и 3 Worker-узлах с VIP для API-сервера и внешним балансировщиком для Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 --api-endpoint=ВВЕДИТЕ-IP-ДЛЯ-API-СЕРВЕРА \
 --timezone=Europe/Moscow \
 --use-external-ingress-lb=true \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --worker-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --ingress=ВВЕДИТЕ-FQDN-ДЛЯ-INGRESS \
 --skip-check \
 -ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \
Команда для запуска инсталляции на 3 Master-узлах и 3 Worker-узлах с внешним балансировщиком для API-сервера и Ingress, самоподписными сертификатами в открытом контуре
./stc-2.10.0 install management \
 --license="ВВЕДИТЕ-ВАШУ-ЛИЦЕНЗИЮ" \
 --cluster-name=ВВЕДИТЕ-НАЗВАНИЕ-КЛАСТЕРА \
 --ssh-user=ИМЯ-СОЗДАННОГО-ПОЛЬЗОВАТЕЛЯ \
 --ssh-private-key=ВВЕДИТЕ-ПУТЬ-ДО-ПРИВАТНОГО-КЛЮЧА \
 --use-external-kubeapi-lb=true \
 --api-endpoint=ВВЕДИТЕ-FQDN-API-СЕРВЕРА \
 --timezone=Europe/Moscow \
 --use-external-ingress-lb=true \
 --master-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --worker-nodes=ВВЕДИТЕ-IP-ХОСТОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛОВ \
 --ingress=ВВЕДИТЕ-FQDN-ДЛЯ-INGRESS \
 --skip-check \
 --ntp-servers=ВВЕДИТЕ-АДРЕСА-NTP-СЕРВЕРОВ-ЧЕРЕЗ-ЗАПЯТУЮ-БЕЗ-ПРОБЕЛА \

После завершения инсталляции

После инсталляции вы получите:

  • логин и пароль администратора платформы;
  • kubeconfig администратора платформы;
  • ссылку для перехода в графический интерфейс платформы “Штурвал”.

Сохраните логин, пароль и kubeconfig. Они статические и пригодятся вам для дальнейшей эксплуатации.

Управление хостами, доступными для присоединения в кластер управления происходит с помощью экземпляра провайдера shturvalv2 с именем кластера управления. Чтобы перейти в интерфейс кластера управления в веб-интерфейсе платформы перейдите в раздел “Кластер” на вкладку “Кластер управления”. Управление ресурсами кластера управления, в т.ч. количеством узлов в группе происходит из интерфейса кластера управления.

Скриншот

mgmtcluster

Управление платформенными ресурсами происходит в разделе “Платформа”. Информация о лимитах лицензии, Swagger находятся в разделе “О системе”.

Инсталляция с самоподписным сертификатом

Если вы используете самоподписной сертификат при инсталляции, после завершения инсталляции и перехода в графический интерфейс платформы “Штурвал” в веб-браузере потребуется принять сертификаты:

  • https://front.<shturval_cluster_name>.<base_domain>;
  • https://back.<shturval_cluster_name>.<base_domain>;
  • https://auth.<shturval_cluster_name>.<base_domain>.

где:

  • <shturval_cluster_name> - IP-адрес или Ingress вашего кластера управления;
  • <base_domain> - ваша доменная зона или shturval.link (если вы не настраивали свою доменную зону).

Чтобы заменить самоподписные на цепочку сертификатов или ACME после завершения инсталляции, воспользуйтесь инструкцией.

Как изменить пароль администратора

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

Чтобы сменить пароль администратора по умолчанию, перейдите в установленный сервис “Модуль программного управления платформой” (объект типа shturvalserviceconfig shturval-backend) кластера управления. В спецификации сервиса найдите параметр static_password и обновите его значение.