Подготовка зеркала для инсталляции в закрытом контуре
Закрытый контур - в процессе инсталляции нет интернета на всех узлах и зеркале. Для инсталляции необходим дистрибутив и лицензия платформы Штурвал. Ссылку на скачивание 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).
В случае, если вы подключаете сертификаты не во время инициализации зеркала или балансировщика, воспользуйтесь инструкцией по импортированию сертификатов в зеркало.
Требование к сертификату
- Для импорта необходимо указать файл с цепочкой сертификатов и ключом.
- Сертификаты и ключ должны быть в pem формате.
- Цепочка сертификатов должна содержать CA и сам сертификат.
- Сертификат должен содержать поле subjectAltName с fqdn зеркала (fqdn должен совпадать с указанным параметром
--fqdnили со значением в конфигурации зеркала) - При подписании 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
- На 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 репозитория.
Имена репозиториев могут быть любыми. Соответствие имён будет установлено в файле конфигурации.
- На хосте, имеющем доступ, сгенерировать пример конфигурации.
Команда
stm external config
- Полученный файл 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