Тема
Создание и синхронизация приватного репозитория Боцман
Введение
Когда используется создание внутреннего репозитория:
Организация внутреннего защищенного хранилища компонентов платформы “Боцман” для последующей установки “Боцман” в закрытом контуре без доступа к сети Интернет.
Организация локального защищенного хранилища компонентов платформы “Боцман” при нестабильном подключении к сети Интернет.
По причине внутренних правил и политик информационной безопасности.
Для ускорения процесса установки платформы “Боцман”.
В примере используется легковесный docker registry (https://hub.docker.com/_/registry)
Заметка
Если вы планируете использовать уже существующий registry на базе harbor, artifactory или иных продуктов, пожалуйста, обратитесь к их официальной документации по их настройке.
Варианты исполнения
Registry находится в двух сетях.
Закрытая и доступная для вычислительных мощностей платформы "Боцман".
Открытая с доступом к сети Интернет. Возможно ограниченно доступная сеть Интернет с доступом только до публичного
registryплатформы "Боцман".
Registry находится в двух сетях.
Закрытая и доступная для вычислительных мощностей платформы "Боцман".
Открытая с доступом к сети Интернет через Прокси с доступом только до публичного
registryплатформы "Боцман".
Registry находится в двух сетях.
Закрытая и доступная для вычислительных мощностей платформы "Боцман".
Открытая с доступом к сети Интернет. Возможно ограниченно доступная сеть Интернет с доступом только до публичного
registryплатформы "Боцман" в определенные часы только для синхронизации.
Registry находится только в закрытой зоне, а пакеты в него загружаются через отчуждаемые носители. Предварительно все пакеты должны быть размещены на отчуждаемом носители на устройстве с доступом к сети Интернет.
Технические требования
Описание параметров
| Имя параметра | Описание |
|---|---|
| OS | Astra Linux, RED OS, Ubuntu |
| vCPU | 2 |
| RAM | 8GB |
| DISK SPACE OS | Не менее 30GB |
| DISK SPACE DATA | Не менее 100GB |
| Networking | Не менее 300Мb/s для доступа с серверов куда будет устанавливаться "Боцман" |
Шаг 1. Настройка SSL сертификатов
Пример использования самоподписанных сертификатов
Выполните команду создания директории /data/certs на хосте, выделенном под роль registry:
bash
mkdir -p /data/certsВыполните команду перехода в директорию /data/certs:
bash
cd /data/certsВыполните команду генерации приватного ключа:
bash
openssl genrsa 1024 > registry.keyГде название файла - это имя хоста или домена. В примере указан registry
Выполните команду выдачи права доступа на файл registry.key:
bash
chmod 400 registry.keyВыполните создание конфигурационного файла san.cnf выпуска сертификата
Пример:
bash
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = RU
stateOrProvinceName = N/A
localityName = N/A
organizationName = Self-signed certificate
commonName = 120.0.0.1: Self-signed certificate
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = registry ipГде registry ip - ip адрес хоста с ролью registry, который будет доступен с АРМ
Выполните команду генерации сертификата:
bash
openssl req -new -x509 -nodes -sha256 -days 365 -key registry.key -out registry.crt -config san.cnfРезультатом выполнения команды должен стать файл: registry.crt
Выполните команду запуска registry с поддержкой терминирования TLS соединений (https):
bash
docker run -d -p 443:5000 --name registry-tls -v /data/certs:/certs -v /data/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key registry:2.8.3Шаг 2. Добавление на АРМ сертификата в список доверенных
Выполните команду создания каталога на хосте с ролью АРМ:
bash
mkdir -p /etc/docker/certs.d/registry:443/Выполните команду, чтобы поместить содержимое файла registry.crt с хоста registry в файл:
bash
/etc/docker/certs.d/registry:443/ca.crt на хосте с ролью АРМВыполните команду аутентификации на АРМ в новом докере registry:
bash
docker login registryРезультатом выполнения команды должна стать строка: Login Succeeded
Шаг 3. Настройка скрипта зеркалирования
В архиве поставки дистрибутива bootsman предоставлен скрипт mirror.sh Откройте скрипт mirror.sh в удобном для вас редакторе с настройкой перевода строки формата UNIX (CR). В переменную REGISTRY_ROOT введите harbor.bootsman.host Пример:
bash
REGISTRY_ROOT="harbor.bootsman.host"В качестве логина - BOOTSMAN_USERNAME используйте ранее предоставленные вам логин, который идет в комплекте с поставкой дистрибутива. В качестве пароля - BOOTSMAN_PASSWORD используйте полную строку из файла лицензии. Без пробелов в конце и начале строки. Пример:
bash
BOOTSMAN_PASSWORD=eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsInZlcnNpb24iOjV9.XXXXXXXXXXXXXXXXXXXXJXHHGGGDGSHSHDHSHDSDHSHDHSHDSHDHSJDHSJDH.KTlLI6kaxLUZNw169r7PMg0yKPA8dDQIXSdzsWAz51b7Nn59EPIgNDUpRz8l1in4GouBXAicrvDvJgIi6j5hCgВ параметр IMAGES_FILE введите версию "Боцман", необходимую для синхронизации. На текущий момент, это version_2.4.1 Пример:
bash
IMAGES_FILE=version_2.4.1Параметры:
bash
LOCAL_REGISTRY=""
LOCAL_ORG=bootsman
LOCAL_USERNAME=
LOCAL_PASSWORD=настраиваются в соответствии с настройками вашего локального репозитория.
Шаг 4. Запуск первичного зеркалирования
Выполните команду предоставления прав доступа на запуск скрипта:
bash
chmod +x mirror.shВыполните команду запуска зеркалирования репозитория:
bash
./mirror.shВнимание!
В файлах version_x.x.x, входящих в состав дистрибутива "Боцман" указаны необходимые артефакты и их версии для зеркалирования. Данные файлы используются скриптом mirror.sh и должны располагаться рядом с ним.
Шаг 5. Запуск зеркалирования по расписанию
Для ежедневного зеркалирования и обновления содержимого репозитория, добавьте исполнение команды mirror.sh в crontab
Выполните команду редактирвания crontab (можно командой crontab -e) и добавьте строку:
bash
@daily /полный/путь/до/mirror.shили используйте удобное вам расписание сихнронизации в соответствии с crontab нотацией.