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

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

Выпуски Q.Integration

Актуальные версии образов

registry-new.diasoft.ru/release/qintdui:1.53.01-24100805
registry-new.diasoft.ru/release/qintdintegrationservice:24082701
registry-new.diasoft.ru/release/database-qintdintegrationservice:24082701
registry-new.diasoft.ru/release/qmappui:24100802
registry-new.diasoft.ru/release/qiregintegrationflow:24101103
registry-new.diasoft.ru/release/database-qiregintegrationflow:24101103
registry-new.diasoft.ru/release/qiregui:24090405
registry-new.diasoft.ru/release/qintmqmessagebroker:2.33.0-24100302
registry-new.diasoft.ru/release/qintrkaraf:4.4.5-24080902
registry-new.diasoft.ru/release/qmmmsgpackage:2410020
registry-new.diasoft.ru/release/database-qmmmsgpackage:24100201
registry-new.diasoft.ru/release/qmmui:24100301

Создание эталонной базы данных проекта

Перед созданием проекта необходимо подготовить эталонную базу данных проекта. Для этого необходимо определить список существующих схем БД, которые будут использоваться в проекте.

Список модулей и их БД:

  • QINTD - Дизайнер интеграционных потоков (Q.Integration Designer): qintdintegrationservice
  • QIREG - Реестр интеграционных потоков (Q.Integration Registry): qiregintegrationflow
  • QMM - Учет сообщений (Q.Message Management): qmmmsgpackage

Список модулей без БД:

  • QINTMQ - Приложение является асинхронной системой обмена сообщениями и способно координировать трафик сообщений между процессами в распределенных системах через экземпляр работающего брокера (Q.Artemis): qintmqmessagebroker
  • QINTR - Приложение представляет собой модульную среду для запуска интеграционных адаптеров (Q.Karaf): qintrkaraf

Q.Integration Руководство по установке и запуску сервисов

Установка сервисов производится через платформу Q.CMDB (Инструменты для управления конфигурацией стенда, планирование поставок, заполнения справочников ИТ компонент), с помощью инструмента "Поставки".

Подробнее про использование поставок можно прочитать здесь

Настройка конфигурации сервисов

Примеры общих настроек неймспейса:

system-config
    ARTEMIS_BROKER_URL: tcp://"URL Артемиса, с портом k8s, проброшенным на 61616"
    AUTH_SERVER_CONTEXT: mdpauth
    AUTH_SERVER_URL: "URL mdpauth"
    AUTH_SERVICE: mdpauth
    DB_TEST_QUERY: select 1
    JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 2ого архетипа
    JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 3ого архетипа
    KAFKA_HOST: "Хост Кафки"
    KAFKA_PORT: "Порт Кафки"
    KAFKA_URL: "URL Кафки"
    KUBERNETES_API_HOST: https://kubernetes.default
    KUBERNETES_LEGACY_MOD: 'false'
    LICENSE_PATH: /share/license
    LPATH: /share/config/
    MDPSECURITY_DB_CONNECTION_TEST_QUERY: select 1
    MDPSECURITY_DB_DATABASE: "Название БД"
    MDPSECURITY_DB_DRIVER: org.postgresql.Driver
    MDPSECURITY_DB_SCHEMA: mdpsecurity
    MDPSECURITY_DB_URL: "URL БД"?currentSchema=mdpsecurity
    MESSAGEMANAGEMENT_URL_SERVICE: "URL qmmmsgpackage"
    PROBE_API: /actuator/health
    PROBE_TYPE: http
    QOAUTH_MODE: mdpauth
    SERVICE_PORT: '8080'
    USE_TOKEN_FOR_FEIGN: 'false'
    USE_VAULT: 'false'

system-secret
    DB_ADMIN: "Логин админа БД"
    DB_ADMINPASSWORD: "Пароль админа БД"
    DB_DATABASE: "Логин админа БД"
    DB_DRIVER: org.postgresql.Driver
    DB_HOST: "Хост БД"
    DB_PORT: "Порт БД"
    DB_POSTGRESDRIVER: org.postgresql.Driver
    DB_QUOTED_IDENTIFIERS: false
    DB_TYPE: postgres
    DB_URL: "URL БД"
    MDPSECURITY_DB_LOGIN: "логин тех.пользователя mdpsecurity"
    MDPSECURITY_DB_PASSWORD: "пароль тех.пользователя mdpsecurity"
    OAUTH2_CLIENT_ID: "логин"
    OAUTH2_CLIENT_SECRET: "пароль"
    TECH_PASSWORD: "пароль тех.пользователя"
    TECH_USERNAME: "логин тех.пользователя"

