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

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

Настройка базы данных для сервисов#

Используйте утилиту 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 выполните следующие действия:

  1. Настройте pg_bouncer на режим работы Session.

  2. Для сервиса notification-service (если в pg_bouncer запрещена передача query param в строке подключения) выполните следующие действия:

    1. Перейдите в директорию ./package/docker/notification-service распакованного дистрибутива и отредактируйте файл application.yml. В файле в строке подключения к БД удалите следующее: ?currentSchema=${spring.flyway.schemas}.

    2. Измените роль 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#

  1. Перейдите в папку package распакованного дистрибутива.

  2. Создайте образ synteta-nginx, выполнив команду:

    docker build -t synteta-nginx:1.15.0 -f docker/synteta-nginx/Dockerfile .
    
  3. Запустите контейнер 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
    
  4. Запустите контейнера Nginx по HTTPS:

    1. Создайте папку ssl и скопируйте в нее ключи (открытый (self-ssl.crt) и закрытый (self-ssl.key)).

    2. В папке 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;  # Путь до файла с закрытым ключом
      
    3. Запустите контейнер:

      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. При отсутствии доступа обратитесь ответственному для предоставления.

  1. Перейдите по URL http(s)://{{ PVWTDM_HOST }}/auth/admin/master/console, где

    • {{ PVWTDM_HOST }} — доменное имя (либо IP-адрес) стенда, где будет доступна инсталляция TDMS.

    Значение переменных должно соответствовать аналогичному из раздела «Предварительная настройка конфигурационных файлов» документа Установка.

  2. Войдите в систему с учетной записью администратора.

  3. Наведите на наименование Master Realm и нажмите кнопку Add realm:

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

  5. Нажмите кнопку Create.

    Ожидаемый результат: при успешном создании Realm, система перенаправит на страницу созданного Realm:

Создание default группы#

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

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

  2. Введите значение DEFAULT в поле Name (Наименование) и нажмите кнопку Save.

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

Создание клиента для сервисных взаимодействий#

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

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

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

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

  3. На форме созданного клиента во вкладке Settings заполните следующие поля:

    • Access Type - confidential

    • Service Accounts Enabled - true

    • Authorization Enabled - true

    • Valid Redirect URIs - *

  4. Нажмите кнопку Save (Сохранить):

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

  6. Укажите роль SERVER_APP в поле Role Name и нажмите кнопку Save (Сохранить):

  7. Перейдите на вкладку Mappers и нажмите кнопку Add Builtin (Добавить встроенную):

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

  9. Отредактируйте маппер username и нажмите Edit (Редактировать):

  10. Введите значение username в поле Token Claim Name и нажмите кнопку Save (Сохранить):

  11. Отредактируйте маппер client roles и нажмите Edit (Редактировать):

  12. Заполните следующие поля:

    • Client ID - значение <PVWTDM_KEYCLOAK_CLIENT_SERVER-APP>

    • Client Role prefix - ROLE_

    • Token Claim Name - authorities

    • Add to ID token - true

    • Add to userinfo - true

  13. Нажмите кнопку Save (Сохранить):

  14. Перейдите на вкладку Service Account Roles и выполните следующие действия:

    1. Выберите идентификатор созданного клиента <PVWTDM_KEYCLOAK_CLIENT_SERVER-APP> из выпадающего списка Client Roles.

    2. Перенесите роль SERVER_APP из колонки Available Roles в колонку Assigned Roles.

  15. На вкладке Service Account Roles выполните следующие действия:

    1. Выберите идентификатор созданного клиента realm-management из выпадающего списка Client Roles.

    2. Перенесите роли view-users и view-groups из колонки Available Roles в колонку Assigned Roles.

  16. Перейдите на вкладку Credentials и используйте содержимое поля Secret в дальнейшей замене стендозависимых параметров. Данное значение необходимо будет подставлять в значение <PVWTDM_KEYCLOAK_SECRET_SERVER-APP>.

Создание клиента для клиент-серверного взаимодействия#

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

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

    Данный идентификатор необходимо будет подставить в значение <PVWTDM_KEYCLOAK_CLIENT_SYNTETA-WEB> при замене стендозависимых параметров.

  3. На форме созданного клиента на вкладке Settings заполните следующие поля:

    • Access Type - public

    • Implicit Flow Enabled - true

    • Valid Redirect URIs - *

  4. Нажмите кнопку Save (Сохранить):

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

  6. Добавьте следующие роли (см. раздел Создание клиента для сервисных взаимодействий):

    • ADMIN

    • ARCHITECT

    • USER

  7. Перейдите на вкладку Mappers и нажмите кнопку Add Builtin (Добавить встроенную):

  8. Из списка встроенных мапперов выберите client roles и нажмите кнопку Add selected (Добавить выбранные):

  9. Отредактируйте маппер username и нажмите Edit (Редактировать):

  10. Введите значение username в поле Token Claim Name и нажмите кнопку Save (Сохранить):

  11. Отредактируйте маппер client roles и нажмите Edit (Редактировать):

  12. Заполните следующие поля:

    • Client Role prefix - ROLE_

    • Token Claim Name - authorities

    • Add to ID token - true

    • Add to userinfo - true

  13. Нажмите кнопку Save (Сохранить):

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

  15. Заполните следующие поля:

    • Name - groups;

    • Mapper Type - Group Membership;

    • Token Claim Name - groups;

  16. Нажмите кнопку Save (Сохранить):

  17. Перейдите на вкладку Scope и выполните следующие действия:

    1. Установите переключатель Full Scope Allowed в положение OFF.

    2. Выберите идентификатор созданного клиента account из выпадающего списка Client Roles.

    3. Перенесите роли view-applications, view-consent и view-profile из колонки Available Roles в колонку Assigned Roles.

  18. Перейдите на вкладку Scope и выполните следующие действия:

    1. Выберите идентификатор созданного клиента realm-management из выпадающего списка Client Roles.

    2. Перенесите роли view-users и view-groups из колонки Available Roles в колонку Assigned Roles.

Добавление технической учетной записи (ТУЗ) для сервисного взаимодействия#

  1. Перейдите в раздел Users (Клиенты) и нажмите кнопку Add user (Создать пользователя):

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

  2. Заполните следующие поля:

    • Username - значение пароля, которое в дальнейшем при замене стендозависимых параметров необходимо будет подставлять в значение <PVWTDM_KEYCLOAK_MANAGER_USERNAME>

    • Email

    • First Name - authorities

    • Last Name - authorities

    • User Enabled - ON

    • Email Verified - ON

    • Groups - из выпадающего списка выбрать /DEFAULT

  3. Нажмите кнопку Save (Сохранить):

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

  4. Перейдите во вкладку Credentials:

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

  5. Установите пароль и подтвердите его в поле повторного ввода, снимите флаг Temporary и нажмите кнопку Set Password:

    Значение пароля в дальнейшем при замене стендозависимых параметров необходимо будет подставлять в значение <PVWTDM_KEYCLOAK_MANAGER_PASSWORD>.

  6. Перейдите во вкладку Role Mappings и выполните следующие действия:

    1. Выберите идентификатор созданного клиента realm-management из выпадающего списка Client Roles.

    2. Перенесите роли view-users и view-groups из колонки Available Roles в колонку Assigned Roles.