Установка#
Объединение компонентов в один дистрибутив#
Скачать и сохранить архивы компонентов в одном каталоге, например, ARR. Перейти в каталог ARR и распаковать архивы rgse-cfg-[VERSION]-distrib.zip и rgse-bin-[VERSION]-distrib.zip командой unzip.
unzip rgse-cfg-{build}-distrib.zip
unzip rgse-bin-{build}-distrib.zip
Перейти в полученный после распаковки архивов каталог ./package/conf.
Режим интеграции с Platform V Works::OneWork#
Интеграция с продуктом Platform V Works::OneWork обеспечивает взаимодействие компонента Artifactory с другими доступными сервисами/продуктами в одном интерфейсе.
Для настройки интеграции заполните следующие параметры:
Имя параметра |
Значение по умолчанию |
Пример заполнения |
Описание |
|---|---|---|---|
SSD_URL |
— |
http://127.0.0.1:28886 |
URL Platform V Works::OneWork |
TOOL_KEY |
|
Атрибут TOOL_KEY для Side Menu |
|
APP_TITLE |
Сборка для nci. Развертывание для ncd, для других TOOL_KEY берется из словаря по ключу APP_TITLE_KEY |
Заголовок приложения |
|
APP_TITLE_KEY |
|
Ключ словаря для заголовка приложения |
|
MENU_KEY |
|
Ключ пункта бокового меню, по которому инструмент определяет родительский пункт для прикрепления к нему своего меню в текущем контексте |
|
ONEWORK_ENABLED |
|
|
Флаг, определяющий режим работы Artifactory (в интеграции с Platform V Works::OneWork или без) |
Для настройки режима интеграции выполните следующие действия:
Получите значения переменных, которые выдают сотрудники сопровождения Platform V Works::OneWork.
Задайте значения переменных в файлах конфигурации переменных окружения:
Если экземпляр Artifactory запускается на виртуальной машине, переменные необходимо объявлять в файле
setenv.Если экземпляр Artifactory запускается через
docker-compose, переменные необходимо объявлять в файле.env.
Флаг интеграции с можно также задать в properties-файле, добавив строку
artifactory.onework.enabled=true
Настройка схемы БД#
Перед установкой Artifactory с нуля, удостоверьтесь в отсутствии объектов внутри базы данных:
Удалите объекты внутри базы данных:
DROP SCHEMA <схема> CASCADE;Опция CASCADE автоматически удаляет объекты, содержащиеся в указанной схеме (таблицы, функции и т. д.), и, в свою очередь, все зависящие от них объекты.
Создайте схему для Artifactory:
CREATE SCHEMA <схема>;.
Установка модуля Trigram#
Для корректной работы Artifactory требуется установка модуля pg_trgm, входящего в состав пакета postgresql-contrib.
Рассмотрим установку пакета postgresql-contrib. Для установки данного пакета пользователь PostgreSQL должен иметь права CREATE на текущей базе данных.
Для выдачи прав воспользуйтесь следующей командой:
grant create on database <имя_базы_данных> to <пользователь_базы_данных>;После предоставления прав CREATE для базы данных необходимо установить пакет
postgresql-contrib:yum install postgresql-contribЗатем создайте расширение, выполнив следующую команду. Если ваш JDBC URL не указывает схему, используйте public:
create extension pg_trgm schema <схема>;Когда установка будет завершена, созданное расширение должно отобразиться в списке:
select * from pg_extension;
Установка и запуск на ВМ#
Информацию о предварительной настройке host системы можно найти в разделах Требования к виртуальной машине и Требования к настройке окружения.
Проверка и подготовка окружения:
Проверка и обновление ОС:
cat /etc/redhat-releaseyum update.Проверка версии java и ее обновление:
yum install java-11-openjdkjava -version.Загрузка комплексного дистрибутива на хост в необходимый каталог и его распаковка:
wget --user <имя пользователя> --ask-password https://host/path-to-distrib/ARR-2.3.0-1316-distrib.zipunzip ARR-2.3.0-1316-distrib.zip.Извлечение из каталога, после распаковки комплексного дистрибутива, архива с Artifactory:
cp ./package/bh/nexus-base-template-2.3.0.zip /u01/.Распаковка архива:
sudo unzip -o -qq /u01/nexus-base-template-2.3.0.zip
Настройка (редактирование) конфигурационных файлов Artifactory:
vim /u01/nexus-base-template-2.3.0/bin/setenv, ниже представлены строчки файла, которые необходимо отредактировать:export JAVA_MIN_MEM=5G # Устанавливает минимальный объем памяти для JVM export JAVA_MAX_MEM=5G # Определяет максимальный объем памяти для JVM export JDBC_DB_URL=jdbc:postgresql://_path_to_/arr_vp # Здесь задается путь к базе данных, которая будет использоваться приложением export JDBC_DB_USER={USERNAME} # Имя пользователя, под которым происходит подключение к базе данных export JDBC_DB_PASSWORD={PASSWORD} # Пароль для подключения к базе данных под указанным пользователем export JDBC_DB_SCHEMA=arr_vp # Название схемы базы данных, к которой будет происходить подключение export JDBC_DB_ADVANCED=maximumPoolSize=100;maxLifetime=840000 # Дополнительные параметры соединения с базой данных (maximumPoolSize: Ограничивает максимальное число соединений в пуле подключений. maxLifetime: Время жизни соединения в миллисекундах перед закрытием)vim /u01/sonatype-work/nexus3/etc/nexus.properties, ниже представлены строчки файла, которые необходимо отредактировать:nexus-context-path=/nexus # Определяет путь, по которому сервис будет доступен через веб-интерфейс, http://<server_address>/nexus. Рекомендации: отредактируйте параметр, если на сервере уже используется аналогичный адрес для другого приложения nexus.scripts.allowCreation=true # Параметр разрешает создание скриптов. Рекомендуется оставить значение true, если планируется использовать скрипты для управления репозиториями или другими задачами. В противном случае, установите значение false для повышения безопасности nexus.onboarding.enabled=false # Включает или отключает процесс первоначальной настройки, который помогает новым пользователям настроить базовые параметры после установки Nexus. Рекомендации: Установите значение false, если вам не требуется помощь в начальной настройке nexus.ossindex.plugin.enabled=false # Управляет включением плагина OSS Index, который позволяет проверять зависимости на наличие уязвимостей и лицензий. Рекомендации: Оставьте значение true для включения проверки зависимостей на уязвимости. Если проверка не нужна, установите false nexus.security.randompassword=false # Указывает, следует ли генерировать случайный пароль для администратора при первом запуске. Рекомендации: При значении true, при первом старте Nexus будет создан случайный пароль, который нужно будет ввести вручную nexus.skipDefaultRepositories=true # Отключает автоматическое создание стандартных репозиториев при установке Nexus. Рекомендации: Значение true позволяет начать работу без предустановленных репозиториев. Если вам нужны стандартные репозитории, установите параметр в falsecp /u01/package/bh/plugins/*.jar /u01/nexus-base-template-2.3.0/deploy/.Создание группы, пользователя и настройка прав доступа для рабочих каталогов (выполняется под учетной записью Root):
groupadd --gid 200 -r arr- нужно изменить gid на актуальныйuseradd --uid 200 -r arr -g arr -s /bin/bash --no-create-home -d /u01/sonatype-work/nexus3- нужно изменить uid на актуальныйchown -R 200:200 /u01/nexus-base-template-2.3.0chown -R 200:200 /u01/sonatype-workln -s /u01/nexus-base-template-2.3.0 /opt/artifactorysystemctl daemon-reloadsystemctl enable artifactory.service.Запуск Artifactory (выполняется под учетной записью Root):
systemctl start artifactory.service.Ручной вариант запуска:
su - arr/u01/nexus-base-template-2.3.0/bin/nexus start- если после выполненных действий у пользователя arr недостаточно прав для запуска приложения, то проверьте выполнение команд из пункта 5./u01/nexus-base-template-2.3.0/bin/nexus stop.
Установка и запуск в Docker#
Информацию о предварительной настройке host системы можно найти в разделах Требования к среде контейнеризации.
Распакуйте архив с дистрибутивом.
Заказать или установить PostgreSQL сервер баз данных. Параметры подключения к базе данных: host, port, database, schema, username, password.
Скопировать или переименовать файл
env.templateв файл с именем.env. Заполнить файл.envданными, соотвествующими установке. В файле.envзадайте обязательные параметры:
# TOOL_KEY Одно из двух значений: nci или ncd
TOOL_KEY=<значение>
# URL базы данных
JDBC_DB_URL=jdbc:postgresql://IP:PORT/DB
# Имя пользователя базы данных
JDBC_DB_USER=user
# Пароль к базе данных
JDBC_DB_PASSWORD=pass
# Схема базы данных
JDBC_DB_SCHEMA=nexus
JDBC_DB_ADVANCED=maximumPoolSize=50;maxLifetime=840000
# Для указания альтернативного базового образа alt:p10 раскомментируйте строку ниже и укажите образ
# Примечание. Базовый образ ALT в переменной BASE_IMAGE укажите из доступного registry.
# BASE_IMAGE=alt:p10
Примечание
«TOOL_KEY» - это ключ, который используется для построения контекста бокового меню. Ключ инструмента - его уникальный идентификатор среди экземпляров всех продуктов, которые с OneWork интегрированы. В компоненте реализована логика поиска текущего контекста проекта по части URL и ключа инструмента. Содержимое объекта «проект», которое вернется в результате поиска, будет использовано для наполнения меню содержимым. В логике продуктов ключ может использоваться для следующего:
Построение контекста в UI компоненте меню.
Получение нужных данных из заголовков безопасности:
Параметр |
Описание |
|---|---|
nci |
Если проект требует более тщательного тестирования и контроля качества, то больше подойдет ci |
ncd |
Если проект требует частого и быстрого развертывания новых версий приложения, то больше подойдет cd |
Указанные ключи помогают сопоставить элементы в Platform V Works::OneWork(SSD) и в меню, которое выводится слева от самого приложения.
В файле
nexus.propertiesпоправить параметрnexus-context-pathв соответствие с желаемым контекстом (напр./,/nexusили/ssd/tools/arr-ci).Для настройки хранения BLOB-объектов на NFS сервере, а не на локальном диске, нужно раскомментировать секцию
nfs-blobsвdocker-compose.ymlв разделахvolumesи откорректировать путь до сетевой папки на NFS сервере.
...
volumes:
nexus-data: # Локальный том
# nfs-blobs: # Сетевой том на NFS сервере (/etc/exports: /u01/ARR/nexus-ci/blobs *(rw,no_subtree_check))
# driver: local # Симуляция команды mount
# driver_opts: # Опции команды mount (см. man mount (8), nfs (5), fstab (5), mount.nfs(5), exports(5), nfsmount.conf(5))
# type: nfs
# o: "addr=host_NFS_server,hard,rw,noatime,nfsvers=4.2" # nfsvers - версия nfs, noatime - отключение обновления времени обращения к файлам на nfs, hard - выводит на консоль сообщение “server not responding” при достижении таймаута и продолжает попытки монтирования
# device: ":/u01/ARR/nexus-ci/blobs" # Сетевая папка на NFS сервере
...
...
volumes:
- 'nexus-data:/nexus-data'
- '${PWD}/nexus.properties:/nexus-data/etc/nexus.properties'
# - 'nfs-blobs:/nexus-data/blobs' # Сетевой том:локальная папка монтирования
На NFS сервере необходимо создать соответствующий каталог для blobs и файл /etc/exports должен иметь соответствующую настройку, например:
/u01/ARR/nexus-ci/blobs *(rw,sync,no_root_squash,no_subtree_check)
Выполните команду сборки образа из дистрибутива:
docker-compose build --no-cacheВыполните команду запуска сервиса:
docker-compose up -dПроверьте работу сервиса по URL:
http://<server-ip>:8081/<контекст из п.3>
Список переменных, интегрированных в arr#
Описание переменных, интегрированных в образ arr:
Переменная |
По умолчанию |
Описание |
|---|---|---|
SONATYPE_DIR |
|
Каталог установки продуктов Sonatype |
NEXUS_DATA |
|
Символическая ссылка на каталог с данными |
JAVA_OPTS |
|
Параметры JAVA машины |
SSD_URL |
|
URL для подключения инструментов к SSD |
TOOL_KEY |
|
Ключ инструмента для SSD, например, nci, ncd, ntest |
MENU_KEY |
|
Ключ в меню SSD, например, dependencies, dependencies_test, deployment |
GATEWAY_URL |
Endpoint, который содержит протокол и доменное имя |
|
ONEWORK_ENABLED |
|
Флаг активации интеграции с SSD |
JDBC_DB_URL |
|
Параметры подключения к базе данных |
JDBC_DB_USER |
|
Имя пользователя базы данных |
JDBC_DB_PASSWORD |
|
Пароль пользователя базы данных |
JDBC_DB_SCHEMA |
|
Имя схемы базы данных |
JDBC_DB_ADVANCED |
|
maximumPoolSize - размер пула соединений, maxLifetime - время жизни соединения |
Список интегрированных плагинов#
В образ arr интегрированы следующие плагины:
Название git репозитория плагина |
Описание плагина |
|---|---|
ARR-NEXUS-CUSTOM-UI-PLUGIN |
- |
ARR-NEXUS-THEME-PLUGIN |
- |
ARR-NEXUS-IAM-PLUGIN |
- |
arr-nexus-nuget-plugin |
- |
arr-nexus-docker-plugin |
- |
arr-nexus-keycloak-plugin |
- |
arr-nexus-repository-npm |
- |
Конфигурационный файл ./nexus.properties#
Пример заполнения конфигурационного файла:
application-port=8081 # Определяет порт, на котором будет работать ваше приложение
application-host=0.0.0.0 # Указывает IP-адрес, на который будет привязано ваше приложение
nexus-context-path=/arr
nexus.hazelcast.discovery.isEnabled=false # Включает или отключает механизм обнаружения кластеров Hazelcast. Hazelcast — это распределенная система кеширования и вычислений, используемая для координации работы узлов в кластере. Рекомендации: Установите значение true, если вы используете кластеризацию Nexus и хотите включить автоматическое обнаружение других узлов в сети. Если кластеризация не требуется, оставьте false.
nexus.scripts.allowCreation=true
nexus.onboarding.enabled=false
nexus.ossindex.plugin.enabled=false
nexus.skipDefaultRepositories=true
nexus.security.randompassword=false
artifactory.onework.enabled=false
jdbc.db_url=jdbc:postgresql://host:port/database
jdbc.db_schema=schemaname
jdbc.db_user=username
jdbc.db_password=password
jdbc.advanced=maximumPoolSize=200;maxLifetime=840000
Конфигурационный файл ./keycloak.json#
Пример заполнения конфигурационного файла:
{
"realm": "arr",
"auth-server-url": "https://domain/auth/",
"ssl-required": "external",
"resource": "artifactory",
"verify-token-audience": true,
"credentials": {
"secret": "keycloaksecret"
},
"disable-trust-manager" : true,
"allow-any-hostname" : true,
"use-resource-role-mappings": true,
"confidential-port": 0,
"policy-enforcer": {}
}
Запуск Artifactory в Docker#
Запуск и остановка менеджера репозитория происходит автоматически при запуске и остановке docker-compose.
Ограничения файловых дескрипторов для Docker#
Artifactory использует больше файловых дескрипторов, чем количество по умолчанию для каждого пользователя, разрешенное операционной системой Linux. Исчерпание файловых дескрипторов может привести к потере данных и прочим непредвиденным результатам. Перед запуском увеличьте ограничение на количество дескрипторов открытых файлов для пользователя, постоянно работающего с Artifactory, до 65536 или выше.
Установка arr через helm-chart#
Для развертывания arr с помощью helm-chart, необходимо предварительно подготовить следующие сущности k8s:
Добавьте секрет для обеспечения возможности скачивания образов из приватного репозитория;
Создайте namespace (NS), в котором будет развертываться arr.
Для работы arr необходимо интегрировать его с СУБД PostgreSQL, поэтому необходимо создать базу данных, пользователя с правами записи в базе и схему.
После выполнения подготовительных этапов, необходимо заполнить переменные в файле package/conf/values.yaml .
Описание переменных файла values.yaml.
Переменная |
По умолчанию |
Обязательные к заполнению |
Описание |
|---|---|---|---|
|
|
+ |
Создавать манифесты Secret |
|
+ |
Список названий секретов для доступа к Docker-Registry |
|
|
|
- |
Техническое название Блока с описанием Приложения |
|
+ |
Путь к необходимому образу в Docker-Registry |
|
|
+ |
Тег для необходимого образа в Docker-Registry |
|
|
+ |
Endpoint, который содержит протокол и доменное имя |
|
|
|
+ |
Обязательно при интеграции с SSD. Ключ в меню SSD. Для ci - dependencies, cd -deployment. Для остальных случаев значение определяет администратор Platform V Works::OneWork |
|
|
- |
Обязательно при развертывании отдельным инструментом. Отключает боковое меню, которое необходимо при интеграции с Platform V Works::OneWork |
|
+ |
Обязательно при интеграции с SSD. Значение передает администратор Platform V Works::OneWork. URL для подключения инструментов к Platform V Works::OneWork |
|
|
|
+ |
Обязательно при интеграции с Platform V Works::OneWork. Значение передает администратор Platform V Works::OneWork. Ключ инструмента для Platform V Works::OneWork |
|
|
+ |
Включение configmap для плагина nexus-repository-sync-plugin |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
+ |
Включаем, когда данный репозиторий доступен в инсталляции |
|
|
- |
Включение копирования плагинов из image в отдельный volume (однократная операция, при тестах новых версий плагинов) |
|
|
- |
Volume для копирования плагинов (.volFromCustom / volFromPVC), если plugins.copyToVolume включено |
|
|
- |
Название subPath в volume |
|
|
+ |
Определение максимального объема CPU |
|
|
+ |
Определение максимального объема Memory |
|
|
+ |
Определение временного максимального объема хранилища для pod |
|
|
+ |
Определение минимально необходимого объема CPU для запуска pod |
|
|
+ |
Определение минимально необходимого объема Memory для запуска pod |
|
|
+ |
Определение временного минимального объема хранилища для pod |
|
|
+ |
Стратегия развертывания, при которой старый pod удаляется до создания нового (при обновлении / пересоздании) |
|
|
+ |
Активируем создания сервиса для приложения |
|
|
+ |
Определяем название порта для маппинга |
|
|
+ |
Открытие дополнительного сервис-порта 80, трафик с которого пойдет на порт 8081 |
|
|
+ |
Блок с параметрами дополнительного ingress-правила, которое нужно для работы с docker-registry по HTTPS, без отдельного порта |
|
|
+ |
Определение className |
|
|
+ |
Определение context_path для редиректа запроса от docker |
|
|
+ |
Определение URL host для доступа к ing приложения |
|
|
+ |
Включаем ing для приложения, если arr используется без связки с SSD |
|
|
+ |
Определение className |
|
|
+ |
Добавляем необходимые annotations. Ограничение размера тела запроса 1Гбайтом |
|
|
+ |
Определение URL host для доступа к ing приложения |
|
|
+ |
Определяем префикс после URL |
|
|
+ |
Определяем тип pathType |
|
|
+ |
Определяем на какой порт в service переводим ing |
|
|
+ |
|
|
|
+ |
|
|
|
+ |
Определение режима доступа к PVC |
|
|
+ |
Определение className для PV |
|
|
+ |
Определение директории в контейнере, к которой будет примонтирован PVC |
|
|
+ |
Определение название монтирования |
|
|
- |
Определение директории с плагинами в контейнере, к которой будет примонтирован PVC |
|
|
- |
Определение название монтирования |
|
|
+ |
Определение размера PVC |
|
«» |
+ |
Переоределение имени PVC |
|
|
+ |
Создание PVC при развертывании приложения |
|
|
+ |
Определение режима доступа к PVC |
|
|
+ |
Определение className для PV |
|
|
+ |
Определение директории в контейнере, к которой будет примонтирован PVC |
|
|
+ |
Определение название монтирования |
|
|
+ |
Определение размера PVC |
|
+ |
Переоределение имени PVC |
|
|
|
+ |
Создание PVC при развертывании приложения |
|
|
+ |
Определение директории в контейнере, к которой будет примонтирован файл в секрете |
|
|
+ |
Определение названия точки монтирования |
|
|
+ |
Определение директории в контейнере, к которой будет примонтирован файл в секрете |
|
|
+ |
Определение названия точки монтирования |
|
|
+ |
Включение YAML-манифеста с secrets |
|
|
+ |
Шаблон файла YAML-манифеста secrets |
|
|
+ |
Шаблон файла YAML-манифеста secrets |
Развертывание helm-chart приложения#
Для развертывания понадобится утилита HELM v3.10-3.14.
Задайте переменные окружения для CNAME (название helm-chart), VERS (версия helm-chart, описана в Chart.yaml), NS (name space в k8s), RNAME (название приложения, которое разворачиваем), SRC (директории, где находится helm-chart)
CNAME=sbt-ci90000318-sbtws-arr ; VERS=1.0 ; NS=nexus ; RNAME=arr SRC=helm/application/sbt-ci90000318-sbtws-arrСоздайте файл с секретными значениями
_secrets-$RNAME.yaml, например_secrets-arr.yaml.В данном примере YAML-манифест secrets содержит в себе файлnexus.propertiesиkeycloak.json(опционально)createSecrets: true secrets: enable: true fileInSecret: nexus.properties: | application-port=8081 application-host=0.0.0.0 nexus-context-path=/arr nexus.hazelcast.discovery.isEnabled=false nexus.scripts.allowCreation=true nexus.onboarding.enabled=false nexus.ossindex.plugin.enabled=false nexus.skipDefaultRepositories=true nexus.security.randompassword=false jdbc.db_url=jdbc:postgresql://host:port/database jdbc.db_schema=schemaname jdbc.db_user=username jdbc.db_password=password jdbc.advanced=maximumPoolSize=5;maxLifetime=840000 keycloak.json: | { "auth-server-url": "https://domain/auth/", "realm": "arr", "ssl-required": "external", "resource": "artifactory", "verify-token-audience": true, "credentials": { "secret": "keycloaksecret" }, "disable-trust-manager" : true, "allow-any-hostname" : true, "use-resource-role-mappings": true, "confidential-port": 0, "policy-enforcer": {} }Переименуйте/cкопируйте конфигурационный файл
package/conf/values.yamlв файл$RNAME.yaml, напримерarr.yaml(без настоящих значений секретных переменных). Далее, рендерим YAML-манифесты с указанием конфиг-файлов (основной и с секретами).helm template $RNAME $SRC -n $NS --output-dir out -f $RNAME.yaml -f _secrets-$RNAME.yamlПримените YAML-манифест с секретными данными.
kubectl apply -n $NS -f out/$CNAME/templates/secrets/Выполните развертывание приложения (без указания файла с секретами).
helm upgrade --install $RNAME $SRC -n $NS -f $RNAME.yaml
Настройка интеграции#
Ниже описана процедура интеграции с рекомендованными АО «СберТех» продуктами. На усмотрение пользователя может быть настроена интеграция с аналогичным по функциональности продуктами от других производителей — см подраздел Системные требования.
Настройка интеграции заключается в настройке параметров взаимодействия с ПО окружения, описываемой в Руководстве по установке и выполняется в процессе установки компонента.
Platform V Pangolin SE (PSQ)#
Для настройки интеграции с БД укажите значения параметров подключения к БД (JDBC_DB_URL, JDBC_DB_USER, JDBC_DB_PASSWORD, JDBC_DB_SCHEMA, JDBC_DB_ADVANCED) в файле env.template.
Platform V Works::Pipeliner#
Вследствие того, что Artifactory обрабатывает входящие запросы Pipeliner, интеграция с программным продуктом выполняется в соответствии с Руководствами по установке и использованию продукта Platform V Works::Pipeliner.