Установка приложения

Инструкция по установке

Предварительные условия

  • Установленный и настроенный кластер 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-авторизацией необходимо:

  1. Установить и настроить Keycloak

  2. Установить актуальные версии сервисов:

    • qdesignerui
    • qpuidesigner
    • qpuideipbpm
    • qpuidsourcepackage
    • qpuidtheme
  3. Добавить параметры в сервисных конфигурационных файлах 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: ''
  1. Удалить параметр AUTH_PROVIDER=digitalq из конфигурационных файлов

  2. Добавить параметр KUBERNETES_LEGACY_MOD=trueв системный конфигурационный файл

  3. Включить параметр SECURITY_ENABLED=trueв BPM-сервисе

  4. Перезапустить сервисы

MDP-авторизация

Для использования сервисов на стенде с MDP-авторизацией необходимо:

  1. Настроить стенд для работы с MDP

  2. Установить актуальные версии сервисов:

    • qdesignerui
    • qpuidesigner
    • qpuideipbpm
    • qpuidsourcepackage
    • qpuidtheme
  3. Добавить параметры в сервисных конфигурационных файлах Kubernetes

   AUTH_SERVER_CONTEXT: 'mdpauth'
   AUTH_SERVER_URL: 'http://mdpauth:8080'
   AUTH_SERVICE: 'mdpauth'
   QOAUTH_MODE: 'mdpauth'
   TECH_USERNAME: ''
   TECH_PASSWORD: ''
  1. Удалить параметр AUTH_PROVIDER=digitalq из конфигурационных файлов

  2. Добавить параметр KUBERNETES_LEGACY_MOD=trueв системный конфигурационный файл

  3. Включить параметр SECURITY_ENABLED=trueв BPM-сервисе

  4. Перезапустить сервисы