Условно-закрытый контур

Условно-закрытый контур - интернет только на зеркале. Для инсталляции необходим дистрибутив и лицензия платформы Штурвал.

Скачайте и установите локальное зеркало репозиториев и реестра образов. Подробнее о подготовке зеркала .

Обновление локального репозитория

Запустите на выполнение следующую команду:

./update_repos.sh [options]

Параметры этой команды [options]:

Параметр Описание
--license Лицензионный ключ (обязательный)
--versions Список доступных версий в r.shturval.tech
--version Обновление репозитория на определенную версию. Значение по умолчанию --latest

Зеркалирование репозитория

Скрипт make_external.sh позволяет загрузить образы во внешний docker registry (например в Nexus).

Скрипт может загрузить образы указанной версии из r.shturval.tech или загрузить все образы из локального зеркала.

Требование к registry:

  • Должен быть доступен напрямую или через reverse proxy (nginx). В случае с Nexus - необходимо создать коннектор на выделенном порту.
  • Для загрузки образов необходима учетная запись с правами PUSH.
  • Для использования внешнего registry в качестве источника установки, необходим анонимный доступ на pull.

Параметры скрипта:

Параметры команды [options]:

Параметр Описание
--license Лицензионный ключ (обязательно, если не указана опция --from_local, игнорируется, если опция указана)
--versions Список доступных версий в r.shturval.tech
--registry_addr Адрес целевого registry (обязательный)
--registry_port Порт внешнего registry (443 по умолчанию)
--registry_username Имя пользователя для доступа в целевой registry (обязательный)
--registry_password Пароль пользователя для доступа в целевой registry (обязательный)
--registry_proto Протокол внешнего registry (https по умолчанию)
--from_local Откуда загружать образы во внешний registry, где true - образы будут загружены из локального зеркала (будут загружены все образы, имеющиеся в локальном registry, опция --version будет проигнорирована). Если опция не указана (или любое другое значение), образы будут загружены из r.shturval.tech
--version Версия образов для загрузки (обязательно, если не указана опция --from_local, игнорируется, если опция указана)

Примеры использования

Загрузка версии из r.shturval.tech

./make_external.sh --license XXXXXXXX --version X.Y.Z --registry_addr registry.domain.org --registry_port 8082 --registry_proto http --registry_username pushuser --registry_password password 

Загрузка пакетов из локального зеркала

./make_external.sh --registry_addr registry.domain.org --registry_port 8082 --registry_proto http --registry_username pushuser --registry_password password --from_local true

Запуск локального зеркала с внешним registry

Для работы с локальным registry зеркало нужно запустить с ключом --registry_addr (порт и протокол указывать обязательно)

./run_repos.sh --registry_addr http://registry.domain.org:8082

Обновление зеркала

Распакуйте архив с новым зеркалом на тот же хост, на котором запущено текущее зеркало. Скопируйте каталог certs с текущего зеркала в каталог с новым. Завершите контейнер с зеркалом:

docker stop sht_offline_installer
docker rm   sht_offline_installer

Запустить новое зеркало: ./run_repos.sh

Если необходимо - произведите загрузку образов в свой registry с помощью скрипта make_external.sh

Установка кластера управления

Запустите команду для скачивания бинарного файла:

wget URL -O stc

Где вместо URL подставьте соответствующую необходимой версии ссылку:

Параметры команды

Для вызова справки о команде используйте параметр:

Параметр Описание
-h, --help Справка о команде

Пример:

./stc install management --help

Глобальные:

Наименование параметра Описание
--debug Выводить в лог всю информацию об ошибках (по умолчанию false)
--dry-run Только проверка конфигурации. Реальные изменения не вносятся. (по умолчанию false)
--force Удалять без подтверждения
--quiet Выключить stdout. Только код выхода
--ssh-private-key string Путь к файлу приватного ключа SSH
--ssh-user string Имя пользователя для подключения по SSH
--workdir string Рабочая директория кластера (для файлов конфигурации, логов и пр.)

Параметры инсталляции:

