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

Закрытый контур - в процессе инсталляции нет интернета на всех узлах и зеркале. Для инсталляции необходим дистрибутив и лицензия платформы Штурвал. Ссылку на скачивание stm, stc, бандл, а также номер лицензии передает заказчику менеджер со стороны Штурвала.

Доступно только в enterprise версии.

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

Команды выполняются с помощью утилиты stm (shturval mirror), которая входит в состав бандла. При запуске команд необходимо подставлять свои значения для параметров.

Команды инициализации, обновления зеркала и все доступные параметры
Команда Описание команды Параметр Описание параметра
stm init Инициализация зеркала. Генерация файлов конфигурации, сертификатов, ключей, развертывание Nexus и Nginx --fqdn Адрес, по которому будет доступно зеркало (обязательно). На это имя будут сгенерированы сертификаты
--license Лицензия (обязательно)
--cri-socket Сокет для подключения к cri - если не указан - скрипт будет пытаться искать сокет самостоятельно
--https-port Порт http. Будет занят на хосте. По умолчанию - 80
--registry-port Порт container registry - не будет занят на хосте (используется в контейнере Nexus). По умолчанию 8082
--nexus-container-nam Каталог данных Nexus. По умолчанию data
--nginx-container-name Имя контейнера Nginx по умолчанию shturval_proxy
--shturval-repo Адрес репозитория Штурвал - по умолчанию r.shturval.tech
--public-repo Адрес публичного репозитория Штурвал - по умолчанию public.shturval.tech
--network-name Имя сети контейнеров - по умолчанию shturval-network
--subnet Подсеть сети контейнеров - по умолчанию 172.17.66.0/24
--cert-file Файл сертификата для импорта
--privkey-file Файл ключа для импорта
stm bundle make Инициализация зеркала и загрузка пакетов и образов из бандла. Совмещает команды init и bundle load, а также их параметры (обязательные параметры --fqdn, --license)
stm bundle load Загрузить содержимое бандла в зеркало (зеркало должно быть инициализировано) --path Путь до каталога с бандлом. По умолчанию shturval-bundle
Основные команды утилиты stm и все доступные параметры
Команда Описание команды Параметр Описание параметра
stm bundle check Проверка целостности бандла --path Путь до каталога с бандлом. По умолчанию shturval-bundle
stm start Запуск зеркала. Зеркало должно быть инициализировано
stm stop Остановка зеркала. Зеркало должно быть инициализировано и запущено. Параметр --force - принудительная остановка зеркала (примените, например, при неудачной установке зеркала)
stm restart Перезапуск зеркала. Зеркало должно быть инициализировано и запущено
stm status Статус локального зеркала репозиториев и реестра образов
stm uninstall Удаление локального зеркала репозиториев и реестра образов

Примеры работы с зеркалом

Команда инициализации зеркала
stm init --fqdn=mirror.ip-XX-XX-XXX-XX.shturval.link --license=XXXXXXXXXX 

Обратите внимание! Вы можете использовать команду stm bundle make, включающую инициализацию зеркала и загрузку пакетов и образов. Перейдите к следующему примеру.

Команда инициализации зеркала и загрузка пакетов и образов из бандла
stm bundle make --fqdn=mirror.ip-XX-XX-XXX-XX.shturval.link --license=XXXXXXXXXX 
Команда загрузки новых версий из бандла в ранее развернутое зеркало
stm bundle load --path=../bundle/shturval-bundle

Где в --path вместо ../bundle/shturval-bundle укажите путь до нового бандла. Обратите внимание! Выполнять команду необходимо в директории с текущим зеркалом.

Подробная инструкция по обновлению зеркала на странице Обновление в закрытом контуре.

Команда проверки целостности бандла
stm bundle check 
Команда основных операций с зеркалом
# Запуск зеркала. Команда может потребоваться после остановки зеркала
stm start
# Перезапуск
stm restart
# Остановка зеркала. Команда может потребоваться при подключении Step-ca к зеркалу
stm stop 
# Проверка статуса зеркала
stm status
# Удаление зеркала
stm uninstall 

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

Есть возможность импортировать свой сертификат на этапе инициализации зеркала (init, bundle make), на этапе развертывания nginx для внешнего nexus (external nginx) или отдельной командой (cert import).

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

Требование к сертификату

  1. Для импорта необходимо указать файл с цепочкой сертификатов и ключом.
  2. Сертификаты и ключ должны быть в pem формате.
  3. Цепочка сертификатов должна содержать CA и сам сертификат.
  4. Сертификат должен содержать поле subjectAltName с fqdn зеркала (fqdn должен совпадать с указанным параметром --fqdn или со значением в конфигурации зеркала)
  5. При подписании CSR необходимо сохранить Extensions (для openssl - ключ -copy_extensions copyall).

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

