Установка#
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
bh/ssd-cloud-config-${VERSION}.jar |
Сервис централизованного управления настройками компонентов OneWork |
bh/ssd-cloud-admin-${VERSION}.jar |
Сервис мониторинга компонентов OneWork |
bh/ssd-cloud-discovery-${VERSION}.jar |
Сервис регистрации компонентов OneWork |
bh/ssd-cloud-gateway-${VERSION}.jar |
Сервис единого доступа к компонентам OneWork по имени |
bh/ssd-core-data-${VERSION}.jar |
Компонент, отвечающий за хранение информации об инструментах, проектах и их связях |
bh/ssd-role-manager-${VERSION}.jar |
Компонент, отвечающий за ролевую модель |
bh/ssd-transaction-manager-${VERSION}.jar |
Менеджер транзакций |
bh/ssd-ui-admin-${VERSION}.jar |
Компонент, предоставляющий вспомогательные endpoints для задач UI и проверок работоспособности |
bh/ssd-adapter-dpm-${VERSION}.jar |
Адаптер инструмента PipeWork |
bh/ssd-adapter-fose-${VERSION}.jar |
Адаптер инструмента FoseWork |
bh/ssd-adapter-gitlab-${VERSION}.jar |
Адаптер инструмента TrackWork |
bh/ssd-adapter-jenkins-cd-${VERSION}.jar |
Адаптер инструмента CIWork |
bh/ssd-adapter-jenkins-ci-${VERSION}.jar |
Адаптер инструмента CDWork |
bh/ssd-adapter-nexus-cd-${VERSION}.jar |
Адаптер инструмента CodeWorkCI |
bh/ssd-adapter-nexus-ci-${VERSION}.jar |
Адаптер инструмента CodeWorkCD |
bh/ssd-adapter-pact-${VERSION}.jar |
Адаптер инструмента PactWork |
bh/ssd-adapter-sbermock-${VERSION}.jar |
Адаптер инструмента MockWork |
bh/ssd-adapter-sonar-${VERSION}.jar |
Адаптер инструмента SonarWork |
bh/ssd-adapter-view-${VERSION}.jar |
Адаптер инструмента ViewWork |
bh/shell/distribution-standalone.sh |
Скрипт автоматизации процесса установки |
bh/shell/link-jars.sh |
Скрипт создания символьных ссылок на JAR-файлы (используется в рамках скрипта автоматизации развертывания) |
bh/shell/install-units.sh |
Скрипт создания и настройки systemd-units (используется в рамках скрипта автоматизации развертывания) |
bh/shell/start.sh |
Скрипт-обертка, используемый в systemd-units для запуска JAR-компонентов |
bh/shell/update-service.sh |
Скрипт для обновления отдельного JAR-компонента |
bh/shell/delete-deployment.sh |
Скрипт удаления развертывания |
conf/config/*/<имя_компонента>/<имя_компонента>.service |
Шаблон systemd-unit запуска компонента |
conf/config/*/<имя_компонента>/application.yml |
Конфигурация запуска компонента |
conf/deployment/ssd_deployment_env |
Шаблон файла централизованной настройки параметров развертывания для компонентов OneWork |
conf/nginx/conf/nginx.conf |
Файл конфигурации nginx для обслуживания веб-запросов |
db/init/*-dbinit-${VERSION}-distrib.zip |
Архив со скриптами инициализации БД |
pl/ssd-ui-static.zip |
Архив, содержащий файлы статики UI |
Подготовка окружения#
Настройка окружения хостов#
Установите на node 3 PostgreSQL server или используйте внешний с известными параметрами подключения.
Модифицируйте файл /etc/hosts на всех машинах развертывания: укажите
HOST_1под псевдонимомssd-cloudи добавьте доменные имена серверов Kafka.Создайте keystore (JKS) с сертификатами для взаимодействия с Kafka. В случае, если для соединения с Kafka не требуются сертификаты, сгенерируйте пустой keystore.
Создайте пользователя и группу для запуска сервисов (в дальнейшем они будут помещены в переменные
SSD_LAUNCH_USER/SSD_LAUNCH_GROUP).Сконфигурируйте переменные среды для развертывания и запуска сервисов (см. раздел Настройка переменных среды развертывания).
Сконфигурируйте системные ограничения ресурсов. Если для среды развертывания нет точного представления об ожидаемом уровне нагрузки, то во избежание возможных блокировок рекомендуется снять эти лимиты и удалить файл
/etc/security/limits.d/50-defaults.confсо значениями по умолчанию.Проинициализируйте БД.
За инициализацию БД отвечает
ssd-transaction-manager, который запускается первым среди core-компонентов SSD.
С помощью Liquibase имеющаяся структура БД проверяется на соответствие требуемой схеме данных.В случае необходимости предварительной настройки схемы данных можно использовать SQL-скрипты в формате Liquibase, расположенные в архиве в дистрибутиве по пути:
package/db/init/*-dbinit-<version>-distrib.zip.
Настройка компонента ssd-cloud-config#
Компонент ssd-cloud-config, который построен на базе Spring Cloud Config, является единой точкой входа для конфигурирования компонентов OneWork.
В качестве источников конфигураций компонентов, обращающихся к ssd-cloud-config могут выступать:
Git-репозиторий (профиль git)
Данный профиль настраивается с помощью параметров группы
SSD_CLOUD_CONFIG_GIT_*. В этом режиме поиск осуществляется в ветке репозитория. При поиске ожидается конфигурационный файл, именованный по шаблону <имя_компонента>-<профиль>.yml.Файловая система хостовой машины, на которой развернут
ssd-cloud-config(профиль native)С помощью параметра
SSD_CLOUD_CONFIG_NATIVE_SEARCH_PATHнастраивается корень для поиска конфигурационных файлов. Соглашение об именовании аналогично профилю git.
Профиль git имеет более высокий приоритет. Используя переменную SSD_CLOUD_CONFIG_PROFILES, можно выборочно активировать профили.
Подготовка параметров конфигурации среды развертывания#
Конфигурационные файлы Spring с расширением .yml позволяют определять значения с использованием переменных среды.
В OneWork в качестве источника значений переменных используется единый файл ssd_deployment_env.
Все параметры делятся на 2 группы: параметры скриптов развертывания и конфигурации сервисов.
Параметры скриптов развертывания#
Переопределить можно только значения переменных с неподходящими значениями по-умолчанию.
Имя параметра |
Значение по умолчанию |
Описание |
|---|---|---|
|
|
Корневая директория для развертывания |
|
|
Spring-профиль для приложений |
|
|
Корневая директория для логов, каждый сервис будет иметь отдельную вложенную папку |
|
Общее значение для всех приложений — |
Максимальный размер heap, доступный сервису |
|
|
Имя пользователя для запуска сервисов |
|
|
Имя группы для запуска сервисов |
|
пустая строка |
Суффикс имени компонента, например, для явного обозначения среды развертывания |
|
|
URL конфигурационного сервера |
Параметры конфигурации сервисов#
Имя параметра |
Описание |
|---|---|
Настройка ssd-cloud-config |
|
|
Список активных профилей, разделенных запятой. Возможные значения: |
|
Профиль |
|
Профиль |
|
Профиль |
|
Профиль |
|
Профиль |
|
Профиль |
Интеграция с БД (PostgreSQL/Pangolin) |
|
|
Адрес (имя) хоста, на котором развернута БД |
|
Порт для подключения к БД (по умолчанию |
|
Имя БД (по умолчанию |
|
Пользователь для подключения к БД (по умолчанию |
|
Пароль для подключения к БД (по умолчанию |
Интеграция с брокером сообщений (Kafka/Corax) |
|
|
Список хостов, разделенных запятыми, описывающий внешние серверы-брокеры. |
|
Список серверов-брокеров Kafka шлюза SSD (формат аналогичен |
|
Путь до keystore для взаимодействия с Kafka (по умолчанию /usr/local/ssd/security/kafka.jks) |
|
Пароль от keystore |
|
Имя «входного» топика для сервис-адаптеров |
|
Имя «выходного» топика с результатами обработки операций сервис-адаптерами |
|
Имя «входного» топика для взаимодействия с роль-менеджером |
|
Имя «выходного» топика роль-менеджера, содержащего сообщения, связанные с выполнением им различных операций |
Интеграция с IAM (Keycloak) |
|
|
URL для доступа в Keycloak в формате <protocol>://<host>:<port>/auth |
|
Имя области в Keycloak |
|
Пользователь для доступа в Keycloak (аутентификация в режиме |
|
Идентификатор сервиса-клиента для доступа в Keycloak (аутентификация в режиме |
|
Секрет для доступа в Keycloak |
Секция общих настроек |
|
|
Адрес (имя) хоста, на котором развернута cloud часть сервисов (все за исключением адаптеров) |
|
Адрес (имя) хоста, на котором развернута сервисная часть (адаптеры, транзакционный менеджер, core) |
|
Корневой URL шлюза компонентов SSD в формате <protocol>://<host>:<port> |
Настройки адаптеров |
|
|
Корневой URL инструмента Gitlab в формате <protocol>://<host>:<port> |
|
Токен доступа для взаимодействия с Gitlab |
|
Корневой URL инструмента Jenkins CD в формате <protocol>://<host>:<port>/jenkins-cd/ |
|
Логин для Jenkins CD |
|
Токен доступа для Jenkins CD |
|
Корневой URL инструмента Jenkins CI в формате <protocol>://<host>:<port>/jenkins-ci/ |
|
Логин для Jenkins CI |
|
Токен доступа для Jenkins CI |
|
Корневой URL инструмента SberMock в формате <protocol>://<host>:<port>/ |
|
Endpoint для генерации OAuth токенов <protocol>://<host>:<port>/api/oauth/token |
|
Логин для SberMock |
|
Пароль для SberMock |
|
Корневой URL инструмента SonarQube в формате <protocol>://<host>:<port>/sonar/ |
|
Логин для SonarQube |
|
Пароль для SonarQube |
|
Корневой URL инструмента Nexus CI |
|
Логин для Nexus CI |
|
Пароль для Nexus CI |
|
Корневой URL инструмента Nexus CD |
|
Логин для Nexus CD |
|
Пароль для Nexus CD |
|
Корневой URL API инструмента DependencyTrack в формате <protocol>://<host>:<port>/ |
|
Корневой URL портала инструмента DependencyTrack в формате <protocol>://<host>:<port>/ для построения полного URL-проекта |
|
Токен доступа для взаимодействия с DependencyTrack |
|
Уровень вложенности при создании проекта (целое число, по умолчанию - 4) |
|
Корневой URL портала инструмента DPM в формате <protocol>://<host>:<port>/dpm/ для построения полного URL-проекта |
|
Логин для DPM |
|
Токен доступа для взаимодействия с DPM |
|
Корневой URL API инструмента ViewWork в формате <protocol>://<host>:<port>/devopsmon/app/dashboards |
|
Корневой URL API инструмента PactWork в формате <protocol>://<host>:<port>/pact |
|
Токен доступа для взаимодействия с PactWork |
|
URL сервера БД, в котором происходит создание баз для проектной области PactWork |
|
Имя пользователя, используемого при создании БД проектной области PactWork |
|
Пароль пользователя, используемого при создании БД проектной области PactWork |
Настройка nginx |
|
|
Целевой URL для дописывания заголовков в прокси-сервисе в формате <protocol>://<host>:<port> |
|
FQDN хоста, на котором разворачивается nginx |
|
Флаг, определяющий активирована ли авторизация через Keycloak для доступа в UI (1 - активировать, 0 - не активировать) |
|
Имя realm, с помощью которого происходит авторизация |
|
Адрес или FQDN сервера Keycloak |
Выбор способа установки#
В данной версии OneWork установка происходит в ручном режиме с использованием скриптов автоматизации, входящих в состав дистрибутива.
Ручная установка сервиса#
Настройте среду для развертывания OneWork согласно разделу Подготовка окружения.
Скачайте и распакуйте дистрибутив целевой версии OneWork на все хосты.
Настройте переменные среды развертывания. Значения, определенные при подготовке окружения (см. раздел Подготовка параметров конфигурации среды развертывания), необходимо перенести в файл
package/conf/deployment/ssd_deployment_env. Значения из этого файла передаются в среду исполнения скриптов развертывания и скрипта-обертки запуска сервисовstart.shс помощью команды source.На каждом из хостов запустите сервисы с помощью скрипта автоматизации развертывания. В качестве аргументов скрипт принимает:
имя среды (назначение) конкретного хоста:
INFRA- на сервере core-компонентов;SERVICE- на сервере адаптеров;ALL(по умолчанию, если значение не указано) - все сервисы запустятся на единственной машине.
абсолютный путь до keystore с сертификатами для взаимодействия с Kafka.
Обратите внимание
Запуск скрипта необходимо производить от имени пользователя, который обладает root-правами.bash /\<unpack-dir\>/package/bh/shell/deploy-standalone.sh INFRA # нода 1bash /\<unpack-dir\>/package/bh/shell/deploy-standalone.sh SERVICE /tmp/kafka.jks # нода 2Скрипт автоматизирует следующие действия:
создание корневой директории развертывания;
создание папок для логирования активности сервисов;
перенос в корень развертывания:
конфигураций сервисов
исполняемых JAR-файлов
shell-скриптов: обертки запуска сервисов
start.shи скрипта удаления развертыванияdelete-deployment.sh
перенос конфигурации и распаковку статического контента UI в директорию nginx (
/etc/nginx).перенос Kafka кейстора в сконфигурированное местоположение
создание символьных ссылок на
systemdюниты в/etc/systemd/systemи запуск сервисов черезsystemctl
При возникновении критических ошибок в процессе развертывания соответствующее сообщение будет выведено на экран, и процесс прервется.
Для корректного функционирования UI заполните следующие свойства, воспользовавшись сервисом
ssd-ui-admin.Имя параметра
Описание
Пример
app.host.urlURL UI SSD с протоколом
http://${HOST_1}:3000
app.core-data.versionверсия серверной части SSD
2app.core-data-v2.urlURL сервиса
ssd-core-dataс протоколомhttp://${\HOST_1}:28888
Выполните
POSTзапрос к endpoint${HOST_1}:28886/v2/properties/{key}, в теле запроса текстом передайте значение параметра. Можно воспользоваться Swagger UI сервиса:${HOST_1}:28886/swagger-ui/index.html.После окончания установки можно переходить к проверке работоспособности OneWork.