Параметр Описание
--api-endpoint [string] Адрес API управления кластером
--cluster-name [string] Имя кластера
--ha-type [string] Тип доступности кластера: single (одноузловой) или ha (высокодоступный)
--ingress [string] Wildcard DNS-запись для ingress в формате apps.corporate.domain
--ingress-vip [string] VIP адрес для ingress контроллера
--interactive Признак интерактивного режима. Значение по умолчанию – false
--license [string] Лицензионный ключ для загрузки пакетов
--monitoring-endpoint [string] Адрес кластера мониторинга для отправки системных метрик
--ntp-servers [string] Список серверов синхронизации времени (через запятую)
--registry [string] Адрес реестра образов и репозиториев пакетов. Значение по умолчанию – r.shturval.tech
--secure Признак установки дополнительных параметров безопасности. Значение по умолчанию – false
--timezone [string] Часовой пояс. Значение по умолчанию – Europe/Moscow
--skip-check Пропустить проверку хостов перед инсталляцией (по умолчанию false)
--use-external-ingress-lb Использовать внешний балансировщик для Ingress контроллера (по умолчанию false)
--use-external-kubeapi-lb Использовать внешний балансировщик кластерного IP (по умолчанию false)

При использовании корпоративного зеркала корневой сертификат зеркала должен быть прописан в доверенные на все ВМ и шаблоны.

Генерация ключевой пары

Для пользователя, под которым платформа будет устанавливаться (—ssh-user) необходимо передать открытую часть ключа командой ssh-copy-id на хосты будущей платформы

Сгенерировать ключ можно с помощью команды:

# генерируем ключевую пару
ssh-keygen -t ed25519 -f shturval
# копируем открытую часть на машину
ssh-copy-id -i shturval.pub ssh-user@IP

Интерактивный режим инсталляции

Запустите инсталляцию с помощью команды:

./stc install management --interactive

Введите данные в соответствии с подсказками, которые отобразятся на экране.

Пример процесса инсталляции в интерактивном режиме для высокодоступного кластера с тремя Master-узлами и двумя Worker-узлами:

Введите название кластера: test-cluster
Введите имя пользователя для доступа к узлам кластера:
%имя_пользователя%
Use the arrow keys to navigate: ↓ ↑ → ←
? Выберите ssh-ключ для подключения к узлам кластера
пользователя %имя_пользователя%:
  ▸ id_rsa
    указать другой путь к файлу
Use the arrow keys to navigate: ↓ ↑ → ←
? Выберите конфигурацию кластера:
    Одноузловой
  ▸ Высокодоступный
Введите адрес для узла master номер 1: master1
Введите адрес для узла master номер 2: master2
Введите адрес для узла master номер 3: master3

Введите адрес API кластера: xx.xxx.x.xxx
(указывается только для высокодоступной конфигурации)
Введите количество рабочих узлов кластера: x
Введите адрес для узла worker номер 1: xxx-xx
Use the arrow keys to navigate: ↓ ↑ → ←
? Использовать внешний балансировщик для Ingress контроллера:
  ▸ Да
    Нет
Введите VIP адрес для Ingress контроллера: xx.xxx.x.xxx
Use the arrow keys to navigate: ↓ ↑ → ←
? Автоматически сгенерировать DNS имя для Ingress контроллера:
  ▸ Да
    Нет
Введите виртуальный IP (VIP) для ingress: xx.xxx.x.xxx

В процессе инсталляции будет отображаться следующая информация:

Выполняется подготовка узлов для установки кластера.
Это может занять несколько минут.
Инициализация подсистемы управления кластера
Добавление Worker-узлов в кластер
Установка системных компонентов кластера
Статус установки системных компонентов:
kube-prometheus-crds : Успешно
cilium : Успешно
ingress-nginx : Успешно
Кластер успешно развернут
Для подключения используйте ключ
/%путь_до_конфигурационного файла%/clusteradmin.confclusteradmin.conf

Если инсталляция завершилась с ошибками, информация о них отобразится в логе.

Тихий режим инсталляции

./stc install management --cluster-name=test-cluster --license=$SHTURVAL_LICENSE \
--ssh-user=%имя_пользователя% --ssh-private-key=%путь к файлу с ключом%  --ha-type=ha \
--master-nodes=master1,master2,master3 --worker-nodes=worker1,worker2 --ingress-vip=[string]

Пример:

./stc install management --license="qwe123asd" --registry=corp.domain.local:443 --use-external-ingress-lb=true --api-endpoint=api.corp.domain.local --cluster-name=management --ha-type=ha --ingress=apps.corp.domain.local --master-nodes=10.0.0.3,10.0.0.4,10.0.0.56 --worker-nodes=10.0.0.11,10.0.0.12,10.0.0.13 --ssh-user=shturval --ssh-private-key=/home/shturval/.ssh/id_rsa --use-external-ingress-lb=true --pod-subnet=100.80.0.0/16 --service-subnet=100.64.0.0/12 --secure=true --skip-check --debug --ca-cert=./cert.pem  --ca-key=./key.pem

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

  • инсталляция остановится;
  • отобразится сообщение с указанием ошибки и некорректного параметра;
  • процесс остановится.

