Настройка окружения#
Настройка окружения до процесса установки#
Настройка базы данных для сервисов#
Используйте утилиту createuser для создания пользователей:
createuser executors-service -P
createuser external-healthcheck-service -P
createuser models-service -P
createuser notification-service -P
createuser nsi-service -P
createuser orders-service -P
createuser scheduler -P
createuser si-service -P
createuser statistic-service -P
createuser templates-service -P
createuser remote-service -P
createuser public-api-service -P
createuser user-manager-service -P
Пароль, задаваемый пользователям, должен совпадать с аналогичным из {{ PVWTDM_DATABASE_<service-id>_PWD }} (раздел «Предварительная настройка конфигурационных файлов» документа Установка).
Используйте утилиту createdb для создания баз данных:
createdb executors-service -O executors-service
createdb external-healthcheck-service -O external-healthcheck-service
createdb models-service -O models-service
createdb notification-service -O notification-service
createdb nsi-service -O nsi-service
createdb orders-service -O orders-service
createdb scheduler -O scheduler
createdb si-service -O si-service
createdb statistic-service -O statistic-service
createdb templates-service -O templates-service
createdb remote-service -O remote-service
createdb public-api-service -O public-api-service
createdb user-manager-service -O user-manager-service
Опционально#
При использовании pg_bouncer выполните следующие действия:
Настройте pg_bouncer на режим работы Session.
Для сервиса
notification-service(если в pg_bouncer запрещена передача query param в строке подключения) выполните следующие действия:Перейдите в директорию
./package/docker/notification-serviceраспакованного дистрибутива и отредактируйте файлapplication.yml. В файле в строке подключения к БД удалите следующее:?currentSchema=${spring.flyway.schemas}.Измените роль
notification-service, выполнив следующую команду:
ALTER ROLE "notification-service" IN DATABASE "notification-service" set search_path = public, ext;
Настройка окружения в процессе установки#
Основные правила запуска Nginx#
Ниже предоставлен список правил, которые необходимо учесть при запуске Nginx:
Nginx должен быть развернут в docker контейнере с той же подсетью, что и другие сервисы, для возможности корректной работы upstream. Необходимая подсеть: pvwtdm_net.
При запуске Nginx необходимо осуществить монтирование конфигурационного файла по пути
/etc/nginx/servers/synteta.conf.В основном конфигурационном файле Nginx должны быть включены дополнительные пользовательские настройки Nginx:
include servers/*;.Пример файла nginx.conf, где данная настройка добавлена:
worker_processes 1; pid /tmp/nginx.pid; events { worker_connections 1024; } include streams/*; http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; include servers/*; <---- }
Запуск Nginx#
Перейдите в папку
packageраспакованного дистрибутива.Создайте образ
synteta-nginx, выполнив команду:docker build -t synteta-nginx:1.15.0 -f docker/synteta-nginx/Dockerfile .Запустите контейнер Nginx по HTTP:
docker run --net pvwtdm_net -d -p80:50002 -v package/docker/synteta-nginx/synteta.conf:/etc/nginx/servers/synteta.conf --name synteta-nginx synteta-nginx:1.15.0Запустите контейнера Nginx по HTTPS:
Создайте папку
sslи скопируйте в нее ключи (открытый (self-ssl.crt) и закрытый (self-ssl.key)).В папке
sslсоздайте файлssl.confи заполните его следующим содержимым:listen 443 default_server ssl; # Включаем прослушивание 443 порта для SSL ssl_certificate /etc/nginx/ssl/self-ssl.crt; # Путь до сертификаты с открытым ключом ssl_certificate_key /etc/nginx/ssl/self-ssl.key; # Путь до файла с закрытым ключомЗапустите контейнер:
docker run --net pvwtdm_net -d -p443:443 -v <Путь до папки ssl>:/etc/nginx/ssl -v package/docker/synteta-nginx/synteta.conf:/etc/nginx/servers/synteta.conf --name synteta-nginx synteta-nginx:1.15.0
Настройка KeyCloak#
Создание realm Keycloak#
При отсутствии выделенного realm для продукта TDM, создайте его по инструкции ниже. Необходимо иметь доступ административной консоли Keycloak. При отсутствии доступа обратитесь ответственному для предоставления.
Перейдите по URL
http(s)://{{ PVWTDM_HOST }}/auth/admin/master/console, где{{ PVWTDM_HOST }}— доменное имя (либо IP-адрес) стенда, где будет доступна инсталляция TDMS.
Значение переменных должно соответствовать аналогичному из раздела «Предварительная настройка конфигурационных файлов» документа Установка.
Войдите в систему с учетной записью администратора.
Наведите на наименование Master Realm и нажмите кнопку Add realm:

На открывшейся странице укажите наименование Realm, которое в дальнейшем при замене стендозависимых параметров необходимо будет подставлять в значение
<PVWTDM_KEYCLOAK_REALM>:
Нажмите кнопку Create.
Ожидаемый результат: при успешном создании Realm, система перенаправит на страницу созданного Realm:

Создание default группы#
Перейдите в раздел Groups (Клиенты) и нажмите кнопку New (Новый):

Ожидаемый результат: откроется страница с созданием групп:

Введите значение
DEFAULTв поле Name (Наименование) и нажмите кнопку Save.Ожидаемый результат: при успешном создании группы, система перенаправила на страницу созданной группы:

Создание клиента для сервисных взаимодействий#
Перейдите в раздел Clients (Клиенты) и нажмите кнопку Create (Создать):

Укажите идентификатор клиента (например: server-app) в поле Client ID и нажмите кнопку Save (Сохранить):

Данный идентификатор необходимо будет подставить в значение
<PVWTDM_KEYCLOAK_CLIENT_SERVER-APP>при замене стендозависимых параметров.Ожидаемый результат: при успешном добавлении клиента система перенаправит на страницу созданного клиента.

На форме созданного клиента во вкладке Settings заполните следующие поля:
Access Type-confidentialService Accounts Enabled-trueAuthorization Enabled-trueValid Redirect URIs-*
Нажмите кнопку Save (Сохранить):

Перейдите на вкладку Roles и нажмите кнопку Add Role (Добавить роль):

Укажите роль
SERVER_APPв поле Role Name и нажмите кнопку Save (Сохранить):
Перейдите на вкладку Mappers и нажмите кнопку Add Builtin (Добавить встроенную):

Из списка встроенных мапперов выберите
username,client rolesи нажмите кнопку Add selected (Добавить выбранные):
Отредактируйте маппер username и нажмите Edit (Редактировать):

Введите значение
usernameв поле Token Claim Name и нажмите кнопку Save (Сохранить):
Отредактируйте маппер client roles и нажмите Edit (Редактировать):

Заполните следующие поля:
Client ID- значение<PVWTDM_KEYCLOAK_CLIENT_SERVER-APP>Client Role prefix-ROLE_Token Claim Name-authoritiesAdd to ID token-trueAdd to userinfo-true
Нажмите кнопку Save (Сохранить):

Перейдите на вкладку Service Account Roles и выполните следующие действия:
Выберите идентификатор созданного клиента
<PVWTDM_KEYCLOAK_CLIENT_SERVER-APP>из выпадающего списка Client Roles.Перенесите роль
SERVER_APPиз колонки Available Roles в колонку Assigned Roles.

На вкладке Service Account Roles выполните следующие действия:
Выберите идентификатор созданного клиента
realm-managementиз выпадающего списка Client Roles.Перенесите роли
view-usersиview-groupsиз колонки Available Roles в колонку Assigned Roles.

Перейдите на вкладку Credentials и используйте содержимое поля
Secretв дальнейшей замене стендозависимых параметров. Данное значение необходимо будет подставлять в значение<PVWTDM_KEYCLOAK_SECRET_SERVER-APP>.
Создание клиента для клиент-серверного взаимодействия#
Перейдите в раздел Clients (Клиенты) и нажмите кнопку Create (Создать):

Укажите идентификатор клиента (например: synteta-web) в поле Client ID и нажмите кнопку Save (Сохранить):

Данный идентификатор необходимо будет подставить в значение
<PVWTDM_KEYCLOAK_CLIENT_SYNTETA-WEB>при замене стендозависимых параметров.На форме созданного клиента на вкладке Settings заполните следующие поля:
Access Type-publicImplicit Flow Enabled-trueValid Redirect URIs-*
Нажмите кнопку Save (Сохранить):

Перейдите на вкладку Roles и нажмите кнопку Add Role (Добавить роль):

Добавьте следующие роли (см. раздел Создание клиента для сервисных взаимодействий):
ADMINARCHITECTUSER
Перейдите на вкладку Mappers и нажмите кнопку Add Builtin (Добавить встроенную):

Из списка встроенных мапперов выберите
client rolesи нажмите кнопку Add selected (Добавить выбранные):
Отредактируйте маппер username и нажмите Edit (Редактировать):

Введите значение
usernameв поле Token Claim Name и нажмите кнопку Save (Сохранить):
Отредактируйте маппер client roles и нажмите Edit (Редактировать):

Заполните следующие поля:
Client Role prefix-ROLE_Token Claim Name-authoritiesAdd to ID token-trueAdd to userinfo-true
Нажмите кнопку Save (Сохранить):

Перейдите на вкладку Mappers и нажмите кнопку Create (Создать):

Заполните следующие поля:
Name-groups;Mapper Type-Group Membership;Token Claim Name-groups;
Нажмите кнопку Save (Сохранить):

Перейдите на вкладку Scope и выполните следующие действия:
Установите переключатель Full Scope Allowed в положение
OFF.Выберите идентификатор созданного клиента
accountиз выпадающего списка Client Roles.Перенесите роли
view-applications,view-consentиview-profileиз колонки Available Roles в колонку Assigned Roles.

Перейдите на вкладку Scope и выполните следующие действия:
Выберите идентификатор созданного клиента
realm-managementиз выпадающего списка Client Roles.Перенесите роли
view-usersиview-groupsиз колонки Available Roles в колонку Assigned Roles.

Добавление технической учетной записи (ТУЗ) для сервисного взаимодействия#
Перейдите в раздел Users (Клиенты) и нажмите кнопку Add user (Создать пользователя):

Ожидаемый результат: откроется страница создания пользователя:

Заполните следующие поля:
Username- значение пароля, которое в дальнейшем при замене стендозависимых параметров необходимо будет подставлять в значение<PVWTDM_KEYCLOAK_MANAGER_USERNAME>EmailFirst Name-authoritiesLast Name-authoritiesUser Enabled-ONEmail Verified-ONGroups- из выпадающего списка выбрать/DEFAULT
Нажмите кнопку Save (Сохранить):

Ожидаемый результат: откроется страница с созданным пользователя

Перейдите во вкладку
Credentials:
Ожидаемый результат: откроется страница по настройки учетной записи:

Установите пароль и подтвердите его в поле повторного ввода, снимите флаг
Temporaryи нажмите кнопку Set Password:
Значение пароля в дальнейшем при замене стендозависимых параметров необходимо будет подставлять в значение
<PVWTDM_KEYCLOAK_MANAGER_PASSWORD>.Перейдите во вкладку Role Mappings и выполните следующие действия:
Выберите идентификатор созданного клиента
realm-managementиз выпадающего списка Client Roles.Перенесите роли
view-usersиview-groupsиз колонки Available Roles в колонку Assigned Roles.
