Установка#

Состав дистрибутива#

Элемент дистрибутива

Описание

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

Подготовка окружения#

Настройка окружения хостов#

  1. Установите на node 3 PostgreSQL server или используйте внешний с известными параметрами подключения.

  2. Модифицируйте файл /etc/hosts на всех машинах развертывания: укажите HOST_1 под псевдонимом ssd-cloud и добавьте доменные имена серверов Kafka.

  3. Создайте keystore (JKS) с сертификатами для взаимодействия с Kafka. В случае, если для соединения с Kafka не требуются сертификаты, сгенерируйте пустой keystore.

  4. Создайте пользователя и группу для запуска сервисов (в дальнейшем они будут помещены в переменные SSD_LAUNCH_USER/SSD_LAUNCH_GROUP).

  5. Сконфигурируйте переменные среды для развертывания и запуска сервисов (см. раздел Настройка переменных среды развертывания).

  6. Сконфигурируйте системные ограничения ресурсов. Если для среды развертывания нет точного представления об ожидаемом уровне нагрузки, то во избежание возможных блокировок рекомендуется снять эти лимиты и удалить файл /etc/security/limits.d/50-defaults.conf со значениями по умолчанию.

  7. Проинициализируйте БД.

    За инициализацию БД отвечает 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 группы: параметры скриптов развертывания и конфигурации сервисов.

Параметры скриптов развертывания#

Переопределить можно только значения переменных с неподходящими значениями по-умолчанию.

Имя параметра

Значение по умолчанию

Описание

SSD_HOME_PATH

/usr/local/ssd

Корневая директория для развертывания

SSD_DEPLOYMENT_PROFILE

st

Spring-профиль для приложений

SSD_LOGS_ROOT

/var/log/ssd

Корневая директория для логов, каждый сервис будет иметь отдельную вложенную папку

SSD_APP_DEFAULT_HEAP_LIMIT_MB

Общее значение для всех приложений — 512

Максимальный размер heap, доступный сервису

SSD_LAUNCH_USER

gt_prom

Имя пользователя для запуска сервисов

SSD_LAUNCH_GROUP

gt_prom

Имя группы для запуска сервисов

SSD_APPLICATION_NAME_SUFFIX

пустая строка

Суффикс имени компонента, например, для явного обозначения среды развертывания

SSD_APPLICATION_CONFIG_SERVER_URL

http://ssd-cloud:8888

URL конфигурационного сервера

Параметры конфигурации сервисов#

Имя параметра

Описание

Настройка ssd-cloud-config

SSD_CLOUD_CONFIG_PROFILES

Список активных профилей, разделенных запятой. Возможные значения: git (конфигурация в репозитории) и native (на диске)

SSD_CLOUD_CONFIG_GIT_SOURCE_URL

Профиль git: URL репозитория с профилями

SSD_CLOUD_CONFIG_GIT_SOURCE_USERNAME

Профиль git: пользователь для авторизации

SSD_CLOUD_CONFIG_GIT_SOURCE_PASS

Профиль git: пароль для авторизации

SSD_CLOUD_CONFIG_GIT_SOURCE_BRANCH

Профиль git: целевая ветка репозитория

SSD_CLOUD_CONFIG_GIT_SOURCE_SEARCH_PATH

Профиль git: путь к корню поиска конфигураций в репозитории

SSD_CLOUD_CONFIG_NATIVE_SEARCH_PATH

Профиль native: путь к корню для поиска конфигураций компонентов в файловой системе.

Интеграция с БД (PostgreSQL/Pangolin)

SSD_DB_HOST

Адрес (имя) хоста, на котором развернута БД

SSD_DB_PORT

Порт для подключения к БД (по умолчанию 5432)

SSD_DB_NAME

Имя БД (по умолчанию ssd)

SSD_DB_USER

Пользователь для подключения к БД (по умолчанию ssd)

SSD_DB_PASSWORD

Пароль для подключения к БД (по умолчанию ssd)

Интеграция с брокером сообщений (Kafka/Corax)

SSD_KAFKA_BOOTSTRAP_SERVERS

Список хостов, разделенных запятыми, описывающий внешние серверы-брокеры.
Каждый элемент списка указывается по шаблону <хост>:<порт>

SSD_KAFKA_GATEWAY_KAFKA_SERVERS

Список серверов-брокеров Kafka шлюза SSD (формат аналогичен SSD_KAFKA_BOOTSTRAP_SERVERS)