В этом случае устраните ошибку и перезапустите процесс развертывания.

Смешанный режим инсталляции

В смешанном режиме пропишите в команде признак --interactive и добавьте необходимые параметры. Остальные необходимые для инсталляции параметры система запросит в режиме диалога.

Пример запуска установки кластера управления в смешанном режиме:

./stc install management  --interactive --license=$SHTURVAL_LICENSE \
--ntp-servers=0.ru.pool.ntp.org,1.ru.pool.ntp.org \
--disabled-system-services=shturval-cd,shturval-rollouts,shturval-policy-manager,shturval-scanner,shturval-policies

Если инсталляция завершилась с ошибками, информация о них отобразится в логе.

Установка системных сервисов в процессе инсталляции

  • Чтобы использовать системный ingress-controller (Virtual IP) при инсталляции используйте параметр --ingress-vip. Пропишите свободный IP-адрес. Технические сервисы будут преконфигурированы при инсталляции.
  • Если у вас есть Wildcard-запись и вы хотите использовать системный ingress-controller (Virtual IP) при инсталляции используйте параметры --ingress-vip и --ingress. При этом IP-адрес имени хоста ingress должен совпадать с IP-адресом, указанным в ingress-vip.
  • Если у вас есть Wildcard-запись и вы хотите использовать внешний ingress-controller при инсталляции используйте параметры --ingress и --use-external-ingress-lb со значением true. При инсталляции будут выведены подсказки по конфигурации на примере HAProxy. В таком случае вам необходимо самостоятельно создать Load balancer и распределить трафик на воркер-узлы.

Для управления в процессе инсталляции необходимо использовать названия чартов системных сервисов. Список доступных для управления системных сервисов:

Название чарта Название в графическом интерфейсе
shturval-descheduler Модуль распределения нагрузки узлов
shturval-log-operator Модуль локального сбора логов
shturval-dashboards Модуль графического отображения метрик
shturval-metrics Модуль локального сбора метрик
shturval-local-csi Модуль локального хранения
shturval-node-config Модуль управления конфигурациями узлов
shturval-cluster-roles Кластерные роли Платформы
shturval-services Модуль управления системными и корпоративными сервисами
shturval-backup Модуль резервного копирования и восстановления
shturval-scanner Модуль сканирования образов контейнеров
shturval-rollouts Модуль управления развертыванием прикладных сервисов
shturval-policy-manager Модуль анализа конфигураций приложений
shturval-cd Модуль непрерывной доставки приложений
shturval-cert-manager Модуль управления TLS-сертификатами
shturval-cert-expiration Модуль проверки сертификатов API Kubernetes
shturval-networking Модуль управления сетями кластера
shturval-caching-dns Модуль управления локальным DNS
shturval-vip Модуль управления виртуальными IP-адресами
shturval-ingress-controller Модуль управления внешними подключениями (Ingress)
shturval-update Модуль обновления кластера

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

Troubleshooting

Если установка происходит в закрытом контуре (без доступа к сети Интернет) на Red OS и была произведена ручная модификация файлов /etc/yum.repos.d/RedOS-*.repo (например baseurl изменён на адрес прокси репозитория или зеркала):

На всех нодах кластера необходимо:

  • Установить пакет python3-dnf-plugin-versionlock
  • Поставить versionlock на пакет redos-release
  • Определить тип установки дистрибутива (minimal, server, desktop). Тип установки можно посмотреть в файле /etc/redos-release . Также можно посмотреть наличие пакетов redos-release-minimal, redos-release-server или redos-release-desktop
  • Поставить versionlock, на соответветствующей установке дистрибутива пакет (redos-release-minimal, redos-release-server, redos-release-desktop).

Пример для minimal инсталляции:

 yum install python3-dnf-plugin-versionlock
 yum versionlock add redos-release redos-release-minimal

Дополнительные рекомендации

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

Рекомендуем сразу после завершения установки настроить ротацию логов. Отсутствие ротации логов может привести к стремительному заполнению диска и замедлению работы системы.

Рекомендуем всегда прописывать ntp-серверы и указывать сервисы, которые не нужно включать по умолчанию:

--ntp-servers - укажите корпоративные или 0.ru.pool.ntp.org, 1.ru.pool.ntp.org
--disabled-system-services - укажите, какие сервисы не нужно включать по умолчанию

Рекомендуем использовать внешний балансировщик для кластера управления в промышленной (продуктивной) среде.

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

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

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