docker login https://registry.ngrsoftlab.ruУстановка в изолированных средах
При необходимости установки и обновления в изолированных от Интернет сегментах сети необходимо развернуть локальную копию репозитория обновлений. Для этого необходимо добавление в локальный DNS записи для registry.ngrsoftlab.ru и выпуск сертификата для возможности установления https соединений. Содержимое локального репозитория, в т.ч. обновления, передаются производителем как tar-архивы <имякомпонента>.tar по запросу на адрес support@ngrsoftlab.ru.
Пример установки и настройки собственного локального репозитория - https://docs.docker.com/registry/deploying/
Допускается использование любого другого продукта, обеспечивающего docker api v2.
В репозитории должен быть создан пользователь с любыми логином, паролем и правами на запись в репозиторий (если в продукте есть ролевая модель).
Для наполнения репозитория необходимо авторизоваться в репозитории с созданным пользователем с помощью команды:
Для всех архивов с компонентами Alertix выполнить (при условии, что компоненты импортируются в образы alertix/<имякомпонента>:<версия>):
docker load -i <component>.tar
docker tag alertix/<component>:<version> registry.ngrsoftlab.ru/<component>:<version>
docker push registry.ngrsoftlab.ru/<component>:<version>
docker rmi alertix/<component>:<version> registry.ngrsoftlab.ru/<component>:<version>После этого производится обычная процедура Первоначальная установка, описанная в "Руководстве по установке и обновлению". Логин и пароль созданного пользователя локального репозитория будет необходим в процессе установки как Имя пользователя и пароль в кабинет обновляемого содержимого.
Пример процедуры подготовки сборки дистрибутива Платформы в полностью изолированной среде с локальным репозиторием на базе Docker registry приведен далее.
Для выполнения процедуры понадобится хотя бы 1 хост с доступом в сеть Интернет. Доступ может быть открыт как с сервера, на который планируется установить локальный репозиторий, так и с любого другого хоста.
| Обязательным условием является использование ОС полностью идентичных версий на всех серверах (хост с доступом в Интернет, хост на который планируется устанавливать локальный репозиторий, и хосты, планируемые под установку Платформы). Все скрипты, приведенные в процедуре, необходимо запускать с правами root, например sudo bash example.sh. |
1. Подготовка всех необходимых пакетов.
На хосте, имеющем доступ в Интернет, установите необходимые пакеты в ОС с помощью команды:
sudo apt install openssh-server curl docker docker.io python3 python3-docker pass postgresql-client net-tools jq -yЕсли при установке Платформы производится подключение к удаленному postgres, обеспечьте отключение логирования команд класса SET, так как через них иногда передаются чувствительные данные сессии.
Пример конфигурации плагина журналирования pgaudit: pgaudit.log = 'all, -misc, -misc_set' |
На этом же хосте создайте и выполните скрипт следующего содержания:
#!/bin/bash
mkdir repository
chown _apt repository
cd repository
dpkg-query -f '${binary:Package}\n' -W > Inststalled_Packages
while read package; do
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances $package | grep "^\w" | sort -u)
done < Inststalled_Packages
apt-ftparchive packages . > Packages
cd ..
tar -czvf repository.tar.gz repository/В результате работы скрипта, в директории его запуска будет создан файл repository.tar.gz. Скопируйте данный файл на хосты, куда будет устанавливаться Платформа и локальный репозиторий.
2. Выгрузка образа (image) docker Registry.
На хосте, имеющем доступ в Интернет, создайте и выполните скрипт следующего содержания:
#!/bin/bash
docker pull registry:2.7.0
docker save registry:2.7.0 -o registry.tarВ результате работы скрипта, в директории его запуска будет создан файл registry.tar. Скопируйте данный файл на хост, куда будет устанавливаться локальный репозиторий.
3. Выгрузка всех образов (image) Alertix.
На хосте, имеющем доступ в Интернет, создайте и выполните скрипт следующего содержания:
#!/bin/bash
echo "Enter Alertix version:"
read version
mkdir -p images
images=(agents gateway census opensearch ioc-watcher opensearch-dashboards logstash platform-back platform-front postgres reporter signal wec ueba watchdog)
# Для аутентификации необходимо ввести данные от личного кабинета NGR
docker login registry.ngrsoftlab.ru
for image in ${images[@]} ; do
echo $image
docker pull registry.ngrsoftlab.ru/$image:$version
docker tag registry.ngrsoftlab.ru/$image:$version $image
docker image save -o images/$image.tar $image
gzip images/$image.tar
done
tar -czvf images.tar.gz images/В ходе работы скрипта необходимо ввести логин и пароль учетной записи репозитория обновлений производителя. В результате работы скрипта, в директории его запуска будет создан файл images.tar.gz. Скопируйте данный файл на хост, куда будет устанавливаться локальный репозиторий.
4. Установка локального репозитория.
На изолированных от сети Интернет хостах, планируемых под установку Платформы и локального репозитория, в каталоге, куда был скопирован файл repository.tar.gz, создайте и выполните скрипт следующего содержания:
#!/bin/bash
tar -xvf repository.tar.gz
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb [trusted=yes] file:$(pwd)/repository/ ./" >/etc/apt/sources.list
apt update
dpkg --configure -a
apt update
touch /etc/cloud/cloud-init.disabled
apt update5. Установка локального Docker Registry.
На хосте, планируемом под установку локального репозитория, в каталоге, куда был скопирован файл registry.tar, создайте и выполните скрипт следующего содержания:
#!/bin/bash
# Стандартная процедура установки Registry
apt install docker.io net-tools jq -y
echo "Enter NEW Registry user:"
read user_name
echo "Enter user $user_name NEW password:"
read -s user_password
echo "127.0.0.1 registry.ngrsoftlab.ru" >> /etc/hosts
mkdir auth
mkdir certs
openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out certs/server.crt -keyout certs/server.key -addext "subjectAltName = DNS:registry.ngrsoftlab.ru"
docker load --input registry.tar
docker run --rm --entrypoint htpasswd registry:2.7.0 -Bbn $user_name $user_password > auth/htpasswd
docker run -d -p 443:443 --restart=always --name registry -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key registry:2.7.0В ходе выполнения скрипта необходимо будет придумать и ввести логин и пароль пользователя локального репозитория, который в дальнейшем будет использоваться для установки Платформы.
6. Загрузка образов (image) в локальный docker Registry.
На хосте, где был установлен локальный репозиторий, в каталоге, куда был скопирован файл images.tar.gz, создайте и выполните скрипт следующего содержания:
#!/bin/bash
echo "Enter Alertix version:"
read version
tar -xvf images.tar.gz
images=(agents gateway census opensearch ioc-watcher opensearch-dashboards logstash platform-back platform-front postgres reporter signal wec ueba watchdog)
# Для аутентификации необходимо ввести данные, указанные при установке
docker login registry.ngrsoftlab.ru
for image in ${images[@]} ; do
echo $image
docker image load -i images/$image.tar.gz
docker tag $image:latest registry.ngrsoftlab.ru/$image:$version
docker push registry.ngrsoftlab.ru/$image:$version
docker rmi $image:latest registry.ngrsoftlab.ru/$image:$version
doneВ ходе работы скрипта необходимо будет указать версию Платформы, образы которой были ранее загружены из репозитория производителя, а также логин и пароль, заданные на предыдущем шаге.
7. Подготовка изолированного хоста к установке Alertix.
На изолированных от сети Интернет хостах, планируемых под установку Платформы, и хосте с установленным локальным репозиторием, создайте и выполните скрипт следующего содержания:
#!/bin/bash
# Стандартная процедура подготовки Alertix
$(grep "alertix ALL=(ALL:ALL) NOPASSWD: ALL" /etc/sudoers) && found="True" || found="False"
if [ "$found" == "False" ]; then
echo "alertix ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
fi
apt install openssh-server curl docker docker.io python3 python3-docker pass postgresql-client net-tools jq -y
mkdir /home/alertix/.ssh
chmod 700 /home/alertix/.ssh
touch /home/alertix/.ssh/authorized_keys
chmod 600 /home/alertix/.ssh/authorized_keys
chown -R alertix:alertix /home/alertix/
# Ввод IP адреса локального регистри
echo "Enter local registry IP address:"
read registry_ip
# Ввод предполагаемого FQDN имени хоста, например - alertix.local
echo "Enter guess FQDN for this machine:"
read fqdn
# Получение локального IP-адреса хоста
local_ip=$(hostname -I | awk '{print $1}')
echo "$registry_ip registry.ngrsoftlab.ru lk.ngrsoftlab.ru" >> /etc/hosts
echo "$local_ip $fqdn" >> /etc/hosts
# Подготовка сертификата для работы с локальным регистри
mkdir /etc/docker/certs.d/
mkdir /etc/docker/certs.d/registry.ngrsoftlab.ru
echo -n | openssl s_client -connect registry.ngrsoftlab.ru:443 -servername registry.ngrsoftlab.ru | openssl x509 > server.crt
cp server.crt /etc/docker/certs.d/registry.ngrsoftlab.ru/ca.crt
cp server.crt /usr/local/share/ca-certificates/registry.ngrsoftlab.ru.crt
update-ca-certificatesПосле этого производится обычная процедура Первоначальная установка, описанная в "Руководстве по установке и обновлению".
| С версии 3.6.0 в процессе инсталляции устанавливаются максимальные минорные версии компонента. Однако, при установке через локальный docker-registry из-за разницы в настройках авторизации (если нет доступа по API без авторизации для получения доступных версий) установятся минимальные версии (например. 3.6.0). Поэтому для установки надо обязательно сохранить в репозитории минимальные версии компонентов ядра: platform-back, platform-front, agents, postgres (при необходимости установки вместе с платформой). |
При необходимости установки в изолированных от Интернет сегментах сети необходимо развернуть локальную копию репозитория обновлений. Если репозиторий был удален после установки, даже при наличии необходимых образов на хосте консоли, установка все равно завершится неудачно, поскольку Платформа проверяет доступ к репозиторию.
Чтобы использовать уже загруженные на хост консоли образы, перейдите в меню Обслуживание > Обновление ПО и нажмите кнопку "Репозиторий". В открывшемся окне установите переключатель Образы в положение "Выкл" (Использовать образы уже загруженные на хост консоли).

| Использование локальных образов может быть губительно для платформы, если образы некорректно протестированы или версии несовместимы. |
Была ли эта страница полезной?
Спасибо за отзыв!
Спасибо, мы учтём это для улучшения документации.