SSD_KAFKA_TRUSTSTORE_LOCATION

Путь до keystore для взаимодействия с Kafka (по умолчанию /usr/local/ssd/security/kafka.jks)

SSD_KAFKA_TRUSTSTORE_PASS

Пароль от keystore

SSD_KAFKA_INTERNAL_TOPIC_SA_INPUT

Имя «входного» топика для сервис-адаптеров

SSD_KAFKA_INTERNAL_TOPIC_SA_OUTPUT

Имя «выходного» топика с результатами обработки операций сервис-адаптерами

SSD_KAFKA_INTERNAL_TOPIC_RM_INPUT

Имя «входного» топика для взаимодействия с роль-менеджером

SSD_KAFKA_INTERNAL_TOPIC_RM_EVENTS

Имя «выходного» топика роль-менеджера, содержащего сообщения, связанные с выполнением им различных операций

Интеграция с IAM (Keycloak)

SSD_ROLE_MANAGER_KC_URL

URL для доступа в Keycloak в формате <protocol>://<host>:<port>/auth

SSD_ROLE_MANAGER_KC_REALM

Имя области в Keycloak

SSD_ROLE_MANAGER_KC_USER

Пользователь для доступа в Keycloak (аутентификация в режиме password)

SSD_ROLE_MANAGER_KC_CLIENT_ID

Идентификатор сервиса-клиента для доступа в Keycloak (аутентификация в режиме client_credentials)

SSD_ROLE_MANAGER_KC_SECRET

Секрет для доступа в Keycloak

Секция общих настроек

SSD_CLOUD_SERVICE_HOST

Адрес (имя) хоста, на котором развернута cloud часть сервисов (все за исключением адаптеров)

SSD_SERVICE_HOST

Адрес (имя) хоста, на котором развернута сервисная часть (адаптеры, транзакционный менеджер, core)

SSD_CLOUD_GATEWAY_ROOT_URL

Корневой URL шлюза компонентов SSD в формате <protocol>://<host>:<port>

Настройки адаптеров

SSD_SA_GITLAB_URL

Корневой URL инструмента Gitlab в формате <protocol>://<host>:<port>

SSD_SA_GITLAB_ACCESS_TOKEN

Токен доступа для взаимодействия с Gitlab

SSD_SA_JENKINS_CD_URL

Корневой URL инструмента Jenkins CD в формате <protocol>://<host>:<port>/jenkins-cd/

SSD_SA_JENKINS_CD_LOGIN

Логин для Jenkins CD

SSD_SA_JENKINS_CD_ACCESS_TOKEN

Токен доступа для Jenkins CD

SSD_SA_JENKINS_CI_URL

Корневой URL инструмента Jenkins CI в формате <protocol>://<host>:<port>/jenkins-ci/

SSD_SA_JENKINS_CI_LOGIN

Логин для Jenkins CI

SSD_SA_JENKINS_CI_ACCESS_TOKEN

Токен доступа для Jenkins CI

SSD_SA_MOCK_BASE_URL

Корневой URL инструмента SberMock в формате <protocol>://<host>:<port>/

SSD_SA_MOCK_TOKEN_URL

Endpoint для генерации OAuth токенов <protocol>://<host>:<port>/api/oauth/token

SSD_SA_MOCK_LOGIN

Логин для SberMock

SSD_SA_MOCK_PASSWORD

Пароль для SberMock

SSD_SA_SONAR_URL

Корневой URL инструмента SonarQube в формате <protocol>://<host>:<port>/sonar/

SSD_SA_SONAR_LOGIN

Логин для SonarQube

SSD_SA_SONAR_PASSWORD

Пароль для SonarQube

SSD_SA_NEXUS_CI_URL

Корневой URL инструмента Nexus CI

SSD_SA_NEXUS_CI_LOGIN

Логин для Nexus CI

SSD_SA_NEXUS_CI_PASSWORD

Пароль для Nexus CI

SSD_SA_NEXUS_CD_URL

Корневой URL инструмента Nexus CD

SSD_SA_NEXUS_CD_LOGIN

Логин для Nexus CD

SSD_SA_NEXUS_CD_PASSWORD

Пароль для Nexus CD

SSD_SA_FOSE_BASE_URL

Корневой URL API инструмента DependencyTrack в формате <protocol>://<host>:<port>/

SSD_SA_FOSE_ENDPOINT_URL

