Руководство по установке#
Термины и сокращения#
Термин |
Определение |
|---|---|
АС |
Автоматизированная система |
БД |
База данных |
Завольтовать |
Зашифровать через Voltage или с помощью JOB ANSIBLE_VAULT_file |
ИФТ |
Интеграционно-функциональное тестирование |
КТС |
Комплекс технических средств |
СУДИР |
Сервис аутентификации (система управления доступом к информационным ресурсам) |
СТ |
Системное тестирование |
Точки персистирования |
Точки сохранения состояния |
ТУЗ |
Технологическая учетная запись |
УЗ |
Учетная запись |
DPM |
DevOps Pipeline Manager |
GEO |
GeoTrust сертификат |
OSE |
Red Hat OpenShift Container Platform |
SPAS |
Сервис авторизации |
OTT |
One-Time-Token |
Системные требования#
Engine Platform V Flow разворачивается в кластере Openshift/Kubernetes. Рекомендуемые минимальные настройки CPU и выделяемой памяти поставляются в template дистрибутива. Требования к серверу БД рассчитываются индивидуально, в зависимости от решаемых задач.
Для работы компонента используется следующее свободно распространяемое программное обеспечение (Open Source Software):
Red Hat Enterprise Linux Server 7.7;
Red Hat OpenShift 4.5.
Для работы приложения на целевых стендах выше dev требуется использования mTLS и OTT в связи с чем требуется использование соответствующих сертификатов:
Клиентский и серверный сертификат приложения. Серверный сертификат включает в себя в блоке SAN перечень всех необходимых route (mtls, mtls+ott, geo) и используется в Istio ingress. Клиентский используется в Istio egress, ММТ-прокси envoy, а также для соединения по ssl к БД и кафка.
Keystore и Truststore в формате p12 ОТТ для модуля sberflow-engine
Для установки сервиса необходимо наличие:
Кластера Openshift с подключенным и настроенным проектом ISTIO;
Сервера БД;
Серверов Nginx.
До установки приложений Engine Platform V Flow на площадке развёртывания должны быть установлены следующие инфраструктурные компоненты платформы:
Сервис аутентификации;
ФП Аудит;
ФП Журналирование - для отправки логов;
ФП Мониторинг - для отправки метрик мониторинга;
ФП Сервис авторизации;
БД PostgreSQL.
Установка#
Описание поставки#
На текущий момент разработка Engine Platform V Flow ведется в Sigma. Там же собираются докер образы и дистрибутив в template OpenShift.
Образы модулей выкладываются в релизный реестр — <registry.sigma.sbrf.ru/ci00636574/ci00642471_bpm> и доступны в домене Alpha через прокси репозиторий <registry.sigma.sbrf.ru/sigma/ci00636574/ci00642471_bpm>.
Для установки используются 2 модуля:
sberflow-engine— основное приложение; Образ так же используется для отдельного экземпляраengine-replica, необходимого для репликации данных в БД StandIn.sberflow-engine-admin— портал для взаимодействия с основным приложением — для тестовых стендов возможно использование образа с nginx в OpenShift, в целевом варианте — статика включается с поставку дистрибутива и разворачивается на nginx стенда.Istio- каталог, который содержит конфигурационные файлы istio (опционально)ott_sidecar- каталог, который содержит конфигурационные файлы ОТТ sidecar (опционально) Также собирается дистрибутив с артефактами модулей и конфигурационными файлами для развертывания в OpenShift.
Дистрибутив выкладывается в Sigma в sbrf-nexus — https://sbrf-nexus.sigma.sbrf.ru/nexus/content/repositories/Nexus_PROD/Nexus_PROD/CI00642471_BPM/SBERFLOW-ENGINE/. И реплицируется в альфу, где доступен по следующей ссылке - https://sbrf-nexus.ca.sbrf.ru/nexus/content/repositories/Nexus_PROD/Nexus_PROD/CI00642471_BPM/SBERFLOW-ENGINE/.
Поставка Engine Platform V Flow 3 поколения
Для установки используются 2 модуля:
bpms-core-app — основное приложение; bpms-portal-app — портал для взаимодействия с основным приложением — статика включается с поставку дистрибутива и разворачивается на nginx стенда.
Дополнительно для использования функций тестирования устанавливается тестовый модуль bpms-testing-roles-module.war.
Дистрибутив выкладывается в Sigma в sbrf-nexus — https://sbrf-nexus.sigma.sbrf.ru/nexus/content/repositories/Nexus_PROD/Nexus_PROD/CI00642471_BPM/BPMS/. И реплицируется в альфу, где доступен по следующей ссылке - https://sbrf-nexus.ca.sbrf.ru/nexus/content/repositories/Nexus_PROD/Nexus_PROD/CI00642471_BPM/BPMS/.
Подготовка проекта Openshift (опционально)#
После получения проекта в ose его требуется настроить для работы с реестром и JOB install_eip
Интеграция с реестром для пуллинга образов (опционально)#
В проекте ose перейти в Workloads -> Secrets;
Добавить новый секрет с типом
Image Pull Secretсо следующими настройками:secret name— имя секрета в нижнем регистре. Рекомендуется формировать имя как - "ТУЗ"+"-pull";registry server address— для Sigma —registry.sigma.sbrf.ru (без https);username и password— имя и пароль ТУЗа с доступом в реестр, из под которого будут пуллиться образы в проект Openshift;
Добавить созданный секрет в основной сервис аккаунт:
перейти в раздел User Management -> Service Account;
провалиться в аккаунт default -> выбрать вкладку yaml;
в разделе imagePullSecrets: добавить еще одну запись — name: <имя_созданного_image_pull_secret>.
Интеграция с Jenkins - JOB install_eip (опционально)#
Зайти в проект
ose.перейти в раздел User Management -> Service Account;Выбрать
account jenkins;В разделе secrets выбрать секрет
jenkins-tokenпровалиться в него и в разделе data скопировать значение поляtoken;Передать данный токен администраторам проектной области jenkins к которой размещена JOB
install_eipдля того чтобы в проекте jenkins'а создать новый credentials с типом secret text;IDрекомендуется указать равным названию проекта в ose — т.к. у каждого проекта уникальный токен в поле secret text вставить токен скопированный в п.3.;Idсозданного credentials (совпадает с названием namespace) нужно будет указать в конфигурационном файле JOB.
Подготовка БД PostgreSQL#
Подготовить КТС PostgreSQL с указанием компонентов:
Имя табличного пространства —
engine;Имя базы данных —
bdengine;Владелец БД — указать УЗ администратора (который будет работать с первичной настройкой/подготовкой базы и сопровождать ее);
ТУЗ АС —
BPMS, BPMS_CORE_APP, BPMS_READONLY;Имя схемы —
engine_schema.
Если используется кластер, все команды должны выполняться только на master node;
Подключение к postgreSQL через
pgadmin:Запускаем ПО
pgadmin(откроется вкладка в браузере) с запросом master пароля (нужно ввести и запомнить пароль т.к. будет запрашивать всегда при открытииpgadmin);В разделе Servers выбираем Add New Server, далее во вкладке General указываем имя сервера (для отображения в списке серверов);
Открываем вкладку connection (указываем ip/dns name сервера БД в поле host);
В поле port указываем порт, который был получен после отработки заявки (обычно это 5432) ;
В поле Maintenance database указываем название базы
bdengine;В полях username/password указываем логин/пароль УЗ и выполняем подключение к базе;
Для выполнения переподключения к базе под другой УЗ к примеру ТУЗ, необходимо нажать правой кнопкой по серверу и выбрать Disconnect, далее зайти в properties и указать необходимый логин/пароль.
После получения КТС необходимо выполнить:
подключение к БД через
pgadminпод УЗ Владелец БД с указанным портом в письме (обычно это порт 5432);смена транспортного пароля для ТУЗ (пароль по умолчанию
Supertransport$123)alter user "ТУЗ" with password 'password';пароль должен состоять из 16 символов включая спецсимволы;
выполняем команду set role as_admin;
далее необходимо нажать правой кнопкой мыши по БД (
bdengine) и выбрать Query Tool;указываем использование схемы по умолчанию командой
alter role "BPMS" in database bdengine set search_path to engine_schema;выдаем привилегии для ТУЗ командой
Grant ALL on schema engine_schema to "BPMS";подключиться к базе под УЗ ТУЗ (в pgadmin) и выполнить команду
set role as_admin;
Проблемы с которыми приходилось сталкиваться:
Баг при выдаче КТС с владельцем группы
db_admin(должна бытьas_admin), необходимо оформлять ЗНО на группу "SberInfra УБД Администрирование СУБД PostgreSQL";Если схема не выбрана, указать схему для сессии командой
SET search_path TO schema_name; P.s. посмотреть можно черезpgadmin, для этого нажимаем правой кнопкой мыши по базе bdengine, выбираем properties и смотрим поле owner (должен бытьas_admin).
Дополнительные команды:
Перечислить список схем:
select schema_name from information_schema.schemataПросмотр привилегий:
SELECT n.nspname AS "Name", pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner", pg_catalog.array_to_string(n.nspacl, E' + ') AS "Access privileges", pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" FROM pg_catalog.pg_namespace n WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' ORDER BY 1;
Подготовка в установке через Install_EIP (опционально)#
Название модуля (subsystem) для установки через install_eip - PPRB_BPM_OpenShift.
Все настройки стендов хранятся в репозитории gitlab.
Есть три типа репозиториев, содержащих скрипты и конфигурации:
Тестовая ветка (DEV)
Данный репозиторий предназначен исключительно для отладки перед переносом в целевой репозиторий. Для получения доступа к репозиторию и JOB необходимо создать заявку в https://jira.ca.sbrf.ru/projects/OYEKSISK/summary. Репозиторий настроек подсистемы и стендов — <https://sbt-gitlab.delta.sbrf.ru/PPRB/Install_EIP_configs_DEV.git branch = master>. Файл конфигурации —
configuration.xmlURL JOB — https://sbt-jenkins.delta.sbrf.ru/jenkins/job/PPRB_DevOps/job/Install_EIP/job/Install_EIP_2_cli/.Целевая ветка (СТ ИФТ)
Ветка для настройки Pipeline в DPM и прохождения вплоть до ИФТ. Затем администраторы ПСИ сливают эту ветку с веткой ПСИ. Далее все нижеописанные шаги корректируются вручную администраторами ПСИ. Доступ к JOB не выдается, запуск только через DPM. Доступ к репозиториям есть у администраторов стендов. Репозиторий скриптов — <https://sbrf-bitbucket.ca.sbrf.ru/scm/pprbeip/install_eip.git branch = DEV>. Репозиторий настроек подсистемы и стендов — <https://sbt-gitlab.ca.sbrf.ru/PPRB/Install_EIP_Configs_CDL branch = master>. Файл конфигурации —
configuration.xmlURL JOB — https://sbt-qa-jenkins.delta.sbrf.ru/pprb/job/OAABS/job/PPRB_EIP/job/Install_EIP/.ПСИ/Пром ветка
Ветка управляется администраторами ПСИ/Пром вручную.
Для первоначальной установки модуля в ose через job install_eip требуется внести настройки в репозиторий необходимого стенда.
Для этого нужно воспользоваться инструкцией — https://confluence.ca.sbrf.ru/pages/viewpage.action?pageId=2524971498 (Выполнить пункты 1-14, с остальными пунктами ознакомиться)
Настройка конфигурационных параметров#
Конфигурирование системы осуществляется через файл application.yml.
Файл содержит следующие обязательные конфигурационные блоки:
Блок
management— содержит настройки Spring Actuator, необходимые для получения метрик для модуля «Контроль инцидентов»;Блок
logging— в блоке logging необходимо задать требуемый уровень логирования в системе;Блок
spring— Настройка spring части системы;Блок
auth— Содержит настройки связанные с аутентификацией пользователя в dev режиме;Блок
database— Настройка подключений к БД;Блок
dynamic-invoker— Включение/выключение механизма bootstrap class loader;Блок
engine— Содержит опции для настройки торттлинга, точек персистирования, настройка размеров пула запуска процессов, настройки кэширования, настройки очистки истории, окна идемпотентности и настройки адаптивного retry;Блок
flyway— Настройки Flyway миграции;Блок
htm— Настройка подключения к стенду HTM;Блок
standin— Вкл/выкл функционального StandIn;Блок
available-zones— Настройки списка зон, в которых работает приложение;Блок
grafana-config— Настройка подключения к grafana;Блок
api— Настройки для работы системного и пользовательского API.
Пример файла application.yml:
management:
endpoints:
enabled-by-default: false
web.exposure.include: health,metrics,threaddump,prometheus
endpoint:
metrics.enabled: true
health:
enabled: true
show-details: always
threaddump.enabled: true
prometheus.enabled: true
logging:
level:
ROOT: ERROR
port: 8080
spring:
flyway:
enabled: false
main:
allow-bean-definition-overriding: true
cloud:
config:
enabled: false
auth:
refreshToken:
path: '/auth/refresh'
token:
path: '/auth/token'
accessLifetime: 3000
refreshLifetime: 86400
database:
master:
driverClassName: org.postgresql.Driver
idleTimeout: 100
jdbcUrl: jdbc:postgresql://tkled-pprb00112.vm.esrt.cloud.sbrf.ru:5433/bdengine
maximumPoolSize: 100
minimumIdle: 100
schemaOwner: engine_schema
username: BPMS
standin:
driverClassName: org.postgresql.Driver
idleTimeout: 100
jdbcUrl: jdbc:postgresql://tkled-pprb00112.vm.esrt.cloud.sbrf.ru:5433/bdengine
maximumPoolSize: 100
minimumIdle: 100
schemaOwner: engine_schema
username: BPMS
dynamic-invoker:
useBootstrap: false
engine:
activityAsyncExecutorMinThreadPoolSize: 1
apiMessageLogInterval: 3600000
asyncExecutorActivate: true
asyncExecutorResetExpiredJobsInterval: 10000
asyncExecutorThreadPoolSize: 10
asyncExecutorTimerLockTimeInMillis: 1200000
asyncJobAcquireWaitTimeInMillis: 10000
availableTaskCountCacheMaxSize: 1000
availableTaskCountCacheTimeToLiveInMilliseconds: 60000
cciIndexesEnabled: true
classLoaderScannerIntervalInMilliseconds: 30000
cleaner:
batchSize: 1000
byteArrayCleanEnable: true
cron: '0 2 * * * SAT'
depth: 30
enable: false
mode: 'BPMSHISTORICIDENTITYLINKENTITYIMPL,BPMSHISTORICEXTRAATTRIBUTEENTITYIMPL,BPMSIDENTITYLINKENTITYIMPL,BPMSVARIABLEINSTANCEENTITYIMPL,BPMSEXTRAATTRIBUTEENTITYIMPL,BPMSHISTORICVARIABLEINSTANCEENTITYIMPL,BPMSHISTORICACTIVITYINSTANCEENTITYIMPL,BPMSEVENTSUBSCRIPTIONENTITYIMPL,HISTORICRETRYPOLICYENTITYIMPL,BPMSEXECUTIONENTITYIMPL,BPMSJOBENTITYIMPL,BPMSTIMERJOBENTITYIMPL,MULTIINSTANCECOUNTERIMPL,BPMSTASKENTITYIMPL,RETRYPOLICYJOBENTITYIMPL,BPMSHISTORICTASKINSTANCEENTITYIMPL,BPMSBYTEARRAYENTITYIMPL,BPMSHISTORICDETAILENTITYIMPL,BPMSHISTORICPROCESSINSTANCEENTITYIMPL'
cron:
noApiWaitTime: '0 0/1 * * * ?'
noResourcesWaitTime: '0 0/1 * * * ?'
databaseSchemaUpdate: false
executeJobThreadPoolThrottlingMark: 80
executeNewJobThreadPoolThrottlingMark: 50
executeNewProcessThreadPoolThrottlingMark: 50
executeProcessMinThreadPoolSize: 1
executeProcessThreadPoolSize: 135
executeProcessThreadPoolThrottlingMark: 80
executionMode: 'STICKY'
namepsaceURL: ''
htm:
enabled: true
idempotenceMaxRetryCount: 5
insetJobLockExpirationTime: 1200000
jdbcPoolThrottlingMark: 80
jdbcPoolThrottlingMarkForNewProcesses: 50
jobLockExpirationTime: 1200000
maxDepthForScanner: 10
maxAsyncJobsDuePerAcquisition: 5
mbpEnabled: true
mmtTaskEnabled: true
noApi:
maximumTime: 'PT180S'
waitTime: 'PT60S'
noResources:
maximumTime: 'PT180S'
waitTime: 'PT60S'
persistPoints: 'StartEvent,UserTask,IntermediateCatchEvent,ReceiveTask,ServiceTask'
processOwnerRestrictionEnabled: false
resetExpiredJobsInterval: 10000
resetExpiredJobsPageSize: 1000
resetExpiredRetryPolicyJobsInterval: 10000
resetExpiredInsertLockJobsInterval: 10000
retryPolicyJobInterval: 10000
springAsyncExecutorPoolQueueCapacity: 15
springAsyncExecutorPoolSize: 10
statelessAsyncJobAcquireWaitTimeInMillis: 10000
statelessResetExpiredJobsInterval: 10000
throttlingEnable: false
throttlingStateIntervalInMilliseconds: 5000
timerJobAcquireWaitTimeInMillis: 10000
waitScannerTimeAfterNoWait: 200
waitForProcessIdempotenceStarted: 200
flyway:
master:
readonlyUser: BPMS_READONLY
migrationEnabled: true
standin:
readonlyUser: BPMS_READONLY
htm:
app:
url: 'http://htm-portal-test-ci00636574-edevgen-utm.apps.dev-gen.sigma.sbrf.ru/htm-portal'
engineBalancerHost: 'http://sberflow-engine-dev-ci00636574-edevgen-ts-bpm-dev.apps.dev-gen.sigma.sbrf.ru'
bridge:
tech:
user:
login: 'TechUser'
portal:
businessFamilyContext:
- uri: ''
name: ''
sudirBaseUri: ''
taskListURL: ''
zones:
- name: ''
isTaskListEnable: false
standin:
func:
enabled: false
retryBackOffTime: 5000
retryCount: 18
retryEnabled: false
platform:
enabled: false
isStandIn: false
standInPollSchedule: 30000
available-zones:
zones:
- default:
code: 'DEFAULT_ZONE'
name: 'DEFAULT'
url: http://sberflow-engine-dev-ci00636574-edevgen-ts-bpm-dev.apps.dev-gen.sigma.sbrf.ru
grafana-config:
root: 'https://tkles-pprb00078.vm.esrt.cloud.sbrf.ru'
orgId: 1
Подробнее об изменении конфигурационных параметров см. п. Настройка конфигурационных параметров
Настройка os_yaml_dirs.conf (опционально)#
На текущий момент все template OpenShift расположены в дистрибутиве в каталоге config/openshift, его и требуется указать в файле os_yaml_dirs.conf:
/config/openshift
# при поставке с istio и ОТТ нужно добавить каталог с конфигурационными файлами istio
/config/openshift/Istio
/config/openshift/ott_sidecar
Подготовка секретов#
Вся чувствительная информация — пароли, сертификаты, токены в OpenShift хранится в секретах.
Для работы Engine Platform V Flow необходимо создать следующие секреты:
engine-secret— секрет для передачи java опций с паролем от БД, и другой чувствительной информацией в Engine Platform V Flow;envoy-secret— (опционально) секрет с сертификатами для работы envoy ММТ-прокси;fluent-bit-sct— (опционально) секрет с сертификатами для работы sidecar fluent-bit в ММТ-прокси для отправки сообщений брокерам логгера ;ingressgateway-certs- (опционально) секрет с сертификатами istio ingress (серверные сертификаты приложения);ingressgateway-ca-certs- (опционально) секрет с сертификатами с доверенной цепочкой сертификатов для istio ingress;egressgateway-certs- (опционально) секрет с сертификатами istio egress (клиентские сертификаты приложения);egressgateway-ca-certs- (опционально) секрет с сертификатами с доверенной цепочкой сертификатов для istio egress;sberflow-engine-ott-certs- секрет с сертификатами ОТТ;sberflow-engine-ott-passwords- секрет с паролями для сертификатов ОТТ;engine-certs-bd- секрет с клиентскими сертификатами для работы с БД по SSL;sberflow-engine-events-keystore-secret- секрет с клиентскими сертификатами для работы с kafka бизнес-мониторинга;sberflow-engine-events-keystore-passwords-secret- секрет с паролями к jks для работы с kafka бизнес-мониторинга;engine-appjounalsettings-secret- (опционально) секрет с настройками функционального StandIn;engine-appjounalsettings-keystore-secret- (опционально) секрет при подключении к кафкам прикладного журнала по ssl.
Алгоритм подготовки секретов ose которые будут устанавливаться job install_eip подробно описан в инструкции.
Вкратце нужно:
Подготовить шаблон секрета;
Вставить в него Java опцию/сертификаты предварительно закодировать в base64;
Завольтовать полученный конфигурационный файл секрета JOB
ANSIBLE_VAULT_file;Положить завольтованный секрет в репозиторий стенда в каталог
openshift/secret.
Закодировать в base64 можно следующим образом (на win можно воспользоваться git bash):
Создаем файл с содержимым которое нужно закодировать в base64, например password.txt;
base64.exe --wrap=0 password.txt > password.base64;После выполнения команды в файле password.base64 будет закодированный пароль.
Новый механизм автогенерации секретов в install_eip (опционально)
В проекте стенда в каталоге openshift/certs:
Создать каталог — его имя будет именем секрета
В каталог секрета добавить один или несколько файлов, которые станут содержимым секрета, т.о. что имя файла станет именем ключа, а содержимое — значением
Предварительно каждый файл необходимо завольтовать с помощью JOB ANSIBLE_VAULT_file
т.е. не требуется подготавливать конфигурационный файл секрета и отдельно кодировать содержимое в base64 перед вставкой в конфигурационный файл. Но в процессе тестирования функционала столкнулся с двумя сложностями на которе стоит обратить внимание:
При создании текстового файла win всегда добавляет расширение .txt которое попадает в имя ключа — необходимо дополнительно переименовывать файл
При вольтовании сертификата с расширением .crt JOB настройки системы безопасности блокируют вложение письма и завольтованный сертификат не приходит на почту. Решение — изменение расширения на txt до вольтования и обратно на crt после
Пример механизма для секрета типа db-secret (c jvm опциями):
Переходим в каталог <openshift/certs>
Создаем каталог
db-secretСоздаем файл
extra_java_optsА файл
extra_java_optsдобавляем текст и опциями jvm —-Dspring.datasource.password=<Подставить ПАРОЛЬ_БД> -Dclipas.secret-key=<Подставить secret-key SPAS>Вольтуем файл JOB и размещаем его в <openshift/certs/db-secret>
При установке создастся нужный секрет в openshift проекте
Пример механизма для секрета типа envoy-secret (c сертификатами):
Переходим в каталог openshift/certs
Создаем каталог envoy-secret
В созданный каталог кладем предварительно завольтованные сертификаты:
envoy.crt
envoy.key
root-ca.pem
При установке создастся нужный секрет в openshift проекте
Секреты не являются частью поставки дистрибутива, поэтому их необходимо подготовить заранее по следующим шаблонам:
Шаблон секрета engine-secret#
apiVersion: v1
data:
extra_java_opts: <Подставить необходимые java_opts с паролем закодированные в base64>*
kind: Secret
metadata:
labels:
app: sberflow-engine
name: engine-secret
type: Opaque
На текущий момент необходимые
java_opts = -Ddatabase.master.password=<Подставить ПАРОЛЬ_БД>-Ddatabase.standin.password=<Подставить ПАРОЛЬ_БД> -Dflyway.master.ownerPassword=<Подставить ПАРОЛЬ_БД>-Dflyway.standin.ownerPassword=<Подставить ПАРОЛЬ_БД> -Dauth.token.secret=<Подставить secret>-Dclipas.secret-key=<Подставить clipas.secret-key>-Dott.trust.store.pwd=<подставить пароль> -Dott.certstore.pwd=<подставить пароль> -Dott.certstore.key.pwd=<подставить пароль>
Шаблон секрета envoy-secret#
Добавлять при установке mmt-proxy envoy. В качестве сертификатов - используются клиентские сертификаты приложения
kind: Secret
apiVersion: v1
metadata:
name: envoy-secret
data:
envoy.crt: >-
<Подставить сертификат в base64>
envoy.key: >-
<Подставить сертификат в base64>
root-ca.pem: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон fluent-bit-sct#
Добавлять при установке mmt-proxy envoy. В качестве сертификатов - используются клиентские сертификаты приложения.
kind: Secret
apiVersion: v1
metadata:
name: fluent-bit-sct
data:
envoy.crt: >-
<Подставить сертификат в base64>
envoy.key: >-
<Подставить сертификат в base64>
root-ca.pem: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон ingressgateway-certs#
Добавлять при установке с istio. Указать серверный сертификат и ключ.
kind: Secret
apiVersion: v1
metadata:
name: ingressgateway-certs
data:
tls.crt: >-
<Подставить сертификат в base64>
tls.key: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон ingressgateway-ca-certs#
Добавлять при установке с istio. Указать цепочку доверенных сертификатов.
kind: Secret
apiVersion: v1
metadata:
name: ingressgateway-ca-certs
data:
CA.pem: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон egressgateway-certs#
Добавлять при установке с istio. Указать клиентский сертификат и ключ.
kind: Secret
apiVersion: v1
metadata:
name: egressgateway-certs
data:
tls.crt: >-
<Подставить сертификат в base64>
tls.key: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон egressgateway-ca-certs#
Добавлять при установке с istio. Указать цепочку доверенных сертификатов.
kind: Secret
apiVersion: v1
metadata:
name: egressgateway-ca-certs
data:
CA.pem: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон sberflow-engine-ott-certs#
Указать сертификаты ОТТ в формате p12. Имя truststore ОТТ для стенда может быть разное - требуется указать актуальное; дополнительно указывается в конфигурационных файлах.
kind: Secret
apiVersion: v1
metadata:
name: sberflow-engine-ott-certs
data:
<name_ott_public.p12>: >-
<Подставить сертификат в base64>
sberflow-engine.p12: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон sberflow-engine-ott-passwords#
Пароли для keystore ОТТ.
kind: Secret
apiVersion: v1
metadata:
name: sberflow-engine-ott-passwords
data:
OTT_CERTSTORE_PRIVATE_KEY_PWD: <Подставить пароль в base64>
OTT_CERTSTORE_PWD: <Подставить пароль в base64>
OTT_TRUST_STORE_PWD: <Подставить пароль в base64>
type: Opaque
Шаблон engine-certs-bd#
Можно использовать клиентский сертификат, конвертированный в pk8.
kind: Secret
apiVersion: v1
metadata:
name: engine-certs-bd
data:
tls.crt: >-
<Подставить сертификат в base64>
tls.key: >-
<Подставить сертификат в base64>
tls.pk8: >-
<Подставить сертификат в base64>
CA.pem: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон sberflow-engine-events-keystore-secret#
Можно использовать клиентский сертификат, конвертированный в jks
kind: Secret
apiVersion: v1
metadata:
name: sberflow-engine-events-keystore-secret
data:
keystore.jks: >-
<Подставить сертификат в base64>
trusted-keystore.jks: >-
<Подставить сертификат в base64>
type: Opaque
Шаблон sberflow-engine-events-keystore-passwords-secret#
kind: Secret
apiVersion: v1
metadata:
name: sberflow-engine-events-keystore-passwords-secret
data:
PROCESS_EVENT_KEY_PASS: <Подставить пароль в base64>
PROCESS_EVENT_KEY_STORE_PASS: <Подставить пароль в base64>
PROCESS_EVENT_TRUST_KEY_STORE_PASS: <Подставить пароль в base64>
type: Opaque
Шаблон секрета engine-appjounalsettings-secret#
kind: Secret
apiVersion: v1
metadata:
name: engine-appjounalsettings-secret
stringData:
appJournal.yml: <Подставить необходимые настройки StandIn>
Шаблон секрета при подключении к кафкам прикладного журнала по ssl#
kind: Secret
apiVersion: v1
metadata:
name: engine-appjounalsettings-keystore-secret
data:
server.keystore.jks: <jks в base64>
trust.jks: <jks в base64>
Получение сертификатов (опционально)#
Шаги по получению сертификатов описаны в разделах по интеграции с платформенными сервисами.
Настройка установки портала на общий nginx#
Архив со статикой портала включен в дистрибутив поставки и располагается по пути
/other/nginx/sberflow-engine-admin-static-{version}.zip;Конфигурация locations nginx включена в дистрибутив поставки и располагается по пути
/other/nginx/sberflow-engine-admin.conf.
В action.xml указать стандартный action deploy_nginx_default.
Также необходимо указать параметры для nginx'а в файле system_nginx_default.conf.
nginx_path: "" # указать место расположение статики на nginx
nginx_conf_path: "" # указать место расположение пользовательских конфигурационных файлов на nginx
location_sberflow_engine_admin: /sberflow_engine_admin
alias_sberflow_engine_admin: # указать место расположение статики на nginx
sberflow_engine_admin_url: #route на backend
# при использовании istio
proxy_ssl_name: # route на backend без указания протокола
proxy_ssl_server_name: 'on' # обязательно в кавычках
Загрузка ролевой модели и тех юзеров#
Файлы ролевой модели и данные ТУЗ содержаться в дистрибутиве.
В случае установки через Install_EIP, в action.xml необходимо указать стандартный action configure_spas, в противном случае загрузка осуществляется вручную.
Установка sberflow-engine-admin#
При установке в ose — поднимается Pod с nginx и статикой;
Портал доступен по route — sberflow-engine-admin-$stand_id-$namespace.apps.$openshift_cluster/sberflow-engine-admin.
При старте портала в переменной SBERFLOWENGINE_URL указать адрес backend (начиная с версии 5.0.8 URL включает в себя протокол (например, http://)).
В целевом варианте установка портала производится на общий nginx стенда.
Для игнорирования установки портала в ose в репозиторий стенда в файле os_ignore.conf нужно указать имя template OpenShift sberflow-engine-admin-template.yaml.
Наименование location — sberflow-engine-admin, т.е. при работе через СУДИР ссылка будет вида SUDIR/react/sberflow-engine-admin.
пример nginx.conf
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
include /etc/nginx/mime.types;
server {
listen 0.0.0.0:8080;
port_in_redirect off;
location / {
root /usr/share/nginx/html/;
index index.html;
try_files $uri $uri/ /index.html;
}
location /sberflow-engine-admin {
alias /usr/share/nginx/html/sberflow-engine-admin/;
try_files $uri $uri/ /sberflow-engine-admin/index.html;
}
location /sberflow-engine-admin/v4/ {
proxy_pass http://$SBERFLOWENGINE_URL/v4/;
}
location /sberflow-engine-admin/settings/ {
proxy_pass http://$SBERFLOWENGINE_URL/settings/;
}
location /sberflow-engine-admin/auth/ {
proxy_pass http://$SBERFLOWENGINE_URL/auth/;
}
}
}
Установка sberflow-engine#
Статус работы приложения можно посмотреть по route — http://sberflow-engine-$stand_id-$namespace.apps.$openshift_cluster/actuator/health.
JAVA_OPTS которые передаются для запуска |
Дефолтное значение |
DEV |
CT (SUPERB) |
IFT (BOSTON) |
|---|---|---|---|---|
-Dnode.id |
sberflow-engine-${STAND_ID} |
|||
-DloggingDir |
/home/logs |
|||
-DloggingJSONFile |
log.json |
|||
-Dorg.springframework.boot.logging.LoggingSystem |
none |
|||
-DuserPath |
/home/config/users.yaml |
|||
-Dspring.config.location |
file:///home/config/application.yml |
|||
-Xms1G -Xmx1G |
||||
-Dfile.encoding=UTF-8 |
UTF-8 |
|||
-Djava.net.preferIPv4Stack |
true |
|||
-Dspring.profiles.active |
${ENGINE_SPRING_PROFILE} |
dev,anonymousDeploy,nostandin,htmbridge |
anonymousDeploy,nostandin,htmbridge |
anonymousDeploy,nostandin,htmbridge |
-Dfallback.log.level |
INFO |
|||
-Dsi.zone.id |
BPMS |
|||
-DzoneInfo |
BPMS |
|||
-Duser.home |
/home |
|||
-Dserver.port |
8080 |
|||
-Dclipas.spas-server-url |
${SPAS_SERVER_URL} |
не требуется |
https://tkli-pprb0945.vm.mos.cloud.sbrf.ru:8443/spas/rest |
https://str-vat-app0273.vm.mos.cloud.sbrf.ru:8443/spas/rest |
JAVA_OPTS которые передаются через secret |
||||
-Ddatabase.master.password |
Подставить ПАРОЛЬ_БД |
|||
-Ddatabase.standin.password |
Подставить ПАРОЛЬ_БД |
|||
-Dflyway.master.ownerPassword |
Подставить ПАРОЛЬ_БД |
|||
-Dflyway.standin.ownerPassword |
Подставить ПАРОЛЬ_БД |
|||
-Dauth.token.secret |
secret |
|||
-Dclipas.secret-key |
не требуется |
*** |
*** |
Установка engine-replica#
Статус работы приложения можно посмотреть по route — http://engine-replica$stand_id-$namespace.apps.$openshift_cluster/actuator/health.
Установка engine-replica идентична установке sberflow-engine за исключением значения Java опции -Dspring.profiles.active которая должна быть равна replication
Настройка режима авторизации пользователей#
Авторизация и аутентификация может осуществляться в разных режимах в зависимости от настроек указанных при конфигурировании приложения.
Доступные режимы:
dev — используется в тех случаях когда информация о пользователях хранится в файле users.yml (используется на тестовых средах в качестве заглушки для систем авторизации/аутентификации);
СУДИР + SPAS — аутентификация производится на стороне СУДИР, список пользователей и ролевая модель хранится в SPAS;
iamproxy + SPAS — аутентификация производится через сервер iamproxy, список пользователей и ролевая модель хранится в SPAS;
keycloak — не используется на текущий момент.
Информация о внешних сервисах:
Режим dev#
Информация об учетных записях пользователей хранится в файле users.yml, расположенном в директории проекта.
В случае успешной аутентификации и авторизации пользователя, на стороне сервера будет сгенерирован JWT токен. JWT токен — содержит три блока, разделенных точками: заголовок(header), набор полей (payload) и сигнатуру (signature).
Токены генерируются на сервере основываясь на секретном ключе и payload. Токен в итоге хранится на стороне клиента и используется при необходимости авторизации какого-либо запроса.
Для настройки dev режима авторизации необходимо выполнить следующие шаги:
Создать файл users.yml и наполнить его учетными данными пользователей;
В java опциях проекта:
активировать профиль
devи добавить путь к файлу с пользователями;задать параметры генерации токена.
Формат данных учетной записи пользователя (файл users.yml) приведен ниже:
login: "sbt-test"
name: "sbt-test"
lastName: "sbt-test"
middleName: "sbt-test"
rang: "manager"
email: "sbt-test@sberbank.ru"
depNameEasup: "test"
depCodeEasup: "test"
orgCode: "test"
tabNum: "test"
departmentName: "test"
lockStatus: false
roles:
- id: 333
code: "bpms-core-app_BpmsAdminMonitoring"
name: "Администратор мониторинга исполнения процессов"
description: "Видит интерфейс Контроль исполнения, список моделей процессов, может просматривать список экземпляров"
archive: false
В java опциях проекта необходимо активировать профиль dev и добавить путь к файлу с пользователями:
-DuserPath=/home/jboss/config/users.yaml
-Dspring.profiles.active=dev,anonymousDeploy
Параметры для генерации токена определяются в конфигурации приложения (файл application.yml):
путь к токену на стороне клиента —
token.path;время жизни токена —
token.accessLifetime;время жизни refresh токена —
token.refreshLifetime;ключ шифрования —
token.secret;путь к refresh токену на стороне клиента —
refreshToken.path.
auth:
refreshToken:
path: '/auth/refresh'
token:
path: '/auth/token'
accessLifetime: 300
refreshLifetime: 86400
secret:
Режим СУДИР/iamproxy + SPAS#
Список пользователей загружается из внешних систем в SPAS.
Ролевая модель загружается в SPAS в формате xml в момент разворачивания системы.
В режиме СУДИР + SPAS аутентификация производится на стороне СУДИР. Для аутентификации используется внутренняя БД СУДИР, синхронизируемая со SPAS.
В случае успешной аутентификации СУДИР сохраняет пользовательскую сессии у себя в cookies и проверяет ее валидность при каждом запросе из стороннего приложения. Все запросы требующие аутентификации пользователя должны проходить через СУДИР. Если пользователь аутентифицирован, то СУДИР пробрасывает запрос дальше обогащая его заголовком, содержащим аутентификационную информацию (заголовок iv-user содержит логин пользователя).
Для прохождения авторизации и назначения ролей пользователю, приложение получает логин пользователя из сгенерированного СУДИРом заголовка и посылает запрос в SPAS на выдачу прав.
В SPAS хранится состав полномочий для ролей, также SPAS предоставляет механизм загрузки ролей в СУДИР/iamproxy. Подробнее об интеграции со SPAS.
Пользователи и их роли хранятся и назначаются в СУДИР/iamproxy. Подробнее об интеграции с СУДИР/iamproxy.
Ролевая модель загружается в SPAS в формате xml в момент разворачивания системы.
Пример roleModel.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<module xmlns="http://AccessSystem/namespace" moduleVersion="${project.version}" name="htm-app" roleModelVersion="20201029.1726">
<nodes>
<node type="entity" display-name="Группа для TaskList">
<form id="htm_access" display-name="TaskList/access"/>
</node>
</nodes>
<roles>
<role code="FreeFlowUser" name="Freeflow Исполнитель"
description="Имеет доступ к назначенным на него задачам и задачам из общей очереди. Доступные интерфейсы: Мои задачи, Доступные задачи">
<permission-ref id="htm_access"/>
</role>
</roles>
</module>
В настройках проекта необходимо указать:
Профиль аутентификации:
Для СУДИР не указывается (пустой);
Для аутентификации через iamproxy —
Dspring.profiles.active=iamproxy.
Путь к SPAS серверу:
Ключ доступа к данным SPAS —
secret_key;Настройки аутентификации через СУДИР (для iamproxy не указываются).
-Dspring.profiles.active=anonymousDeploy
-Dclipas.spas-server-url=https//000.000.00.00:0000/spas/rest
-Dclipas.secret_key=1111
-Dclipas.security.sudirAuthenticationEnable=true
-Dclipas.security.token-Authentication-Enable=false
-Dclipas.security.user-password-authentication-Enable=true
Аутентификация в режиме iamproxy + SPAS происходит аналогично режиму СУДИР + SPAS.
Если пользователь успешно аутентифицирован, то iamproxy сервер пробрасывает запрос дальше обогащая его заголовком в виде JWT токена.
Интеграция со SPAS#
Для интеграции со SPAS необходимо:
Включить в секрет
engine-secretjvm-опцию-Dclipas.secret-key=<секретный ключ сервиса SPAS>;Задать значение переменной в application.yml
SPAS_SERVER_URL=<адрес rest сервиса SPAS на который будут отправляться запросы>.
####### КОНФИГУРАЦИЯ SPAS
clipas:
spas-server-url: ${SPAS_SERVER_URL}
Адреса rest SPAS и secret-key обычно известны администраторам стенда, при указании значения есть особенности:
адрес сервиса не совпадает с URL SPAS и часто представлен в формате https://xx.xx.xx.xx:8443/spas/rest;
адрес сервиса необходимо указывать с использованием fqdn (доменного имени), т.к. запросы в него уходят через egress istio. Для этого ip нужно поменять на доменное имя wildfly, на котором располагается сервис SPAS на стенде.
Интеграция с СУДИР и IamProxy#
Для корректного выхода из приложения из приложения (портала) при работе через СУДИР в backend при старте необходимо задать значение
переменной в application.yml с URL СУДИР/IamProxy — LOGOUT_URL.
####### СУДИР/IamProxy
auth:
logoutUrl: ${LOGOUT_URL}
Параметры OpenShift манифестов#
По умолчанию, при развертывании используются настройки описанные в OpenShift манифестах. Данные параметры можно переопределить вручную на стенде при установке.
Переменные sberflow-engine#
INCLUDE_ENGINE_PARAMETERS
Переменные engine-replica#
INCLUDE_ENGINE_REPLICA_PARAMETERS
Переменные sberflow-engine-admin#
INCLUDE_ENGINE_ADMIN_PARAMETERS
Переменные mmt-proxy envoy#
INCLUDE_ENVOY_PARAMETERS
Переменные istio-ingress#
INCLUDE_INGRESS_PARAMETERS
Переменные istio-egress-ott#
INCLUDE_EGRESS_PARAMETERS
Переменные istio-ingress#
Параметр |
Рекомендованное значение |
Описание |
|---|---|---|
EGRESS_INTERNAL_PORT |
8080 |
Порт открытый на istio egress для переадресации трафика |
EGRESS_INTERNAL_PROTOCOL |
HTTP |
Протокол по которому отправляется трафик на istio egress |
HTM_APP_SERVICE_PORT |
8085 |
Порт на котором работает htm-app |
INGRESS_MODE |
MUTUAL |
Режим работы tls istio ingress |
INGRESS_OTT_MODE |
MUTUAL |
Режим работы tls istio ingress ott |
SPAS_SERVER_URL_ISTIO |
нет |
Адрес ingress SPAS |
SPAS_SERVER_PORT_ISTIO_HTTPS |
нет |
Порт ingress SPAS |
AUDIT_INGRESS_HOST |
нет |
Адрес ingress аудита |
AUDIT_INGRESS_PORT |
нет |
Порт ingress аудита |
ENGINE_INGRESS_HOST |
нет |
Адрес ingress Tasklist |
ENGINE_INGRESS_PORT |
нет |
Порт ingress Tasklist |
OTT_SERVER_1_URL_ISTIO |
нет |
Адрес ingress ОТТ |
OTT_SERVER_2_URL_ISTIO |
нет |
Адрес ingress ОТТ |
OTT_SERVER_PORT_ISTIO_HTTPS |
нет |
Порт ingress ОТТ |
servicePort_https |
нет |
Порт ingress логгера |
CLUSTER_HOST_LB |
нет |
Домен гео-балансировщика нагрузки |
OPENSHIFT_HOST |
нет |
Домен OpenShift кластера |
POSTGRES_PORT |
6544 |
Внешний порт Postgresql на который будет отравляться трафик. Используется при 1 хосте БД |
INTERNAL_POSTGRES_PORT |
6062 |
Порт Postgresql со стороны istio egress. Используется при 1 хосте БД |
POSTGRES_HOST |
нет |
FQDN хоста БД. Используется при 1 хосте БД |
Генерация типовых конфигурационных файлов#
Так как на различных стендах может использоваться различное количество внешних хостов с которыми необходима интеграция, в состав дистрибутива включены наборы шаблонов для генерации однотипных istio конфигурационных файлах OpenShift.
Шаблоны для https соединений:#
Шаблоны для https соединений располагаются в каталоге config/openshift/Istio/custom/egress-http:
svc-external-http-custom.yml- шаблон для сервиса для переадресации запросов;vs-egress-http-custom.yml- шаблон для Virtual Service;se-egress-http-custom.yml- шаблон для Service Entry;dsr-egress-http-custom.yml- шаблон для Destination Rule.
И включают в себя следующие параметры:
Параметр |
Описание |
|---|---|
INTEGRATION_INNER_SERVICE |
Имя сервиса на которое можно обращаться внутри проекта и запрос будет передан на внешний хост. Нельзя использовать "_" и "." |
INTEGRATION_INGRESS_HOST |
Адрес istio внешнего сервиса |
INTEGRATION_INGRESS_PORT |
Порт istio внешнего сервиса |
При этом для работы с ПФ на стенде необходимо переопределить валидационные envoy фильтры и указать в них CN хостов, у которых должен быть доступ к Engine.
При использовании install_eip - в uniqueParams можно указать следующий блок:
uniqueParams:
# Integration https via egress
svc-external-http-custom.yml:
INTEGRATION_INNER_SERVICE:
- some svc name
INTEGRATION_INGRESS_HOST:
- some fqdn host
INTEGRATION_INGRESS_PORT:
- some port
vs-egress-http-custom.yml:
INTEGRATION_INNER_SERVICE:
- some svc name
INTEGRATION_INGRESS_HOST:
- some fqdn host
INTEGRATION_INGRESS_PORT:
- some port
se-egress-http-custom.yml:
INTEGRATION_INNER_SERVICE:
- some svc name
INTEGRATION_INGRESS_HOST:
- some fqdn host
INTEGRATION_INGRESS_PORT:
- some port
dsr-egress-http-custom.yml:
INTEGRATION_INNER_SERVICE:
- some svc name
INTEGRATION_INGRESS_HOST:
- some fqdn host
INTEGRATION_INGRESS_PORT:
- some port
Шаблоны для tcp соединений (Kafka)#
Конфигурационные файлы для соединений с plaintext и ssl протоколами различаются по структуре.
Доступно 2 набора шаблонов:
Шаблоны для подключения по plaintext располагаются в каталоге config/openshift/Istio/custom/egress-kafka
egress-gw-tcp-kafka-custom.yml- шаблон для Gateway;egress-se-tcp-kafka-custom.yml- шаблон для Service Entry;egress-vs-tcp-kafka-custom.yml- шаблон для Service Entry;
Шаблоны для подключения по ssl располагаются в каталоге config/openshift/Istio/custom/egress-kafka-ssl
egress-gw-tcp-kafka-ssl-custom.yml- шаблон для Gateway;egress-se-tcp-kafka-ssl-custom.yml- шаблон для Service Entry;egress-vs-tcp-kafka-ssl-custom.yml- шаблон для Service Entry;
В зависимости от выбранного протокола - подключите одну из папок в os_yaml_dirs.conf. Файлы имеют разные имена для возможности комбинирования подключений для разных кластеров кафок. Переменные используемые в обоих наборах конфигурационные файлы идентичные, поэтому описаны они будут один раз
Параметр |
Описание |
|---|---|
KAFKA_NAME |
Имя хоста брокера кафка для идентификации конфигурационного файла. Нельзя использовать "_" и "." |
KAFKA_HOST |
Адрес хоста брокера кафка |
KAFKA_HOST_IP |
IP адрес брокера кафки |
APP_OUT_KAFKA_PORT |
Виртуальный (уникальный для каждого хоста) порт брокера кафки, с которого трафик переадресуется на Egress. Его также требуется указать в конфигурационных файлах приложения в строке с хостами брокеров кафки |
INTERNAL_KAFKA_PORT |
Внутренний (виртуальный, уникальный для каждого хоста) порт брокера кафки на Egress |
KAFKA_PORT |
Реальный порт брокера кафки (9092 или 9093) на который будет маршрутизирован трафик после Egress |
Порты INTERNAL_KAFKA_PORT и KAFKA_PORT должны быть также описаны в сервисе Egress с именами tcp-<Порт>
При использовании install_eip - в uniqueParams можно указать следующий блок:
При подключении по PLAINTEXT
uniqueParams:
# Integration with kafka tcp
egress-gw-tcp-kafka-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
INTERNAL_KAFKA_PORT:
- some port
egress-se-tcp-kafka-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
KAFKA_HOST_IP:
- some ip
APP_OUT_KAFKA_PORT:
- some port
KAFKA_PORT:
- some port
egress-vs-tcp-kafka-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
KAFKA_HOST_IP:
- some ip
APP_OUT_KAFKA_PORT:
- some port
INTERNAL_KAFKA_PORT:
- some port
KAFKA_PORT:
- some port
При подключении по SSL
uniqueParams:
# Integration with kafka tcp (SSL)
egress-gw-tcp-kafka-ssl-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
INTERNAL_KAFKA_PORT:
- some port
egress-se-tcp-kafka-ssl-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
KAFKA_HOST_IP:
- some ip
APP_OUT_KAFKA_PORT:
- some port
KAFKA_PORT:
- some port
egress-vs-tcp-kafka-ssl-custom.yml:
KAFKA_NAME:
- some name
KAFKA_HOST:
- some host
KAFKA_HOST_IP:
- some ip
APP_OUT_KAFKA_PORT:
- some port
INTERNAL_KAFKA_PORT:
- some port
KAFKA_PORT:
- some port
Шаблоны для tcp соединений c базами данных:#
Располагаются в каталоге config/openshift/Istio/custom/egress-bd
egress-gw-tcp-bd-custom.yml- шаблон для Gateway;egress-se-tcp-bd-custom.yml- шаблон для Entry;egress-vs-tcp-bd-custom.yml- шаблон для Virtual Service.
Параметр |
Описание |
|---|---|
BD_NAME |
Имя БД. Для идентификации конфигурационного файла. Нельзя использовать "_" и "." |
POSTGRES_HOST |
FQDN хоста базы данных |
APP_OUT_POSTGRES_PORT |
Уникальный порт для данной БД, указанный в конфигурации приложения |
INTERNAL_POSTGRES_PORT |
Внутренний уникальный порт egress для данной БД |
POSTGRES_HOST |
Внешний порт БД на который будут отправлены запросы с egress |
При использовании install_eip - в uniqueParams можно указать следующий блок:
uniqueParams:
# Integration with db tcp wia istio egress
egress-gw-tcp-bd-custom.yml:
BD_NAME:
- some name
INTERNAL_POSTGRES_PORT:
- some port
egress-se-tcp-bd-custom.yml:
BD_NAME:
- some name
POSTGRES_HOST:
- some host
POSTGRES_PORT:
- some port
APP_OUT_POSTGRES_PORT:
- some port
egress-vs-tcp-bd-custom.yml:
BD_NAME:
- some name
POSTGRES_HOST:
- some port
APP_OUT_POSTGRES_PORT:
- some port
INTERNAL_POSTGRES_PORT:
- some port
POSTGRES_PORT:
- some port
Поддержка RHSM 2.0.*#
C версии Monosolution 4.6 модули Platform V Flow Engine и TaskList используют RHSM 2.0 Для обновления требуется
Переключить проект на control plain с поддержкой RHSM 2.0.*
Изменить в конфигурации стенда параметры:
CONTROL_PANEL - указать новый control plain;
PROXY_IMAGE - указать ссылку на istio прокси envoy, По умолчанию для rhsm 2.0. используется -
registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:51d82b560e467ec59a3b6625b04c31b86df5b4c10070a351d547cb6cf3f26591;Скорректировать переопределенный на стенде egress-svc - labels, selector, status port;
Скорректировать валидационные фильтры - selector, safe_regexp_match (пример в дистрибутиве);
При использовании конфигурационных файлов для внешних http интеграций, хранящихся на среде - задать порту в svc external (локальный сервис с коротким именем интеграции) имя порту (name: http-8080, при использовании порта 8080 для внутреннего порта Egress http интеграций);
Дождаться переключения на новый control plain, отключить текущие pod istio Ingress/Egress;
Развернуть новую версию, проверить работоспособность. При положительном исходе - удалить старые версии istio из проекта.
При переходе на rhsm 2 был осуществлён отказ от 2 Ingress и теперь запросы и на пользовательскую и на системную апи используют единый Ingress.
Обновление#
Обновление приложения выполняется посредством развертывания артефактов новой стабильной версии.
Для того чтобы выполнить обновление, необходимо:
выполнить установку дистрибутива новой версии через
Install_EIP;установка должна быть произведена для двух модулей:
sberflow-engine,sberflow-egine-admin.
Процедура установки подробно описана в разделе Установка.
Принудительное удаление предыдущей версии не требуется.
Удаление#
При установке в OSE процедура удаления Platform V Flow Engine представляет собой удаление собранного nameSpace в OpenShift.
Проверка работоспособности#
Проверить работоспособность компонента можно с помощью команды health check:
http://<URL>/actuator/health
URL — должен содержать IP адрес и порт развернутого стенда Engine Platform V Flow.
В результате должно быть получено сообщение "status":"UP" и перечень данных о компонентах приложения и их актуальных статусах.
Откат#
Откат приложения на предыдущую версию выполняется посредством развертывания артефактов предыдущей версии.
Для того чтобы выполнить откат на предыдущую версию приложения:
Выполнить установку дистрибутива предыдущей версии через
Install_EIPОткат должен быть произведен для двух модулей:
sberflow-engine,sberflow-egine-admin.
Процедура установки подробно описана в разделе Установка.
Часто встречающиеся проблемы и пути их устранения#
Не выявлено.
Чек-лист валидации установки#
После установки необходимо проверить:
Все запланированные при разворачивании pod поднялись успешно;
Логи не содержат сообщений об ошибке старта компонента;
Проверка health check проходит успешно.