Инструкция по установке
Предварительные условия
-
Установленный и настроенный кластер Kubernetes
-
Настроенный Nexus Repository (или иное хранилище артефактов)
-
Keycloak (или MDP) для авторизации
-
Брокер сообщений Kafka
-
СУБД PostgreSQL/Oracle
-
Git
Подготовка баз данных
Перед установкой необходимо выполнить job для создания следующих образов базы данных:
-
database-qpuidesigner - БД бэкенд-сервиса
-
database-qpuideipbpm - БД сервиса исполнения бизнес-процессов
-
database-qpuidtheme - БД микросервиса Дизайнер тем
Настройка конфигурации сервисов
Пример настроек общих параметров - независимо от авторизации:
KAFKA_HOST: 'kafka'
KAFKA_PORT: '9092'
KAFKA_URL: 'kafka:9092'
CHANNEL_PREFIX: 'topicPrefix-'
DB_TEST_QUERY: 'select 1'
JPA_DIALECT: 'org.hibernate.dialect.PostgreSQLDialect'
SERVICE_PORT: '8080'
QSAVER_HOST: ''
QSAVER_URL: ''
QSAVER_PORT: ''Пользовательский интерфейс "Дизайнера пользовательского интерфейса" - qdesignerui, UI-сервис (Angular.JS)
Назначение: обеспечение взаимодействия пользователя с приложением при проектировании и публикации веб-приложений
- Образ
registry-ext.diasoft.ru/release/qdesignerui:26031201Бизнес-логика "Дизайнера пользовательского интерфейса" - qpuidesigner, Java-сервис
Назначение: хранение и обработка сущностей приложения и интеграция с другими микросервисами
- Образ
registry-ext.diasoft.ru/release/qpuidesigner:26031601
registry-ext.diasoft.ru/release/database-qpuidesigner:26031601- Конфигурация
ALLOW_ALL_FOR_DEBUG: 'false'
ARCHERENVIRONMENT: 'false'
AUTH_PROVIDER: digitalq
AUTH_SERVER_CONTEXT: mdpauth
AUTH_SERVER_URL: http://mdpauth:8080
CHAOS_MONKEY_ENABLED: 'false'
CM_WATCHER_COMPONENT_ENABLED: 'false'
CM_WATCHER_CONTROLLER_ENABLED: 'false'
CM_WATCHER_REPOSITORY_ENABLED: 'false'
CM_WATCHER_REST_CONTROLLER_ENABLED: 'true'
CM_WATCHER_SERVICE_ENABLED: 'true'
CONFELEMENT_KIND: '2'
DB_TEST_QUERY: SELECT 1
DEFAULT_BINDER: kafka
EMPLOYEE_FIELD: empl_code //
FEIGN_CLIENT_CONNECT_TIMEOUT: '300000'
FEIGN_CLIENT_READ_TIMEOUT: '300000'
GENERATE_DDL: 'false'
HIKARI_CONNECTION_TIMEOUT: '30000'
HIKARI_IDLE_TIMEOUT: '600000'
HIKARI_MAXIMUM_POOLSIZE: '10'
HIKARI_MAX_LIFETIME: '1800000'
HIKARI_MINIMUM_IDLE: '10'
JAVA_XMS: 512m
JAVA_XMX: 1600m
JPA_DIALECT: org.hibernate.dialect.OracleDialect
KAFKA_HOST: qkafka
KAFKA_PORT: '9092'
KAFKA_URL: qkafka:9092
KUBERNETES_LEGACY_MOD: 'true'
LICENSE_URL: classpath:license.xml
LIQUIBASE_ENABLED: 'false'
MIN_PARTITION_COUNT: '10'
QOAUTH_MODE: mdpauth
REST_TEMPLATE_CONNECT_TIMEOUT: '300000'
REST_TEMPLATE_READ_TIMEOUT: '300000'
RIBBON_REFRESH_INTERVAL: '10000'
SECURITY_ENABLED: 'false'
SERVICE_NAME: qpuidesigner
SERVICE_PORT: '8080'
SHOW_SQL: 'true'| Параметр | Описание | Возможные значения |
|---|---|---|
| ARCHERENVIRONMENT | Интеграция с сервисами Q.Archer | "false" - интеграции нет, "true" - интеграция есть |
| JPA_DIALECT | Диалект базы данных | "org.hibernate.dialect.PostgreSQLDialect" - для PostgreSQL, "ru.diasoft.micro.lib.data.oracle.OracleJsonDialect" - для Oracle |
| EMPLOYEE_FIELD | Атрибут пользователя для привязки к проекту интерфейса | "employee_code", "empl_code", "user_account_id" |
Настройка визуальных тем веб-приложений - qpuidtheme, Java-сервис
Назначение: настройка и хранение конфигураций визуальных тем веб-приложений
- Образ
registry-new.diasoft.ru/release/qpuidtheme:26031601
registry-new.diasoft.ru/release/database-qpuidtheme:26031601- Конфигурация
CONFELEMENT_KIND: '2'
JPA_DIALECT: org.hibernate.dialect.PostgreSQLDialectОбратите внимание: сервис поддерживает работу только с СУБД PostgreSQL
Адаптер npm-пакетов - qpuidsourcepackage, Java-сервис
Назначение: интеграционный адаптер для получения артефактов из хранилища артефактов и/или локального хранения артефактов
- Образ
registry-ext.diasoft.ru/release/qpuidsourcepackage:26031601
registry-ext.diasoft.ru/release/database-qpuidsourcepackage:26031601- Конфигурация
ALLOW_ALL_FOR_DEBUG: 'true'
CONFELEMENT_KIND: '2'
DIASOFT_LIBRARY_NODE_MODULES_PATH: /npm_packages
FAILED: none
JAVA_XMS: 500m
JAVA_XMX: 768m
JPA_DIALECT: org.hibernate.dialect.OracleDialect
LIMIT_CPU: '4'
LIMIT_MEMORY: 2Gi
QPUIDSOURCEPACKAGE_LIBRARY_MODE: filesystem
SERVICE_NAME: qpuidsourcepackage
SERVICE_SELF_URL: >-
http://qpuidsourcepackage.qpersonaldesk-dev.qrundigital.diasoft.ru/qpuidsourcepackage
| Параметр | Описание | Возможные значения |
|---|---|---|
| DIASOFT_LIBRARY_NODE_MODULES_PATH | Путь к папке с библиотеками внутри контейнера | /npm_package |
| QPUIDSOURCEPACKAGE_LIBRARY_MODE | Хранилище библиотек | "NEXUS", "filesystem" |
Важно: В параметре
SERVICE_SELF_URLнеобходимо указать полный путь для скачивания, заменивqpersonaldesk-dev.qrundigital.diasoft.ruна нужные неймспейс, кластер и домен
Исполнение бизнес-процессов - qpuideipbpm, Java-сервис
Назначение: исполнение бизнес-процесса публикации проектов интерфейса
- Образ
registry-ext.diasoft.ru/release/qpuideipbpm:26031601
registry-ext.diasoft.ru/release/database-qpuideipbpm:26031601- Конфигурация
ALLOW_ALL_FOR_DEBUG: 'false'
CONFELEMENT_KIND: '23'
HIKARI_CONNECTION_TIMEOUT: '30000'
HIKARI_IDLE_TIMEOUT: '600000'
HIKARI_MAXIMUM_POOLSIZE: '50'
HIKARI_MAX_LIFETIME: '1800000'
JAVA_XMS: 1g
JAVA_XMX: 2g
JPA_DIALECT: org.hibernate.dialect.OracleDialect # или Postgres
KUBERNETES_LEGACY_MOD: 'true'
QBPM_PROCESS_INPUT_TOPICS: >-
qdesigner-publish-project-command;qdesigner-publish-project-reply;qpuid-build-project-command-reply;qdesigner-publish-project-reply;draft-ui-command-reply;qdesigner-lowcode-command
QBPM_PROCESS_OUTPUT_TOPICS: >-
qdesigner-publish-project-reply;qdesigner-publish-project-reply;qdesigner-publish-project-command;qpuid-build-project-command;qdesigner-publish-project-command;draft-ui-command;qdesigner-lowcode-command
QBPM_TASK_ACTION_EVENT: dq-q-bpm-task-action
QBPM_TASK_CANCEL_EVENT: dq-q-bpm-task-cancel
QBPM_TASK_CREATE_EVENT: dq-q-bpm-task-create
RIBBON_REFRESH_INTERVAL: '10000'
SECURITY_ENABLED: 'true'
SERVICE_NAME: qpuideipbpm
SERVICE_PORT: '8080'Компилятор фронтенд-проектов пользовательского интерфейса - qpuidesignerbuild, Node.js сервис
Назначение: выполнение компиляции ui-проектов
- Образ
registry-ext.diasoft.ru/release/qpuidesignerbuild:25112601
- Конфигурация
FAILED: none
FILE_URL: http://mdpfilestorage.qpersonaldesk-dev:8080/mdpfilestorage
LIMIT_CPU: '2'
LIMIT_ETHEMERAL_STORAGE: 3g
LIMIT_MEMORY: 3g
MDP_AUTH_PASS: '12345678'
MDP_AUTH_URL: http://mdpauth.qpersonaldesk-dev:8080/mdpauth
MDP_AUTH_USER: fsa
NPM_REGISTRY_URL: >-
https://qdesignerui.qpersonaldesk-dev.qrundigital.diasoft.ru/api/qpuidsourcepackage/qpuidsourcepackage/npmfullpath/
REQUEST_CPU: '1'
REQUEST_ETHEMERAL_STORAGE: 1g
REQUEST_MEMORY: 1gВажно: В параметре
NPM_REGISTRY_URLнеобходимо указать полный путь для скачивания, заменивqpersonaldesk-dev.qrundigital.diasoft.ruна нужные неймспейс, кластер и домен. Доступ к npm-регистру осуществляется через промежуточный шлюз (gateway), а не напрямую. Система авторизуется в шлюзе от имени фронтенда
- Ресурсы в deployment
resources:
limits:
cpu: '4'
ephemeral-storage: 5Gi
memory: 4Gi
requests:
cpu: '1'
ephemeral-storage: 2Gi
memory: 1GiОбратите внимание: Если сервис используется для сборки большого числа проектов, увеличьте лимит памяти (memory) до 10Gi
Совет: Если не удается установить соединение с сервисом, нужно перезапустить Kafka
Настройка mdpgateway и Nginx Ingress
Шлюзы оркестраторов могут блокировать импорт проектов, содержащих большие файлы, из-за внутренних ограничений на размер запроса
Рекомендуем следующие настройки для mdpgateway:
- Конфигурация
"GATEWAY_MAX_REQUEST_SIZE": '104857600'- nginx-директива для кластерного nginx
client_max_body_size 0;Базовый образ UI приложения с GO-модулем qpalettecaddy
Назначение: обновление контейнера UI микросервиса в runtime среде
Для использования типового UI на Caddy можно воспользоваться helm-chart’ом helm · master · QP / qpalettecaddy · GitLab (opens in a new tab)
Для прикладного проекта нужно собрать UI-микросервис на следующем базовом образе:
registry-new.diasoft.ru/release/qpalettecaddy:26020404- И указать настройки конфигурации:
CHANNEL_PREFIX: (пример,qpersonaldesk-dev-)
CONFELEMENT_KIND: '17'
FAILED: none
KAFKA_BROKERS: qkafka:9092 (пример, нужно указать Kafka на исталлируемом стенде с префиксами, если есть)
KAFKA_GROUP: caddy-${имя} (пример,caddy-qdmoui)
KAFKA_REPLY_TOPIC: draft-ui-command-reply
KAFKA_TOPIC: draft-ui-command
ROOT_FOLDER: /app/files/
SERVICE_NAME: ${имя сервиса}(пример, qdmoui) Секреты (Secret) для каждого сервиса
DB_DATABASE: 'database'
DB_DRIVER: 'org.postgresql.Driver'
DB_HOST: 'postgres-host'
DB_LOGIN: 'login'
DB_PASSWORD: 'password'
DB_PORT: '5432'
DB_SCHEMA: 'schema'
DB_TYPE: 'postgres'
DB_URL: 'jdbc:postgresql://postgres-host:5432/database?currentSchema=schema'Настройка авторизации
Keycloak-авторизация
Для использования сервисов на стенде с Keycloak-авторизацией необходимо:
-
Установить и настроить Keycloak
-
Установить актуальные версии сервисов:
- qdesignerui
- qpuidesigner
- qpuideipbpm
- qpuidsourcepackage
- qpuidtheme
-
Добавить параметры в сервисных конфигурационных файлах Kubernetes
QOAUTH_MODE: 'keycloak'
RESOURCE_SERVER_ID: '' # Имя клиента в Keycloak
AUTH_SERVER_PUBLIC_KEY: '' # Публичный ключ realm Keycloak для формирования сигнатур JWT
AUTH_SERVICE: 'keycloak'
TECH_USERNAME: ''
TECH_PASSWORD: ''
KEYCLOAK_AUTH_URL: ''
KEYCLOAK_CLIENT_ID: ''
KEYCLOAK_CLIENT_SECRET: ''-
Удалить параметр
AUTH_PROVIDER=digitalqиз конфигурационных файлов -
Добавить параметр
KUBERNETES_LEGACY_MOD=trueв системный конфигурационный файл -
Включить параметр
SECURITY_ENABLED=trueв BPM-сервисе -
Перезапустить сервисы
MDP-авторизация
Для использования сервисов на стенде с MDP-авторизацией необходимо:
-
Настроить стенд для работы с MDP
-
Установить актуальные версии сервисов:
- qdesignerui
- qpuidesigner
- qpuideipbpm
- qpuidsourcepackage
- qpuidtheme
-
Добавить параметры в сервисных конфигурационных файлах Kubernetes
AUTH_SERVER_CONTEXT: 'mdpauth'
AUTH_SERVER_URL: 'http://mdpauth:8080'
AUTH_SERVICE: 'mdpauth'
QOAUTH_MODE: 'mdpauth'
TECH_USERNAME: ''
TECH_PASSWORD: ''-
Удалить параметр
AUTH_PROVIDER=digitalqиз конфигурационных файлов -
Добавить параметр
KUBERNETES_LEGACY_MOD=trueв системный конфигурационный файл -
Включить параметр
SECURITY_ENABLED=trueв BPM-сервисе -
Перезапустить сервисы