Примеры необходимых настроек для модулей:

Qintdui
  SECURITY_ENABLED: 'false'
  SERVICE_NAME: qintdui

Qintdintegrationservice
  ADMIN_SERVER_URL: mdpgateway:8080
  ALLOW_ALL_FOR_DEBUG: 'true'
  AUTH_SERVER_CONTEXT: mdpauth
  AUTH_SERVER_URL: http://mdpauth:8080
  CONFELEMENT_KIND: '2'
  DB_CONNECTION_TEST_QUERY: SELECT 1
  DEFAULT_BINDER: kafka
  JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 2ого архетипа
  JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 3ого архетипа
  RIBBON_REFRESH_INTERVAL: '10000'
  SERVICE_NAME: qintdintegrationservice
  SERVICE_PORT: '8080'

Qmappui
  SECURITY_ENABLED: 'false'
  SERVICE_NAME: qmappui

Qiregui
  SECURITY_ENABLED: 'false'
  SERVICE_NAME: qiregui

Qmmmsgpackage
  ALLOW_ALL_FOR_DEBUG: 'false'
  ASYNC_CLIENT_TIMEOUT: '180'
  AUTH_PROVIDER: digital
  CONFELEMENT_KIND: '2'
  DB_QUOTED_IDENTIFIERS: 'true'
  DEBUG: 'true '
  DEFAULT_BINDER: kafka
  GATEWAY_URL: http://mdpgateway:8080/
  JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 2ого архетипа
  JPA_DIALECT: org.hibernate.dialect.PostgreSQL95Dialect // для 3ого архетипа
  KAFKA_BOOTSTRAP_SERVERS: "URL Кафки"
  SECURITY_ENABLED: 'false'
  SERVICE_PORT: '8080'

Qmmui
  SECURITY_ENABLED: 'false'
  SERVICE_NAME: qmmui

Qintmqmessagebroker
  ALLOW_ALL_FOR_DEBUG: 'true'
  ARTEMIS_BROKER_URL: tcp://localhost:61616
  ARTEMIS_USER: artemis
  DEFAULT_BINDER: kafka
  HIKARI_CONNECTION_TIMEOUT: '30000'
  HIKARI_IDLE_TIMEOUT: '600000'
  HIKARI_MAXIMUM_POOLSIZE: '50'
  HIKARI_MAX_LIFETIME: '1800000'
  HIKARI_MINIMUM_IDLE: '10'
  LIQUIBASE_ENABLED: 'false'
  LOGGING_HIBERNATE_LEVEL: DEBUG
  LOGGING_LEVEL: DEBUG
  LOGGING_LEVEL_RU_DIASOFT: DEBUG
  LOGGING_ROOT_LEVEL: DEBUG
  SERVICE_NAME: qintmqmessagebroker
  SERVICE_PORT: '8161'

Установка сервисов qintmqmessagebroker и qintrkaraf:

qintmqmessagebroker:

При развертывании сервиса нужно в K8S добавить запись в config-map с названием share-entrypoint-volume:

share-entrypoint-volume

qintmqmessagebroker.sh: | /opt/broker/bin/artemis run

Убедиться, что в деплойменте сервиса есть mount к share-entrypoint-volume, иначе сервис не запустится

А также изменить тип service с ClusterIp на NodePort со следующей записью для портов:

service
    - name: http
      protocol: TCP
      port: 8161
      targetPort: 8161
      nodePort: "свободный порт k8s"
    - name: tcp
      protocol: TCP
      port: 61616
      targetPort: 61616
      nodePort: "свободный порт k8s"

Свободный порт k8s должен быть из диапазона 30000-32767.

Пример:

ports:
    - name: http
      protocol: TCP
      port: 8161
      targetPort: 8161
      nodePort: 32355
    - name: tcp
      protocol: TCP
      port: 61616
      targetPort: 61616
      nodePort: 32356

selector:
    name: qintmqmessagebroker
clusterIP: 10.10.10.10
clusterIPS:
    - 10.10.10.10
type: NodePort
sessionAffinity: None
externalTrafficPolicy: Cluster

Сделать рестарт деплоймента.