Корневой URL портала инструмента DependencyTrack в формате <protocol>://<host>:<port>/ для построения полного URL-проекта

SSD_SA_FOSE_TOKEN

Токен доступа для взаимодействия с DependencyTrack

SSD_SA_FOSE_NESTING_LEVEL

Уровень вложенности при создании проекта (целое число, по умолчанию - 4)

SSD_SA_DPM_BASE_URL

Корневой URL портала инструмента DPM в формате <protocol>://<host>:<port>/dpm/ для построения полного URL-проекта

SSD_SA_DPM_LOGIN

Логин для DPM

SSD_SA_DPM_TOKEN

Токен доступа для взаимодействия с DPM

SSD_ADAPTER_VIEW_ENDPOINT_URL

Корневой URL API инструмента ViewWork в формате <protocol>://<host>:<port>/devopsmon/app/dashboards

SSD_ADAPTER_PACT_BASE_URL

Корневой URL API инструмента PactWork в формате <protocol>://<host>:<port>/pact

SSD_ADAPTER_PACT_TOKEN

Токен доступа для взаимодействия с PactWork

SSD_ADAPTER_PACT_DB_URL

URL сервера БД, в котором происходит создание баз для проектной области PactWork

SSD_ADAPTER_PACT_DB_USER

Имя пользователя, используемого при создании БД проектной области PactWork

SSD_ADAPTER_PACT_DB_PASS

Пароль пользователя, используемого при создании БД проектной области PactWork

Настройка nginx

SSD_UI_ENTRYPOINT_URL

Целевой URL для дописывания заголовков в прокси-сервисе в формате <protocol>://<host>:<port>

SSD_NGINX_SERVER_NAME

FQDN хоста, на котором разворачивается nginx

SSD_KC_UI_AUTH_ENABLED

Флаг, определяющий активирована ли авторизация через Keycloak для доступа в UI (1 - активировать, 0 - не активировать)

SSD_KC_UI_AUTH_REALM_NAME

Имя realm, с помощью которого происходит авторизация

SSD_STANDALONE_MODE_KEYCLOAK

Адрес или FQDN сервера Keycloak

Выбор способа установки#

В данной версии OneWork установка происходит в ручном режиме с использованием скриптов автоматизации, входящих в состав дистрибутива.

Ручная установка сервиса#

  1. Настройте среду для развертывания OneWork согласно разделу Подготовка окружения.

  2. Скачайте и распакуйте дистрибутив целевой версии OneWork на все хосты.

  3. Настройте переменные среды развертывания. Значения, определенные при подготовке окружения (см. раздел Подготовка параметров конфигурации среды развертывания), необходимо перенести в файл package/conf/deployment/ssd_deployment_env. Значения из этого файла передаются в среду исполнения скриптов развертывания и скрипта-обертки запуска сервисов start.sh с помощью команды source.

  4. На каждом из хостов запустите сервисы с помощью скрипта автоматизации развертывания. В качестве аргументов скрипт принимает:

    • имя среды (назначение) конкретного хоста:

      • INFRA - на сервере core-компонентов;

      • SERVICE - на сервере адаптеров;

      • ALL (по умолчанию, если значение не указано) - все сервисы запустятся на единственной машине.

    • абсолютный путь до keystore с сертификатами для взаимодействия с Kafka.

    Обратите внимание
    Запуск скрипта необходимо производить от имени пользователя, который обладает root-правами.

    bash /\<unpack-dir\>/package/bh/shell/deploy-standalone.sh INFRA  # нода 1
    
    bash /\<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

    При возникновении критических ошибок в процессе развертывания соответствующее сообщение будет выведено на экран, и процесс прервется.

  5. Для корректного функционирования UI заполните следующие свойства, воспользовавшись сервисом ssd-ui-admin.

    Имя параметра

    Описание

    Пример

    app.host.url

    URL UI SSD с протоколом

    http://${HOST_1}:3000

    app.core-data.version

    версия серверной части SSD

    2

    app.core-data-v2.url

    URL сервиса ssd-core-data с протоколом

    http://${\HOST_1}:28888

    Выполните POST запрос к endpoint ${HOST_1}:28886/v2/properties/{key}, в теле запроса текстом передайте значение параметра. Можно воспользоваться Swagger UI сервиса: ${HOST_1}:28886/swagger-ui/index.html.

  6. После окончания установки можно переходить к проверке работоспособности OneWork.