Команды и доступные параметры для работы с сертификатами
Команда Описание команды Параметр Описание параметра
stm cert import Импорт сертификата (приведет к перезапуску зеркала) --cert-file Файл сертификата для импорта
--privkey-file Файл ключа для импорта
stm cert csr Сформировать запрос на получение сертификата --fqdn Адрес, на который будет сгенерирован запрос

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

Команды генерации csr и выпуска сертификата
# Выпустить запрос на получение сертификата (csr и ключ будут находиться в каталоге export)
stm cert csr --fqdn=mirror.corpdomain.ru
# Выпустить сертификат, используя CSR и свой CA (пример для openssl)
openssl x509 -req -sha512  -in export/csr.pem -days 3650 -CA ca/ca_cert.pem \
-CAkey ca/ca_private_key.pem -CAcreateserial -out export/mirror_cert.pem -copy_extensions copyall
# Добавить к полученному сертификату свой CA
cat ca/ca_cert.pem >> export/mirror_cert.pem
Команда импорта сертификата на инициализированное зеркало

Выполнение команды приведет к перезапуску зеркала.

stm cert import --cert-file export/mirror_cert.pem --privkey-file export/privkey.pem
Команда инициализации зеркала с импортом сертификата в зеркало
stm bundle make --fqdn=mirror.corpdomain.ru --license=XXXXXXXXXX \
--cert-file export/mirror_cert.pem --privkey-file export/privkey.pem

Внешний Nexus

Загрузка образов во внешний Nexus

Чтобы загрузить образы во внешний Nexus, используйте команды stm external, в которые необходимо подставить свои значения параметров.

Команды и доступные параметры для загрузки образов во внешний Nexus
Команда Описание команды Параметр Описание параметра
stm external config генерация примера конфигурации
stm external load загрузить содержимое бандла во внешний Nexus --path путь до каталога с бандлом. По умолчанию shturval-bundle
stm external nginx развертывание Nginx для проксирования запросов во внешний Nexus --fqdn Адрес, по которому будет доступно зеркало (обязательно). На это имя будут сгенерированы сертификаты
--http-port Порт http. Будет занят на хосте. - 80 по умолчанию
--https-port Порт https. Будет занят на хосте - 443 по умолчанию
--cert-file Файл сертификата для импорта
--privkey-file Файл ключа для импорта

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

Команда генерации конфигурации
stm external config
Команда загрузки содержимого бандла во внешний Nexus
stm external load
Команда развертывания Nginx для проксирования запросов во внешний Nexus с импортом сертификата
stm external nginx --fqdn=mirror.example.ru --cert-file export/mirror_cert.pem --privkey-file export/privkey.pem

Подготовка внешнего Nexus

  1. На Nexus необходимо создать требуемые hosted репозитории:
  • Репозитории, обязательные для всех инсталляций - форматы raw, helm, docker
    • Docker репозиторий должен иметь коннектор (выделенный порт)
  • Для apt дистрибутивов обязателен hosted apt репозиторий, названный в конфиге “deb_universal”
    • Для apt репозиториев distribution должен быть main
    • Для apt репозиториев должна быть сгенерирована пара gpg ключей. Приватный ключ должен быть использован при создании репозитория, публичный должен быть загружен в корень raw репозитория под именем shturval.gpg
  • Для yum дистрибутивов обязателен hosted yum репозиторий, названый в конфиге “rpm_universal”
    • Для yum репозитория Repodata Depth должна быть установлена в 0
  • Также необходим yum или apt репозиторий для дистрибутива
  • Например, для дистрибутива РЕД ОС нужен helm, raw, docker и 2 yum репозитория, для дистрибутива astra - helm, raw, docker и 2 apt репозитория.

Имена репозиториев могут быть любыми. Соответствие имён будет установлено в файле конфигурации.

  1. На хосте, имеющем доступ, сгенерировать пример конфигурации.
Команда
stm external config
  1. Полученный файл config/external-config-example.yaml нужно скопировать как config/external-config.yaml и заполнить в соответствии со своими данными.

Соответствие имён репозиториев заполняется как “ключ”: “значение”, где в значении указываются имена созданных репозиториев (ключи менять не следует). Например, если для raw репозитория был создан репозиторий с именем “raw_repo”, в конфигурации запись должна выглядеть так : bin_public: “raw_repo”.

Запуск синхронизации из бандла

Команда
stm external load

После загрузки будет сгенерирован пример конфигурации Nginx. Его можно использовать для создания собственной конфигурации, для поднятия Nginx на нужном хосте. Модуль развертывания зеркала может развернуть собственный Nginx с требуемой конфигурацией (хост должен соответствовать общим требованиям модуля):

Команда
stm external nginx --fqdn=mirror.example.ru
×