UI сервиса станет доступен по адресу: http://qintmqmessagebroker."namespace"."название стенда".diasoft.ru:"порт K8S"/

qintrkaraf: При развертывании сервиса нужно в K8S добавить запись в config-map с названием share-entrypoint-volume:

share-entrypoint-volume
qintrkaraf.sh: |
           /opt/karaf/bin/karafrun

Убедиться, что в деплойменте сервиса есть mount к share-entrypoint-volume, иначе сервис не запустится

А также изменить тип service с ClusterIp на NodePort со следующей записью для портов:

service
        - name: http
          protocol: TCP
          port: 8181
          targetPort: 8181
          nodePort: "свободный порт k8s"

Свободный порт k8s должен быть из диапазона 30000-32767.

Пример:

spec:
    ports:
    - name: http
      protocol: TCP
      port: 8181
      targetPort: 8181
      nodePort: 30899

selector:
    name: qintrkanaf
    clusterIP: 10.10.10.10
    clusterIPs:
    - 10.10.10.10
type: NodePort
sessionAffinity: None
externalTrafficPolicy: Cluster
ipFamilies:
    - IPv4
ipFamilyPolicy: SingleStack

Сделать рестарт деплоймента.

UI сервиса станет доступен по адресу:

http://qintrkaraf."namespace"."название стенда".diasoft.ru:"порт K8S"/

Для работы сервисов Q.Integration потребуется установка актуальных версий платформенных сервисов:

Mdpauth
mdpdepartments
mdpemployee
mdpgateway
mdprefs
mdproles
mdpsenders
mdpsettings
mdpusers

Актуальные версии платформенных сервисов запрашивать у команды "Инструменты и платформа Back-end разработки"

Опционально: Для работы бизнес-процессов потребуется установка актуальных версий сервисов Q.BPM:

Qbpmdesigner
qbpmcockpit
dqhumantask
qbpetqbpmplayer
humantaskui
qbpmui

Актуальные версии платформенных сервисов запрашивать у команды "Технологическая платформа Q.BPM"

Распространенные ошибки при запуске сервисов 1.Не стартует сервис артемиса с ошибкой "Using image entrypoint" doc-admin-guide-scr-1.png

Убедиться, что в деплойменте сервиса есть маунт к share-entrypoint-volume:

spec:
  volumes:
    - name: qintmqmessagebroker
      persistentVolumeClaim:
        claimName: integration-dev
    - name: diasoft-devopsutils
      emptyDir: {}
    - name: config-folder-volume
      emptyDir: {}
    - name: share-folder-volume
      emptyDir: {}
    - name: share-volume
      configMap:
        name: share-volume
        defaultMode: 511
    - name: share-config-volume
      configMap:
        name: share-config-volume
        defaultMode: 511
    - name: share-entrypoint-volume
      configMap:
        name: share-entrypoint-volume
        defaultMode: 511
    - name: wave-list
      configMap: {}

  memory: 512Mi
  volumeMounts:
    - name: qintmqmessagebroker
      mountPath: /share/pv
    - name: diasoft-devopsutils
      mountPath: /share/scripts
    - name: share-folder-volume
      mountPath: /share
    - name: config-folder-volume
      mountPath: /share/config
    - name: share-volume
      mountPath: /opt/share
    - name: share-config-volume
      mountPath: /opt/config
    - name: share-entrypoint-volume
      mountPath: /share/entrypoint

  livenessProbe:
    tcpSocket:
      port: 8161
    initialDelaySeconds: 1280
    timeoutSeconds: 5
    periodSeconds: 30
  1. Ошибки сервиса при соединении к артемису - должен быть указан ARTEMIS_URL в конфиге, обязательно с куберовским портом проброшенным к 61616 - пример: tcp://qintmqmessagebroker.int.qrun.diasoft.ru:30854

  2. Ошибка пода status 404. Исправить в deployment блок с пробами и привести его к виду:

livenessProbe:
  tcpSocket:
    port: 8161
  initialDelaySeconds: 1200
  timeoutSeconds: 5
  periodSeconds: 30
  successThreshold: 1
  failureThreshold: 7
readinessProbe:
  tcpSocket:
    port: 8161
  timeoutSeconds: 5
  periodSeconds: 30
  successThreshold: 1
  failureThreshold: 7
startupProbe:
  tcpSocket:
    port: 8161
  timeoutSeconds: 5
  periodSeconds: 30
  successThreshold: 1
  failureThreshold: 40