Руководство по установке#

Термины и сокращения#

Термин

Определение

АС

Автоматизированная система

БД

База данных

Завольтовать

Зашифровать через Voltage или с помощью JOB ANSIBLE_VAULT_file

ИФТ

Интеграционно-функциональное тестирование

КТС

Комплекс технических средств

СУДИР

Сервис аутентификации (система управления доступом к информационным ресурсам)

СТ

Системное тестирование

Точки персистирования

Точки сохранения состояния

ТУЗ

Технологическая учетная запись

УЗ

Учетная запись

DPM

DevOps Pipeline Manager

GEO

GeoTrust сертификат

OSE

Red Hat OpenShift Container Platform

SPAS

Сервис авторизации

OTT

One-Time-Token

Системные требования#

TaskList Platform V Flow разворачивается в кластере Openshift/Kubernetes. Рекомендуемые минимальные настройки CPU и выделяемой памяти поставляются в template OpenShift дистрибутива. Требования к серверу БД рассчитываются индивидуально, в зависимости от решаемых задач.

Для работы компонента используется следующее свободно распространяемое программное обеспечение (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 ОТТ для модуля htm-app

  • Keystore и Truststore в формате p12 ОТТ для модуля tasklistplatform4 (htm-bridge)

Для установки сервиса необходимо наличие:

  • Кластера Openshift с подключенным и настроенным проектом ISTIO;

  • Сервера БД;

  • Серверов Nginx.

До установки приложений Tasklist Platform V Flow на площадке развёртывания должны быть установлены следующие инфраструктурные компоненты платформы:

  • Сервис аутентификации;

  • ФП Аудит;

  • ФП Журналирование - для отправки журналов;

  • ФП Мониторинг - для отправки метрик мониторинга;

  • ФП Сервис авторизации;

  • БД PostgreSQL.

Установка#

Описание поставки#

На текущий момент разработка TaskList Platform V Flow ведется в Sigma. Образы контейнеров и дистрибутив с template OpenShift и документацией собираются также в Sigma.

Образы модулей выкладываются в релизный реестр и доступны в домене альфа через прокси репозиторий

Для установки используются 3 модуля:

  • htm-app — основное приложение;

  • htm-bridge-app — бридж для взаимодействия с сервисами 3-го поколения (опционально);

  • htm-portal — портал для взаимодействия с основным приложением - возможно как использование образа с nginx в OpenShift так и с разворачиванием статики из дистрибутива на выделенном nginx;

Также собирается дистрибутив с артефактами модулей и конфигурационными файлами для развертывания в OpenShift:

  • Istio - каталог, который содержит конфиги istio (опционально);

  • ott_sidecar - каталог, который содержит конфиги ОТТ sidecar (опционально).

Дистрибутив выкладывается в Nexus CDP — sbrf-nexus.

И реплицируется в альфу, где доступен по следующей ссылке.

Подготовка проекта Openshift (опционально)#

После получения проекта в OSE его требуется настроить для работы с реестром и Jenkins job install_eip.

Интеграция с реестром для пуллинга образов (опционально)#

  1. В проекте OSE перейти в Workloads -> Secrets;

  2. Добавить новый секрет с типом Image Pull Secret со следующими настройками:

    1. secret name — имя секрета в нижнем регистре, рекомендуется имя ТУЗ и -pull;

    2. registry server address — для sigma - <registry.sigma.sbrf.ru> (без https);

    3. username и password — имя и пароль ТУЗ с доступом в реестр, из-под которого будет выполняться пуллинг образов в проект OpenShift;

  3. Добавить созданный секрет в основной сервис аккаунт:

    1. перейти в раздел User Management -> Service Account;

    2. перейти в аккаунт default -> выбрать вкладку yaml;

    3. в разделе imagePullSecrets добавить еще одну запись — name, как имя_созданного_секрета_image_pull_secret.

Интеграция с Jenkins job install_eip (опционально)#

  1. Зайти в проект OSE, перейти в раздел User Management -> Service Account;

  2. Выбрать - account jenkins;

  3. В разделе secrets, выбрать секрет jenkins-token, перейти в него и в разделе data скопировать значение поля token;

  4. Передать данный токен администраторам проектной области jenkins, в которой размещена Jenkins job install_eip для того чтобы в проекте jenkins создать новый credentials с типом secret text. ID рекомендуется указать равным названию проекта в ose - т.к. у каждого проекта уникальный токен, в поле secret text вставить токен скопированный в п.3.

  5. Id созданного credentials (читай название namespace) нужно будет указать в конфигурации install_eip.

Подготовка БД PostgreSQL SE#

  1. Заказать КТС PostgreSQL с указанием компонентов:

    • Имя табличного пространства — htm_space;

    • Имя базы данных — htmdb;

    • Владелец БД — указать УЗ админа (сотрудник, который будет работать с первичной настройкой/подготовкой базы);

    • ТУЗ АС — htm-admin;

    • Имя схемы — htmdb;

  2. Если используется кластер, все команды должны выполняться только на master node;

  3. Подключиться к PostgreSQL через pgadmin:

    • Запустить ПО pgadmin (откроется вкладка в браузере) с запросом мастер пароля (нужно ввести и запомнить пароль т.к. он будет запрашиваться всегда при открытии pgadmin);

    • В разделе Servers выбрать Add New Server, далее во вкладке General указать имя сервера (для отображения в списке серверов);

    • Открыть вкладку connection (указать ip/dns name сервера БД в поле host );

    • В поле port указать порт, который был указан в почте (обычно это 5432);

    • В поле Maintenance database указать название базы htmdb;

    • В полях username/password указать логин/пароль УЗ и выполнить подключение к базе;

    • Для выполнения переподключения к базе под другой УЗ, к примеру ТУЗ, необходимо нажать правой кнопкой на сервер и выбрать Disconnect, далее зайти в properties и указать необходимый логин/пароль;

  4. После получения КТС необходимо выполнить:

    • подключение к БД через pgadmin (необходимо заказать установку в SberUserSoft) под УЗ Владелец БД с указанным портом в письме (обычно это порт 5432);

    • смена транспортного пароля для ТУЗ (пароль по умолчанию Supertransport$123) sql alter user "ТУЗ" with password 'password'; пароль должен состоять из 15 символов включая спецсимволы;

    • выполнить команду set role as_admin, далее необходимо нажать правой кнопкой мыши по БД (htmdb) и выбрать Query Tool;

    • указать использование схемы по умолчанию командой sql alter role "htm-admin" in database htmdb set search_path to htmdb;;

    • выдать привилегии для ТУЗ командой sql grant ALL on schema htmdb to "htm-admin";

    • подключиться к базе под УЗ ТУЗ (в pgadmin) и выполнить команду sql set role as_admin;

  5. Проблемы с которыми приходилось сталкиваться:

    • liquibase скрипт при update блокирует параметр в базе (можно проверить командой sql select * from DATABASECHANGELOGLOCK;) если параметр - Locked true, необходимо выполнить команду sql truncate table DATABASECHANGELOGLOCK для очистки значения в таблице;

    • Баг при выдаче КТС с владельцем группы db_admin (должна быть as_admin), необходимо оформлять ЗНО на группу «SberInfra УБД Администрирование СУБД PostgreSQL»;

    • Если схема не выбралась указать схему для сессии командой sql SET search_path TO schema_name; , посмотреть можно через pgadmin, для этого нажимаем правой кнопкой мыши по базе htmdb, выбираем properties и смотрим поле owner (должен быть as_admin);

  6. Дополнительные команды:

    1. перечислить список схем: sql select schema_name from information_schema.schemata;

    2. просмотр привилегий:

      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_eipPPRB_BPM_TaskList

Все настройки стендов хранятся в репозитории gitlab.

Есть три типа репозиториев, содержащих скрипты и конфигурации:

  1. Тестовая ветка (DEV)

    Данный репозиторий предназначен исключительно для отладки перед переносом в целевой репозиторий.

    Для получения доступа к репозиторию и Jenkins job необходимо создать заявку в jira.

    Репозиторий настроек подсистемы и стендов - branch = master

    Файл конфигурации — configuration.xml.

    URL Jenkins job.

  2. Целевая ветка (СТ ИФТ)

    Ветка для настройки Pipeline в DPM и прохождения вплоть до ИФТ. Затем администраторы ПСИ сливают эту ветку с веткой ПСИ. Далее все нижеописанные шаги корректируются руками администраторов ПСИ.

    Доступ к job не выдается, запуск только через DPM. Доступ к репозиториям есть у администраторов стендов.

    Репозиторий скриптов branch = DEV.

    Репозиторий настроек подсистемы и стендовbranch = master.

    Файл конфигурации — configuration.xml.

    URL Jenkins job.

  3. ПСИ/Пром ветка (ПСИ/ПРОМ)

    Ветка управляется администраторами ПСИ/ПРОМ вручную.

Для первоначальной установки модуля в OSE через job install_eip, требуется внести настройки в репозиторий необходимого стенда.

Для этого нужно воспользоваться инструкцией в Confluence (Выполнить пункты 1-14, с остальными пунктами ознакомиться).

Настройка конфигурационных параметров#

В файле os_props.conf указаны все стендозависимые переменные со значениями, которыми будут параметризоваться конфигурационные файлы OpenShift при установке.

# Общие настройки
 
# Имя стенда, которое подставится в templates OpenShift
STAND_ID=<Подставить имя стенда латиницей без подчеркивания>
# Адрес реестра, используются в секции image template OpenShift
DOCKER_REGISTRY=registry.ca.sbrf.ru/sigma/ci00641491/ci01072091_htm
 
# Нaстройки для htm-app
 
# Профиль для запуска htm-app. Для тестовых стендов - dev, в целевом варианте - оставить пустым
SPRING_PROFILE=<Подставить профиль>
# Имя пользователя БД, обычно htm-admin
POSTGRE_USER=htm-admin
# jdbc url до БД или кластера PostgreSQL, для BOSTON - jdbc:posgresql://10.56.143.36:5432/htmbd
JDBC_URL=jdbc:posgresql:<Подставить адрес БД или кластера>
# адрес htm-bridge (htm-bribge-<stand_id>-<имя namespace>.apps.<имя кластера OpenShift> Для BOSTON = htm-bribge-boston-ci00636574-idevgen-bpmift.apps.dev-gen.ca.sbrf.ru
HTMBRIDGE_URL=<Подставить URL>
 
# URL SPAS - интеграция со SPAS. для BOSTON - https://str-vat-app0273.vm.mos.cloud.sbrf.ru:8443/spas/rest
SPAS_SERVER_URL=<Подставить URL>
 
# URL SUDIR - интеграция с СУДИР для корректного логаута приложения. для СТ и ИТФ SUDIR_BASE_URL=https://sudpprb-ift.delta.sbrf.ru
SUDIR_BASE_URL=<Подставить URL> #старая версия, заменим на LOGOUT_URL с 1.1.7(?)
LOGOUT_URL=https://sudpprb-ift.delta.sbrf.ru/pkmslogout # новая переменная для унификации поставки в гостех
 
# Настройки для htm-portal
 
# URL backend - htm-app без http, htm-app-<STAND_ID>-<NAMESPACE>.apps.<OPENSHIFT_DOMAIN> для BOSTON=htm-app-boston-ci00636574-idevgen-bpmift.apps.dev-gen.ca.sbrf.ru
HTMAPP_URL=<Подставить URL>
 
# Настройки для htm-bridge-app
 
# Профиль для запуска htm-app. Для тестовых стендов - mockspas
BRIDGE_SPRING_PROFILE=<Подставить профиль>
# URL backend - htm-app c указанием протокола http://htm-app-<STAND_ID>-<NAMESPACE>.apps.<OPENSHIFT_DOMAIN> для BOSTON=htm-app-boston-ci00636574-idevgen-bpmift.apps.dev-gen.ca.sbrf.ru
HTMAPP_URL_FULL=<Подставить URL>
# URL envoy, размещенного на стенде - http://mmt-envoy-<NAMESPACE>.apps.<OPENSHIFT_DOMAIN>/pprb-mmt, для BOSTON - http://mmt-envoy-ci00636574-idevgen-bpmift.apps.dev-gen.ca.sbrf.ru/pprb-mmt
ENVOY_URL=<Подставить URL>
# Логин тестового пользователя бриджа, для тестовых стендов sbt-test, в целевом варианте - логин юзера созданного в СПАС
TECH_USER_LOGIN=<Подставить логин>
# Логин тестового пользователя bpm, kermit
BPM_TECH_USER=<Подставить логин>
 
 
# Параметры для конфигурационных файлов MMT Proxy
# Имя namespace в который разворачиваем
#NAMESPACE=ci00636574-idevgen-bpmift # - берется из Jenkins job
# адрес control-plane (<имя сервиса control-plane>.<имя namespace control-plane>.svc.cluster.local)
CONTROL_PLANE=control-plane-kb.ci00641491-idevgen-mmt-proxy-project.svc.cluster.local
# порт control-plane
CONTROL_PLANE_PORT=8888
# брокеры Kafka логгер
BROKERS=tzuku1.delta.sbrf.ru:9093,tzuku2.delta.sbrf.ru:9093,tzuku3.delta.sbrf.ru:9093,tzuku4.delta.sbrf.ru:9093,tzuku5.delta.sbrf.ru:9093
# Имя кластера OS
CLUSTER_NAME=dev-gen
# Адрес модуля ММТ-прокси envoy в docker registry
MMT_PROXY_ENVOY_IMAGE_DOCKER_LINK=registry.ca.sbrf.ru/pprb-dev/ci01139494_mmt_dev/envoy
# Версия модуля ММТ-прокси envoy  в docker registry
MMT_PROXY_ENVOY_IMAGE_VERSION=rhel8-rotate
 
# Настройки для sidecar логгера
# Адрес сервиса логгера для стенда. https://confluence.ca.sbrf.ru/pages/viewpage.action?pageId=2718859666
# BOSTON без шифрования logger-endpoint-http-ci00641491-idevgen-logger-ift.apps.dev-gen.ca.sbrf.ru
serviceHostname=<Подставить адрес сервиса>
# Порт сервиса - 80 или 443
servicePort=<Подставить порт сервиса>
# Адрес модуля fluent-bit в docker registry
FLUENT_BIT_IMAGE_DOCKER_LINK=registry.ca.sbrf.ru/sigma/pprb/ci00641491/ci02469991_logger/fluent-bit
# Версия модуля fluent-bit в docker registry
FLUENT_BIT_IMAGE_VERSION=1.4.5
# Адрес кластера. При установке через Install_EIP подставляется автоматически, в случае ручной установки переменную необходимо раскомментировать и заполнить
# OPENSHFT_CLUSTER = <адрес кластера>
 
#Параметры для конфигурационных файлов ОТТ tasklistplatform4
#
OTT_AUTHORIZATION_ENABLED=true
#Список серверов OTT через запятую. Порт (8080 или 8443) должен соответствовать протоколу (http или https), указанному в ott.service.url
OTT_CLIENT_HOSTS=
# URL сервиса OTT. Используется встроенным в клиент OTT программным БН как шаблон для формирования ссылок при вызове серверов OTT, указанных в параметре ott.client.hosts
OTT_SERVICE_URL=http://ott-service:8080/ott-service/rest/token
#
OTT_SERVICE_HOSTS=
# Путь к хранилищу с сертификатом сервиса OTT
OTT_TRUST_STORE_PATH=/home/jboss/secrets/sup_ott_public.p12 #необходимо заменить имя сертификата
# Путь к хранилищу с OTT-сертификатом приложения/namespace
OTT_CERTSTORE_PATH=/home/jboss/secrets/tasklistplatform4.p12
# Атрибут контекста авторизации, в котором передается тип запрашиваемого токена
OTT_TOKEN_TYPE_ATTRIBUTE_ID=urn:sbrf:names:pprb:1.0:token:type
# Атрибут контекста авторизации, в котором передается идентификатор приложения/namespace в OTT
OTT_MODULE_ATTRIBUTE_ID=urn:sbrf:names:pprb:1.0:module:id
# OTT Authorization realm
OTT_AUTHZ_REALM=mmt
# Версия протокола TLS для подключения к серверам OTT
OTT_CLIENT_TLS=TLSv1.2
# Идентификатор приложения/namespace в OTT
OTT_MODULE_ID=tasklistplatform4
#
OTT_SERVICE_CERT_ALIAS=tasklistplatform4
#Тип хранилища
OTT_CERTSTORE_TYPE=PKCS12
###############FROM ORIGINAL application.properties
HTM_BRIDGE_KEYCLOACK_ENABLED=false
HTM_BRIDGE_SERVER_PORT=8086
HTM_BRIDGE_MODULE_ID=tasklistplatform4
   
###
### Дополнительные параметры для ott-ingress-sidecar-settings
# идентификатор приложения в OTT с учетом регистра
OTT_MODULE_ID_HTM_APP=htm-app
# module-id в нижнем регистре
OTT_CLIENT_CERT_ALIAS=htm-app
# в интсрукции от ОТТ равен ott-service, уточнить, как правильно!
OTT_SERVICE_CERT_ALIAS_HTM_APP=htm-app
# путь к keystore с сертификатом и секретным ключом приложения htm-app
OTT_CERTSTORE_PATH_HTM_APP=/home/jboss/secrets/htm-app.p12
# версия метода авторизации, актуально для версии образа 4.0.4 и выше
OTT_AUTHZ_VERSION='1.0'
# 4 параметра для версий 4.1.3 и выше
OTT_HTTP_PORT=
# анонимный режим, для включения необходимо выставить в 'true', актуально для версии образа 4.1.3 и выше
OTT_ANONYMOUS_REQUESTS_ENABLED=
OTT_CLIENT_DEFAULT_REALM=mmt
OTT_CLIENT_MMT_RESOURCE_ATTRID=scope
  
###Параметры для ISTIO
  
#включение sidecar istio прокси в pod с app - пока не включаем в дистр, есть проблемы с разрешением имен
#ISTIO_INJECT_HTM_APP=true
#включение sidecar istio прокси в pod с бриджем
#ISTIO_INJECT_HTM_BRIDGE=true
  
# В общем случае имя проекта в который разворачиваем
PROJECT_NAME=
# имя control-panel для соответствующего стенда. Можно посмотреть в Network Policies/Istio Mesh
CONTROL_PANEL=
# ссылка на образ istio прокси (в формате registry.redhat.io/openshift-service-mesh/proxyv2-rhel8:1.1.3-2)
PROXY_IMAGE=registry.redhat.io/openshift-service-mesh/proxyv2-rhel8:1.1.3-2
# ссылка на образ sidecar ОТТ
OTT_PROXY_IMAGE=registry.ca.sbrf.ru/sigma/pprb/ci00641491/ci01125613_ott/ott-client-api-v2:4.0.4
# Кластер OpenShift, в который разворачиваем, для стендов СТ и ИФТ это dev-gen.ca.sbrf.ru
OPENSHIFT_HOST=
  
# Режим работы ingress MUTUAL/SIMPLE
INGRESS_MODE=MUTUAL
# Порт, по которому работает htm-app
HTM_APP_SERVICE_PORT=8085
# URL сервера SPAS без порта - для конфигурационных файлов istio
SPAS_SERVER_URL_ISTIO=tkli-pprb0945.vm.mos.cloud.sbrf.ru # в данном примере хост со стенда SUBEB, необходимо скорректировать
# HTTP PORT по которому обращаемся на сервер СПАС, egress завернет его на 8443
SPAS_SERVER_PORT_ISTIO_HTTP=8080
SPAS_SERVER_PORT_ISTIO_HTTPS=8443
# URL серверов OTT без порта - для конфигурационных файлов istio
OTT_SERVER_1_URL_ISTIO=tkli-pprb0916.vm.mos.cloud.sbrf.ru # в данном примере хост со стенда SUBEB, необходимо скорректировать
OTT_SERVER_2_URL_ISTIO=tkli-pprb0917.vm.mos.cloud.sbrf.ru # в данном примере хост со стенда SUBEB, необходимо скорректировать
# HTTP PORT по которому обращаемся на сервер OTT, egress завернет его на 8443
OTT_SERVER_PORT_ISTIO_HTTP=8080
OTT_SERVER_PORT_ISTIO_HTTPS=8443
###переопределить порт servicePort в os.props на 7070
# Порт сервиса приема событий - 80 для http или 443 для http
servicePort_https=443
# внутренний порт egress
EGRESS_INTERNAL_PORT=8080
# протокол работы внутреннего порта egressа
EGRESS_INTERNAL_PROTOCOL=HTTP
# Порт подключения к БД из параметра JDBC_URL
POSTGRES_PORT=5433 #  скорректировать порт
# порт для брокеров Kafka логгер из параметра BROKERS
BROKERS_KAFKA_PORT=9093

Настройка os_yaml_dirs.conf (опционально)#

На данный момент все template OpenShift расположены в дистрибутиве, в каталоге — config/openshift. Этот каталог необходимо указать в файле os_yaml_dirs.conf:

/config/openshift
# при поставке с istio и ОТТ нужно добавить каталог с конфигурационными файлами istio
/config/openshift/Istio
/config/openshift/ott_sidecar

Подготовка секретов#

Вся «чувствительная» информация - пароли, сертификаты и т.п. в OpenShift хранится в Secrets.

Для работы TaskList Platform V Flow необходимо создать следующие Secrets:

  • db-secret — секрет для передачи Java опций с паролем от БД, и другой "чувствительной" информацией в htm-app;

  • bridge-secret — (опционально) секрет для передачи Java опций с "чувствительной" информацией в htm-bridge (пароль тех юзера бриджа);

  • 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;

  • htm-app-ott-certs - (опционально)секрет с сертификатами ОТТ htm-app;

  • htm-app-ott-passwords - (опционально) секрет с паролями для сертификатов ОТТ htm-app;

  • tasklistplatform4-ott-certs - (опционально) секрет с сертификатами ОТТ tasklistplatform4 (htm-bridge);

  • tasklist-certs-bd - секрет с клиентскими сертификатами для работы с БД по SSL.

Алгоритм подготовки секретов OSE, которые будут устанавливаться job install_eip, подробно описан в инструкции.

Необходимо:

  • подготовить шаблон секрета;

  • вставить в него Java опцию/сертификаты, предварительно закодировать в base64;

  • завольтовать полученный конфиг секрета Jenkins job ANSIBLE_VAULT_file;

  • положить завольтованый секрет в репозиторий стенда, в каталог openshift/secret.

Закодировать в base64 можно следующим образом:

  • Для Windows можно воспользоваться утилитой git bash:

    • Создаем файл с содержимым которое нужно закодировать в base64, например password.txt;

    • bat base64.exe --wrap=0 password.txt > password.base64;

    • После выполнения команды в файле password.base64 будет закодированный пароль;

  • Для Linux:

    • base64 -w0 password.txt > password.base64.

Новый механизм автогенерации секретов в install_eip (опционально)

В проекте стенда в каталоге openshift/certs:

  1. создать каталог - его имя будет именем секрета;

  2. в каталог секрета добавить один или несколько файлов, которые станут содержимым секрета, т.о. чтобы имя файла стало именем ключа, а содержимое — значением;

  3. предварительно каждый файл необходимо завольтовать Jenkins job ANSIBLE_VAULT_file.

Т.е. не требуется подготавливать конфиг секрета и отдельно кодировать содержимое в base64 перед вставкой в конфиг.

Проблемы с которыми приходилось сталкиваться:

  1. при создании текстового файла, win всегда добавляет расширение .txt, которое попадает в имя ключа - необходимо дополнительно переименовывать файл;

  2. при вольтовании сертификата с расширением .crt Jenkins job, БД блокирует вложение письма и завольтованный сертификат не приходит на почту. Решение - изменение расширения на .txt до вольтования, и обратно на .crt после.

Пример механизма для секрета типа db-secret (c JVM опциями):

  1. перейти в каталог openshift/certs;

  2. создать каталог db-secret;

  3. создать файл extra_java_opts;

  4. в файл extra_java_opts добавить текст с опциями JVM: -Dspring.datasource.password=<Подставить ПАРОЛЬ_БД> -Dclipas.secret-key=<Подставить secret-key SPAS>;

  5. завольтовать файл Jenkins job и разместить его в openshift/certs/db-secter.

Т.о. при установке создастся нужный секрет в OpenShift проекте.

Пример механизма для секрета типа envoy-secret (с сертификатами):

  1. перейти в каталог openshift/certs;

  2. создать каталог envoy-secret;

  3. в созданный каталог положить предварительно завольтованные сертификаты:

    1. envoy.crt;

    2. envoy.key;

    3. root-ca.pem.

Т.о. при установке создастся нужный секрет в OpenShift проекте.

Шаблон секрета db-secret#
apiVersion: v1
data:
  extra_java_opts: <Подставить необходимые java_opts с паролем закодированные в base64>*
kind: Secret
metadata:
  labels:
    app: htm-app
  name: db-secret
type: Opaque
  • На текущий момент необходимые java_opts:

-Dspring.datasource.password=<Подставить ПАРОЛЬ_БД> -Dclipas.secret-key=<Подставить secret-key SPAS>

Шаблон секрета bridge-secret#
apiVersion: v1
data:
  extra_java_opts: <Подставить необходимые java_opts с паролем закодированные в base64>*
kind: Secret
metadata:
  labels:
    app: htm-bridge
  name: bridge-secret
type: Opaque
  • Необходимые java_opts:

-Dbridge.tech.user.password=<Подставить пароль техюзера бриджа, созданного в СПАСе> -Dott.trust.store.pwd=<подставить пароль> -Dott.certstore.pwd=<подставить пароль> -Dott.certstore.key.pwd=<подставить пароль>

Шаблон секрета envoy-secret#
kind: Secret
apiVersion: v1
metadata:
  name: envoy-secret
data:
  envoy.crt: >-
    <Подставить сертификат в base64>
  envoy.key: >-
    <Подставить сертификат в base64>
  root-ca.pem: >-
    <Подставить сертификат в base64>
type: Opaque
Шаблон fluent-bit-sct#
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
Шаблон htm-app-ott-certs#

Используется в установке основного приложения, поэтому при отсутствии необходимости ОТТ - требуется наличие пустого секрета-заглушки. Указать сертификаты ОТТ в формате p12. Имя truststore ОТТ для стенда может быть разное - требуется указать актуальное; дополнительно указывается в конфигурационном файле.

kind: Secret
apiVersion: v1
metadata:
  name: htm-app-ott-certs
data:
  <name_ott_public.p12>: >-
    <Подставить сертификат в base64>
  htm-app.p12: >-
    <Подставить сертификат в base64>
type: Opaque
Шаблон htm-app-ott-passwords#

Используется в установке основного приложения, поэтому при отсутствии необходимости ОТТ - требуется наличие пустого секрета-заглушки. Пароли для keystore ОТТ.

kind: Secret
apiVersion: v1
metadata:
  name: htm-app-ott-passwords
data:
  OTT_CERTSTORE_PRIVATE_KEY_PWD: <Подставить пароль в base64>
  OTT_CERTSTORE_PWD: <Подставить пароль в base64>
  OTT_TRUST_STORE_PWD: <Подставить пароль в base64>
type: Opaque
Шаблон tasklistplatform4-ott-certs#

Используется в установке основного приложения, поэтому при отсутствии необходимости ОТТ - требуется наличие пустого секрета-заглушки. Указать сертификаты ОТТ в формате p12. Имя truststore ОТТ для стенда может быть разное - требуется указать актуальное; дополнительно указывается в конфигурационном файле.

kind: Secret
apiVersion: v1
metadata:
  name: tasklistplatform4-ott-certs
data:
  <name_ott_public.p12>: >-
    <Подставить сертификат в base64>
  tasklistplatform4.p12: >-
    <Подставить сертификат в base64>
type: Opaque
Шаблон tasklist-certs-bd#

Используется в установке основного приложения, поэтому при отсутствии необходимости работы с БД по ssl - требуется наличие пустого секрета-заглушки. Можно использовать клиентский сертификат, переконвертированный в pk8.

kind: Secret
apiVersion: v1
metadata:
  name: tasklist-certs-bd
data:
  tls.crt: >-
    <Подставить сертификат в base64>
  tls.key: >-
    <Подставить сертификат в base64>
  tls.pk8: >-
    <Подставить сертификат в base64>
  CA.pem: >-
    <Подставить сертификат в base64>
type: Opaque
  • Для всех тестовых стендов используются одинаковые сертификаты, поэтому можно забрать из репозитория стенда BOSTON уже завольтованные секреты envoy-secret и fluent-bit-sct.

Получение сертификатов (опционально)#

Настройка установки портала на общий nginx#

  1. Архив со статикой портала включен в дистрибутив поставки и располагается в — /other/nginx/htm-portal-static-{version}.zip;

  2. Конфигурация locations nginx включена в дистрибутив поставки и располагается в — /other/nginx/htm-portal.conf.

Настройка автоматической загрузки ролевой модели#

  • Файл ролевой модели включен в дистрибутив поставки и располагается в — /other/roleModel/roleModel.xml.

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

Установка производится запуском job install_eip с выбором стенда и модуля, и указанием ссылки на дистрибутив.

Данный job скачивает дистрибутив из nexus-sbrf, параметризует template OpenShift и производит их доставку в проект OpenShift, в котором производится развертывание приложения.

Если конфигурация приложения была изменена, то OpenShift в соответствии с выбранной стратегией производит развертывание новой версии приложения.

Проконтролировать процесс развертывания можно следующим образом:

  • В проекте OpenShift перейти в раздел Workloads -> Deployments Configs и в интересующем dc, перейти через вкладку Pods на связанные ПОДы;

  • В связанном Pod можно посмотреть события (event) и логи (logs).

Настройка установки портала на общий nginx#

  • Архив со статикой портала включен в дистрибутив поставки и располагается в — /other/nginx/htm-portal-static-{version}.zip;

  • Конфигурация locations nginx включена в дистрибутив поставки и располагается в — /other/nginx/htm-portal.conf;

  • в action.xml необходимо указать стандартный action — deploy_nginx_default;

  • также необходимо указать параметры для nginx в файле — system_nginx_default.conf.

Пример system_nginx_default.conf:

ngix_path: "" # указать место расположение статики на nginx
nginx_conf_path: "" # указать место расположение пользовательских конфигурационных файлов на nginx
location_htm-portal: /htm-portal
alias_htm-portal: # указать место расположение статики на nginx
 
htmapp_url: #route на backend
 
# при использовании istio
proxy_ssl_name: # route на backend без указания протокола
proxy_ssl_server_name: 'on' # обязательно в кавычках
 
APP_WF:
   "htm_portal":
     fileName: 'htm-portal-*.zip'
     name: 'htm-portal'

Загрузка ролевой модели#

  • файл ролевой модели содержится в дистрибутиве;

  • в action.xml необходимо указать стандартный actionconfigure_spas.

Установка htm-portal#

При установке в OSE - поднимается pod с nginx и статикой.

Портал доступен по route - htm-portal-$stand_id-$namespace.apps.$openshift_cluster/htm-portal.

При старте портала ему необходимо передать адрес backend через переменную HTMAPP_URL (начиная с версии 1.1.4 URL включает в себя протокол (например, http://)).

Во временном варианте установка портала производится на общий nginx стенда.

Для игнорирования установки портала в OSE в репозитории стенда, в файле os_ignore.conf нужно указать имя template OpenShift — htm-portal-template.yaml.

Наименование locationhtm-portal, т.е. при работе через СУДИР ссылка будет иметь вид: SUDIR/react/htm-portal.

Стенд

URL

СТ КБ / SUPERB

http://sudpprb-ift.delta.sbrf.ru/react_st/htm-portal

ИФТ КБ / BOSTON

http://sudpprb-ift.delta.sbrf.ru/react/htm-portal

пример 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;
                }
                location /htm-portal {
                    alias           /usr/share/nginx/html/htm-portal/;
                }
 
                location /htm-portal/auth/ {
                    proxy_pass         http://$HTMAPP_URL/auth/;
 
                }
                location /htm-portal/v1/ {
                    proxy_pass         http://$HTMAPP_URL/v1/;
                }
                location /htm-portal/settings/ {
                    proxy_pass         http://$HTMAPP_URL/settings/;
                }
                location /htm-portal/actuator/ {
                    proxy_pass         http://$HTMAPP_URL/actuator/;
                }
    }
}

Установка htm-app#

Настройки, которые нужно передавать приложению для запуска можно посмотреть по ссылке

Статус работы приложения можно посмотреть по route

JAVA_OPTS которые передаются для запуска

Значение по умолчанию

CT

IFT (BOSTON)

-Dspring.profiles.active

${SPRING_PROFILE}

пустое значение

пустое значение

-DuserPath

/home/config/users.yaml

-Dspring.datasource.username

${POSTGRE_USER}

BPMS

htm-admin

-Dspring.datasource.driver-class-name=

org.postgresql.Driver

-Dspring.datasource.jdbc-url

${JDBC_URL}

jdbc:postgresql://tklid-pprb00657.vm.mos.cloud.sbrf.ru:5433/bdpprb

jdbc:postgresql://10.56.143.36:5432/htmdb

-Dspring.jpa.show-sql

true

-Dspring.jpa.hibernate.ddl-auto

validate

-Dspring.jpa.properties.hibernate.dialect

org.hibernate.dialect.PostgreSQL95Dialec

-Dlogging.json

-Dlogging.json.dir

/home/logs

-Dlogging.json.file

log.json

-Dstandin.enabled

false

-Dstandin.cloud.client.stub

true

-Dstandin.cloud.client.zoneId

test

-Dstandin.cloud.client.mmtProxyUrl

localhost

-Dstandin.cloud.client.kafka.bootstrapServers

localhost

-Dnode.id

htm-app-${STAND_ID}

htm-app-superb

htm-app-boston

-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

-Dauth.logoutUrl

${SUDIR_BASE_URL}/pkmslogout

https://sudpprb-ift.delta.sbrf.ru/pkmslogout

https://sudpprb-ift.delta.sbrf.ru/pkmslogout

JAVA_OPTS которые передаются через secret

-Dspring.datasource.password

***

***

-Dclipas.secret-key

***

***

С версии 1.1.4 конфигурация приложения задается через файл application.yml который идет в составе configMap в template OpenShift. В него перенесены все параметры ранее задававшиеся через JVM-опции.

JAVA_OPTS которые передаются для запуска

Значение по умолчанию

CT

IFT (BOSTON)

-Dspring.profiles.active

${SPRING_PROFILE}

пустое значение

пустое значение

-DuserPath

/home/config/users.yaml

-Dlogging.json

-Dlogging.json.dir

/home/logs

-Dlogging.json.file

log.json

Подключение БД#

####### КОНФИГУРАЦИЯ ОСНОВНОЙ БД
spring:
  datasource:
    username: ${POSTGRE_USER}
    driver: org.postgresql.Driver
    jdbc-url: ${JDBC_URL}
  jpa:
    show-sql: true
    hibernate.dll-auto: validate
    properties.hibernate.dialect: org.hibernate.dialect.PostgreSQL95Dialect

POSTGRE_USER — пользователь БД.

JDBC_URL — полный jdbc URL БД.

Пароль БД задается через JVM опцию в Secrets.

Установка htm-bridge-app (опционально)#

Настройки которые нужно передавать приложению для запуска можно посмотреть по ссылке.

Статус работы приложения можно посмотреть по route.

Для работы бриджа необходимо в СПАСе создать «тех пользователя» и назначить ему следующие права из ролевой модели htm-app.

JAVA_OPTS которые передаются для запуска

Значение по умолчанию

CT (SUBERB)

IFT (BOSTON)

-Dspring.profiles.active

${BRIDGE_SPRING_PROFILE}

пустое значение

пустое значение

-DuserPath

/app/config/users.yaml

-Dhtm.app.url

http://${HTMAPP_URL} new: ${HTMAPP_URL_FULL}

http://htm-app-superb-ci00641491-idevgen-htm-space-st.apps.dev-gen.ca.sbrf.ru

http://htm-app-boston-ci00641491-idevgen-htm-space-ift.apps.dev-gen.ca.sbrf.ru

-Dtransport.url.endpoint

${ENVOY_URL}

http://mmt-envoy-ci00641491-idevgen-htm-space-st.apps.dev-gen.ca.sbrf.ru/pprb-mmt

http://mmt-envoy-ci00641491-idevgen-htm-space-ift.apps.dev-gen.ca.sbrf.ru/pprb-mmt

-Dtransport.request.timeout.seconds

15

-Dbridge.tech.user.login

${TECH_USER_LOGIN}

htm_bridge_tech_user

htm_bridge_tech_user

-Dlogback.file.location

/home/logs/app-latest.log

-Dbpm.tech.user

${BPM_TECH_USER}

kermit

kermit

JAVA_OPTS которые передаются через secret

-Dbridge.tech.user.password

Созданный в СПАСе

Созданный в СПАСе

Настройка режима авторизации пользователей#

Авторизация и аутентификация может осуществляться в разных режимах в зависимости от настроек указанных при конфигурировании приложения.

Доступные режимы:

  • СУДИР + СПАС — аутентификация производится на стороне СУДИР, список пользователей и ролевая модель хранится в СПАС;

  • IAMProxy + СПАС — аутентификация производится через сервер IAMProxy, список пользователей и ролевая модель хранится в СПАС;

  • keycloak — аутентификация с помощью сервиса keycloak.

Информация о внешних сервисах:

Режим СУДИР/IAMProxy + СПАС#

В SPAS хранится состав полномочий для ролей, а также SPAS предоставляет механизм загрузки ролей в СУДИР/IAMProxy. Подробнее об интеграции со СПАС.

Пользователи и их роли хранятся и назначаются в СУДИР/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

Интеграция со SPAS#

Для интеграции со SPAS необходимо:

  • Включить в секрет db-secret JVM-опцию — -Dclipas.secret-key=<секретный ключ сервиса SPAS>;

  • Задать значение переменной в application.yml SPAS_SERVER_URL=<адрес rest сервиса SPAS на который будут отправляться запросы>.

####### КОНФИГУРАЦИЯ СПАС
clipas:
  spas-server-url: ${SPAS_SERVER_URL}

Адреса rest SPAS и secret-key обычно известны администраторам стенда, при указании значения есть особенности:

  • IP-адрес сервиса не совпадает с URL SPAS и часто представлен в формате https://xx.xx.xx.xx:8443/spas/rest;

  • IP-адрес сервиса необходимо указывать с использованием FQDN (доменного имени), т.к. запросы проходят через egress istio. Для этого IP-адрес нужно поменять на доменное имя Flyway на котором располагается сервис SPAS на стенде.

Интеграция с СУДИР/IAMProxy (опционально)#

Для корректного выхода из приложения (портала) при работе через СУДИР в backend при старте необходимо задать значение переменной в application.yml с URL СУДИР/IAMProxy — LOGOUT_URL.

####### СУДИР/IAMProxy
auth:
  logoutUrl: ${LOGOUT_URL}

Режим Keycloak#

Информация об учетных записях пользователей хранится в Keycloak.

В случае успешной аутентификации и авторизации пользователя, на стороне сервера будет сгенерирован JWT токен.

Подробнее о настройке режимов авторизации см. "Руководство по системному администрированию"

Параметры ОШ манифестов#

По умолчанию, при развертывании используются настройки описанные в ОШ манифестах. Данные параметры можно переопределить вручную на стенде при установке.

Переменные htm-app#

INCLUDE_HTM_APP_PARAMETERS

Переменные htm-bridge#

INCLUDE_HTM_BRIDGE_PARAMETERS

Переменные htm-portal#

INCLUDE_HTM_PORTAL_PARAMETERS

Переменные mmt-proxy envoy#

INCLUDE_ENVOY_PARAMETERS

Переменные istio-ingress#

INCLUDE_INGRESS_PARAMETERS

Переменные istio-ingress-ott#

INCLUDE_INGRESS_OTT_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

нет

Домен ОШ кластера

POSTGRES_PORT

6544

Внешний порт Postgresql на который будет отравляться трафик. Используется при 1 хосте БД

INTERNAL_POSTGRES_PORT

6062

Порт Postgresql со стороны istio egress. Используется при 1 хосте БД

POSTGRES_HOST

нет

FQDN хоста БД. Используется при 1 хосте БД

Интеграция с платформенными сервисами#

Аудит#

В связи с требованиями безопасности необходимо осуществлять передачу информации о произведенных действиях в АС Аудит.

Для настройки отправки сообщений в АС Аудит необходимо в файле application.yml определить следующие переменные:

audit: sync.timeout: connection-request: 500 connect: 500 read: 1000 async.timeout: connection-request: 5000 connect: 10000 read: 30000 retry-timeout: 60000 max-queue-size: 100

Название

Описание

Значение

audit.enabled

Разрешить запись в АС Аудит

true

audit.proxyUri

Идентификатор прокси-сервера аудита

https://proxyhost:8443

audit.proxyVersion

Версия протокола взаимодействия

v1

audit.openApiVersion

Источник для определения версии метамодели

v4

audit.ssl.enabled

Разрешить ssl соединение

true

audit.ssl.keystore.location

Расположение keystore

/opt/keystore.jks

audit.ssl.keystore.password

Пароль для keystore

psw

audit.ssl.truststore.location

Расположение truststore

/opt/truststore.jks

audit.ssl.truststore.password

Пароль для truststore

psw

audit.ssl.keyPassword

Пароль закрытого ключа

psw

audit.sync.timeout

Настройки таймаутов синхронного взаимодействия с Аудит

audit.sync.timeout.connection-request

Таймаут запроса на подключение

500

audit.sync.timeout.connect

Таймаут ожидания соединения

500

audit.sync.timeout.read

Таймаут ожидания чтения данных

1000

audit.async.timeout

Настройки асинхронного взаимодействия с Аудит

audit.async.timeout.connection-request

Таймаут запроса на подключение

5000

audit.async.timeout.connect

Таймаут ожидания соединения

10000

audit.async.timeout.read

Таймаут ожидания чтения данных

30000

audit.retry-timeout

Таймаут для повторной попытки отправки данных

60000

audit.max-queue-size

Максимально допустимый размер очереди для асинхронного режима

100

audit.multitenant

Режим работы сервиса Аудит (с поддержкой мультитенантности/ без поддержки мультитенантности). Поддержка мультитенантности осуществляется только в том случае, когда Engine также устанавливается в режиме multitenant или multiinstance

true/false

Взаимодействие производится через Rest.

Среда исполнения осуществляет отправку следующих данных для фиксации события в АС Аудит:

  1. Метамодель;

  2. Событие.

Вызываемое АПИ зависит от режима работы Аудит (с поддержкой мультитенантности/ без поддержки мультитенантности):

  • Регистрация метамодели. В режиме мультиинстанс регистрация метамодели должны быть произведена разово для каждого потребителя (каждого уникального resourceName):

    • http://audit2-client-proxy.apps.test-ose.ca.sbrf.ru/v1/metamodel;

    • http://audit2-client-proxy.apps.test-ose.ca.sbrf.ru/v1/rn/{rn}/metamodel;

  • Отправка события:

    • http://audit2-client-proxy.apps.dev-gen.sigma.sbrf.ru/v1/event;

    • http://audit2-client-proxy.apps.dev-gen.sigma.sbrf.ru/v1/rn/{rn}/event.

Метамодель

curl -X POST http://audit2-client-proxy.apps.test-ose.ca.sbrf.ru/v1/metamodel -d @proxy-metamodel.json -H "Content-Type: application/json"

Пример содержимого proxy-metamodel.json (метамодель):

{
  "metamodelVersion": "00001",
  "module": "test_proxy_module",
  "description": "Тестовый модуль для тестирования proxy-приложения",
  "events": [
    {
      "name": "test-name-1",
      "description": "Тестовое событие №1",
      "success": true,
      "mode": "speed",
      "params": [
        {
          "name": "test-name-11",
          "description": "Тестовый параметр 1 события 1"
        }
      ]
    }
  ]
}

Событие

curl -X POST http://audit2-client-proxy.apps.dev-gen.sigma.sbrf.ru/v1/event -d @proxy-event.json -H "Content-Type: application/json"

Пример proxy-event.json (событие):

{
  "metamodelVersion": "00001",
  "name": "test-name-1",
  "session": "test_user_ticket:1234567987987987",
  "module": "test_proxy_module",
  "createdAt": 1585198271185,
  "userLogin": "test-proxy-user",
  "userName": "Иванов Иван Иванович",
  "userNode": "proxy-audit",
  "params": [
    {
      "name": "test-name-11",
      "value": "Значение параметра 1 события 1"
    }
  ],
  "tags": [
  "tag 1",
  "tag 2",
  "tag 3"
]
}
Параметры фиксируемые в АС Аудит#

Метод

Описание

Base URI

post/usertasks/notifyassignee

Информирование о назначении пользовательской задачи на пользователя

bpm.sbrf.ru/system/v4

post/usertasks/notifyDischarge

Возвращение задачи в общую очередь

bpm.sbrf.ru/system/v4

post/usertasks/notifyComplete

Завершение пользовательской задачи

bpm.sbrf.ru/system/v4

post/usertasks/notifyAbort

Прервать пользовательскую задачу

bpm.sbrf.ru/system/v4

delete/deployment/{deploymentId}

Удаление пакета моделей процессов

bpm.sbrf.ru/user/v4

post/processes/activate

Публикация процессов определенных версий, снятых с публикации

bpm.sbrf.ru/user/v4

post/processes/suspend

Снятие активных процессов с публикации

bpm.sbrf.ru/user/v4

post/processes/{processId}/start

Старт процесса

bpm.sbrf.ru/system/v4 bpm.sbrf.ru/user/v4

post/instances/{instanceId}/message

Отправить сообщение

bpm.sbrf.ru/system/v4 bpm.sbrf.ru/user/v4

post/instances/{instanceId}/respond

Отправить триггерное сообщение для Receive Task

bpm.sbrf.ru/system/v4 bpm.sbrf.ru/user/v4

post/instances/retry

Перезапуск экземпляра процессов

bpm.sbrf.ru/system/v4 bpm.sbrf.ru/user/v4

post/instances/retryall

Перезапуск всех экземпляров процессов, удовлетворяющих условиям фильтров

bpm.sbrf.ru/user/v4

post/instances/{instanceId}/{executionId}/retry

Повтор шага экземпляра процесса

bpm.sbrf.ru/user/v4

post/instances/{instanceId}/terminate

Прерывание исполнения списка экземпляров процессов

bpm.sbrf.ru/user/v4

createDeployment

Смонтировать пакет

startClearHistory

Старт очистки истории

createClearHistoryJob

Создание job для очистки истории

clearHistoryCompleted

Очистка истории выполнена

shutdownStarted

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

Журналирование#

Протоколирование операций для их дальнейшего анализа осуществляется в следующую директорию:

-DloggingDir = home/logs
-DloggingJSONFile = log.json

Для отправки событий журнала в Logger, sidecar-контейнер должен быть подключен к тому же каталогу, что обеспечит ему возможность чтения и обработки событий.

Запись лога производится в json формате и требует подключения зависимости в pom.xml:

<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
</dependency>

Для работы интеграции htm-app с Logger необходимо:

  1. Включить логгирование в приложении:

    • -Dlogging.json;

    • -Dlogging.json.dir=/home/logs;

    • -Dlogging.json.file=log.json;

  2. Указать адрес и порт сервиса приема событий Logger на стенде в файле конфигурации стенда. Значения для конкретного стенда можно взять со страницы в Confluence:

    • serviceHostname;

    • servicePort.

Подробнее настройка взаимодействия с Logger описана в статье "Руководство администратора по запуску sidecar контейнера".

Интеграция с MMT (mmt-envoy) (опционально)#

В проекте OSE необходимо развернуть proxy mmt envoy.

Template OpenShift envoy входит в поставку дистрибутива и требует:

  1. Подготовку секретов с сертификатами:

    • envoy-secret — включает сертификаты envoy;

    • fluent-bit-sct — включает сертификаты подключения к брокерам кафки логгера;

  2. настройку стендозависимых параметров:

    • NAMESPACE — Имя namespace в который устанавливаем, необходимо взять из Jenkins job, при использовании install_eip можно не указывать;

    • CONTROL_PLANE — адрес control-plane (<имя сервиса control-plane>.<имя namespace control-plane>.svc.cluster.local) - Адреса подключений можно посмотреть на странице;

    • CONTROL_PLANE_PORT=8888 — порт control-plane;

    • BROKERS — брокеры Kafka логгер. адреса можно посмотреть на странице в Confluence;

    • CLUSTER_NAME — Имя кластера OS (в формате dev-gen или dev-gen2).

Для работы интеграции htm-bridge с envoy mmt необходимо в JVM опциях htm указать адрес envoy на стенде: -Dtransport.url.endpoint=<envoy_route>/pprb-mmt.

Получение сертификатов

Инструкция по MMT proxy от производителя Конфигурирование и развертывания MMT Proxy (Envoy). Настройка с подключением по mTLS.

Выпуск сертификата

  • Создать файл конфигурации для генерации с помощью OpenSSL;

  • Назвать файл config.cnf;

  • Сгенерировать для wildcard.

Пример:

Так как CommonName и DNS.1 должны быть равны адресу сервиса, то для wildcard отбрасываем один хост с конца адреса сервиса.

[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = req_ext
prompt              = no
  
[ req_distinguished_name ]
countryName                 = RU
stateOrProvinceName         = MOW
localityName               = MOW
organizationName           = SBRF
commonName                 = *.apps.dev-gen.ca.sbrf.ru
  
[ req_ext ]
subjectAltName = @alt_names
  
[alt_names]
DNS.1   = *.apps.dev-gen.ca.sbrf.ru

ВНИМАНИЕ! Данный конфиг приведен для тестовых стендов СТ ИФТ НТ. Для ПСИ и ПРОМ при генерации запроса на сертификат нужно вместо *.apps.dev-gen.ca.sbrf.ru указывать хост из route, по которому работает envoy ММТ Прокси

В командной строке, например в linux или в git bash, формируем запрос на сертификат(CSR). Первый случай, если отсутствует приватный ключ, второй — если используется существующий приватный ключ.

 openssl req -out envoy.csr -newkey rsa:2048 -nodes -keyout envoy.key -config config.cnf   #1
 openssl req -out envoy.csr -new -key envoy.key -config config.cnf                         #2

Регистрируем ЗНО по шаблону с номером 10001534 «Удостоверяющий центр сертификатов открытых ключей (международные криптоалгоритмы) (CI00163129)» пример «ЗНО0072879558», прикладываем файл *.csr. И указываем просьбу приложить корневые сертификаты. В решении получаем клиентский сертификат *.cer (формат DER), корневой «Test Root CA 2.cer» и сертификат «УЦ Sberbank Test Issuing CA 2.cer» - образец «ЗНО0130193446»

Меняем формат полученных сертификатов:

 openssl x509 -inform der -in envoy.cer -out envoy.crt
 openssl x509 -inform der -in Test\ Root\ CA\ 2.cer -out root-ca.pem
 openssl x509 -inform der -in Sberbank\ Test\ Issuing\ CA\ 2.cer -out issuing-ca.pem

Объединим корневой и УЦ сертификаты:

cat issuing-ca.pem  root-ca.pem > cert-chain.pem

и проверяем:

openssl verify -CAfile root-ca.pem cert-chain.pem
cert-chain.pem: OK

Создание секрета

Конвертируем сертификаты и ключ в base64:

base64 -w 0 envoy.crt > envoy.crt.b64
base64 -w 0 envoy.key > envoy.key.b64
base64 -w 0 cert-chain.pem > cert-chain.pem.b64

Создаём файл конфигурации для secret с именем envoy-secret.yml. В поля envoy.crt, envoy.key, root-ca.pem вставляем соответствующее сертификаты и ключи, преобразованные в base64. В поле root-ca.pem вставляем содержимое cert-chain.pem.b64:

kind: Secret
apiVersion: v1
metadata:
  name: envoy-secret
data:
  envoy.crt: >-
    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUc3akNDQk5hZ0F3SUJBZ0lLSG9WMmF3QUJBQUJ6cWpBTkJna3Foa2lHOXcwQkFRc0ZBREJqTVJJd0VBWUsKQ1pJbWlaUHlMR1FCR1JZQ2NuVXhGREFTQmdvSmtpYUprL0lzWkFFWkZnUnpZbkptTVJJd0VBWUtDWkltaVpQeQpMR1FCR1JZQ1kyRXhJekFoQmdOVkJBTVRHbE5pWlhKaVlXNXJJRlJsYzNRZ1NYTnpkV2x1WnlCRFFTQXlNQjRYCkRUSXdNVEF3T0RBMU1qazBPVm9YRFRJek1ERXhNREExTXprME9Wb3dYREVMTUFrR0ExVUVCaE1DVWxVeEREQUsKQmdOVkJBZ1RBMDFQVnpFTU1Bb0dBMVVFQnhNRFRVOVhNUTB3Q3dZRFZRUUtFd1JUUWxKR01TSXdJQVlEVlFRRApEQmtxTG1Gd2NITXVaR1YyTFdkbGJpNWpZUzV6WW5KbUxuSjFNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DCkFROEFNSUlCQ2dLQ0FRRUF5VkVGaXc0TGdNcUwvVDRsVG82SGE2bFEwdm41aG5qOUV0YW5NaUhyV3VzK2xPckMKOWNGcFQ0R0tLbmVveHk2QU5lK09qdUZZbGtubnVYS3Jkd3BMNUkyV1pZOGpwTFFOT0E2ZFBHa3RyZHNDaWxxZQpJZHRtTWNaVjlkNXhocU9ReGswNFV4MkZRaEEvNlJMZkNhVDJGVlU3M25RVXdzSzdrZzJ1d2ttRDB4a3N5WmNoCnhPTUxEOFUrZm5qS0tqa3YxUmFNNkg5WjFPYytWeUV3Uml1SURBd1Y5MTZidVR1TEQ1OG94bEpOYkoyb3BRVmcKQVdNMVZEY0xlRDhDbEFDdWpyYUpmQUl3ZWlJa0QydHIvU1ZSem8zcVZLSWpJeDBGcys5dFlYaGJjdzFWUW1XdgpSUVJId2QzZ2xFK05pcFB6UzNlOC93cmxlMDlqekhKb2JJbW15UUlEQVFBQm80SUNxVENDQXFVd0pBWURWUjBSCkJCMHdHNElaS2k1aGNIQnpMbVJsZGkxblpXNHVZMkV1YzJKeVppNXlkVEFkQmdOVkhRNEVGZ1FVL0lmOVA2UEEKWS9JQk9oaVRSbk5CV1RDcmpXa3dId1lEVlIwakJCZ3dGb0FVVVYvcXZpWWVUU0JZdkl0TEdxLzJCWXloZFRJdwpnZ0ZzQmdOVkhSOEVnZ0ZqTUlJQlh6Q0NBVnVnZ2dGWG9JSUJVNFpGYUhSMGNEb3ZMM0JyYVM1elltVnlZbUZ1CmF5NXlkUzl3YTJrdlkyUndMMU5pWlhKaVlXNXJKVEl3VkdWemRDVXlNRWx6YzNWcGJtY2xNakJEUVNVeU1ESXUKWTNKc2hvSEFiR1JoY0Rvdkx5OURUajFUWW1WeVltRnVheVV5TUZSbGMzUWxNakJKYzNOMWFXNW5KVEl3UTBFbApNakF5TEVOT1BWUldMVU5GVWxRdFZVSXNRMDQ5UTBSUUxFTk9QVkIxWW14cFl5VXlNRXRsZVNVeU1GTmxjblpwClkyVnpMRU5PUFZObGNuWnBZMlZ6TEVSRFBWVnVZWFpoYVd4aFlteGxRMjl1Wm1sblJFNC9ZMlZ5ZEdsbWFXTmgKZEdWU1pYWnZZMkYwYVc5dVRHbHpkRDlpWVhObFAyOWlhbVZqZEVOc1lYTnpQV05TVEVScGMzUnlhV0oxZEdsdgpibEJ2YVc1MGhrZG9kSFJ3T2k4dmFXNTBjR3RwTG1OaExuTmljbVl1Y25VdmNHdHBMMk5rY0M5VFltVnlZbUZ1CmF5VXlNRlJsYzNRbE1qQkpjM04xYVc1bkpUSXdRMEVsTWpBeUxtTnliRENCdmdZSUt3WUJCUVVIQVFFRWdiRXcKZ2E0d1ZBWUlLd1lCQlFVSE1BS0dTR2gwZEhBNkx5OXdhMmt1YzJKbGNtSmhibXN1Y25VdmNHdHBMMkZwWVM5VApZbVZ5WW1GdWF5VXlNRlJsYzNRbE1qQkpjM04xYVc1bkpUSXdRMEVsTWpBeUtERXBMbU55ZERCV0JnZ3JCZ0VGCkJRY3dBb1pLYUhSMGNEb3ZMMmx1ZEhCcmFTNWpZUzV6WW5KbUxuSjFMM0JyYVM5aGFXRXZVMkpsY21KaGJtc2wKTWpCVVpYTjBKVEl3U1hOemRXbHVaeVV5TUVOQkpUSXdNaWd4S1M1amNuUXdEQVlEVlIwVEFRSC9CQUl3QURBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFmRTNzVHcxZmVhdU42cUlvRmlKTkx5Q01kbFBoWGZ0a2Uzcm5nMytGCm5abHdWeisrZVp2UVNRS2hFNS9scU1UYzY4WVd0MXVBbjByZ2F6UGR4WDVnVjRWZnIxUkp3cEpwUG5qT1pUS0EKSGlMT2hWM1Z0SHpvbWpXN3JwZ0pmR2k2dDNTL3Fzb3RtaHJHSkJHbzEzY2ZUY2tsZy9aeTloNGdtejRaeUM4QQpGWENjd1lNS1cxaHB2dlh6RVE5b3cxMFZkWFVVZzljOFM0TW9YNWhraXA1dmZwSm14MGF1OW5Oc3BVOURtb2szClFiN1RVWXZHOUo1enl3Y2c2R0JURW5pbStvRnpsZDBJaFQ3K1JreW1mdTlEQzNyUkFjbVJrOW9IdmszbjNKdmEKWXVnY3NSenNYYjhMbG1WWkk4WEU0R282Z1FNbnNGMzA2RXM4NXBCRm13d01JMFdqTFJTTktUZWY1RFJzU0NQaApvQ3VJL2UyWGRKN2tLMVRBUmI5T25qc0w3NTNiUVNqZlpkakorQ1p6M0s5WXdRRU5OSUNrVmVDd3VjcDYvazJyClAzVHdaclcyVDg5NkhEYXFBNTdGSkdJNFU3Zkg5c2MwN3hDV04vTkVLeXBlNkhNZUtVQWlZUFJ1M1JERFNSZzAKOGNGU2Yxa2xBU0NGYVRsdVd1S0R2RU9oL2hDd1pmbGwyMFI4N0lOWHFXY2JaSlF1OUV3YS8zeXJ0b2ExSXg5aApJWHhmUDJPdjE4ZWRjT2pvallUTE1CMHQ5a0FoZldZVFZEZTBnYkpxbGd4L29pZ0dVL21VQ1RSMnh1b2dGbkphCnZiL3JiU0wzSytwVFJRM1RvcGhaYUY1Yks1MGp3QmxhVWI5aGpMNDB0Z25iVG9udmlRckpwSkM4V1RGNUtHUEIKMndJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
  envoy.key: >-
    LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRREpVUVdMRGd1QXlvdjkKUGlWT2pvZHJxVkRTK2ZtR2VQMFMxcWN5SWV0YTZ6NlU2c0wxd1dsUGdZb3FkNmpITG9BMTc0Nk80VmlXU2VlNQpjcXQzQ2t2a2paWmxqeU9rdEEwNERwMDhhUzJ0MndLS1dwNGgyMll4eGxYMTNuR0dvNURHVFRoVEhZVkNFRC9wCkV0OEpwUFlWVlR2ZWRCVEN3cnVTRGE3Q1NZUFRHU3pKbHlIRTR3c1B4VDUrZU1vcU9TL1ZGb3pvZjFuVTV6NVgKSVRCR0s0Z01EQlgzWHB1NU80c1BueWpHVWsxc25haWxCV0FCWXpWVU53dDRQd0tVQUs2T3RvbDhBakI2SWlRUAphMnY5SlZIT2plcFVvaU1qSFFXejcyMWhlRnR6RFZWQ1phOUZCRWZCM2VDVVQ0MktrL05MZDd6L0N1VjdUMlBNCmNtaHNpYWJKQWdNQkFBRUNnZ0VBYWhEdkM3bUZwQUNUU3dUUUlSaUZEdHN4UTBjRENhOTdIczdMWG1WeW0vOXYKaElRLzNiMWVYODVQWGxxWEtRSTkrS3pUZmtJS0szeWF3eUZBWjhLY0E3bjVjRjYvRjhycFlBeUxHVVlORkJsYwp1RXBRSUdSNDdtYWg2WjJlVUtLaTUyZk44alNPZmlVVGx4Z2pQUENWMnQyQ1lvemtWMHpFQ0lwKzljeEgwUkwxCnhzamc4YjRqbmdxaVJ2clNac0Y4ZDZqWmUzWnkwZ1c5ekJQR01xcmE3UTVmUU9qMlZzMnBneGdsdFJPY3drcmcKck9RT2ExcmVqMUNmTUZ1bnF6M0JmeEwrWVBuQlp4blRZZ2MzSjYyY1JYTXY4YnpRUVlDakI3Mkx1TE9WbVpkdwpIdXg0czdIS0t2L3NyN1I3VklTZ1EvRnhTeDBoYTYzbW1FeU1BdjkzRVFLQmdRRHlNdlZybkVRNHQ0Vk8xeTFuCnB4WXdEY3d5SHhscGlxbHlBeSt3WGkrVWRpTzNZUUpjWHNwSVBKaG1BUDVNazNuVzBvTmU0cUoyS2dVVktmU24KUnNEU25IRHJJU0FkZUdJSVcreUJmUTQ1TWh2bER4bHgyL0daVFBRNEt6RkFYbmtSR2hmU0l5cTFLVEdwZGcyWAo2bUlhSGlmelU1M0Y0WE01cUluWFhmdWJQUUtCZ1FEVXliSGlOVm1HOXZRRmNGa2dyYldGZ1RmRVBBclRQdUxsClRxVStkMmlqSHhoZmlxcXhtd3hyaTB4RTRzZ2xUNjIydzBCdW9VLzFFakhMbC9VclBwNU5KeU5SV2xONExoMU0Kb0tyQzZ1QnE5MDBnRk5jWW9LeEV0a2NjREFBaTNTVGJlY1haS0RVZldLNXBoWTUxSEVpOHRkQmx6am1HYWNVaQpiNEl3NWwvaWZRS0JnRTEvTkx3c0VrQTdxTElqYytuWXN1YkpZMjhlT0ZsbS92VDJSQW9nK1FSK0VNdWFoTkRkCm04Z2xhM1lvRnphVmNjVGxNeGZuV0tpS3BYbXlKUkJwT1VXcXZRN2ZXSkZWZGJqTEFSQWwzYWs3ZVdWL3dWcUgKVC9VSGhKVjhiSlAySnJMc01IY1N2WldlQ3IvNGdEejl5RW9uSUExaDBmZ0JQWWRUZ0ZlalFPRFpBb0dCQU14VQpjZkJhY29IYm1pK3UxcWMrcDFSdjVQRVhCdjRiSVI0NUN3eVU5WEhPWmtVNGp2akZmb08yMjZJNmN4OEJDRHE3Cis1OUFYOXRoZ1ZlVHIrVzYxNkFXdVI5aHNVMXlXc2crY0R1RDk4US9mVndWSndlTEltRkk5N2ZDL2s1OE5PeGMKWHRSTWU5YUIvZGx1V29HeWkxWks4TGNSOU1OUnhlOXZUSUZRZHpxeEFvR0FmS2d6OXpWRGJqMVBWMXpJOTJ2YQo5VlhlUVAreS9mRE14Q2dkb3ArMkJGQUlmdENSNnpBYnZqb05XZURLOFU3MFZNYWgxanp0UDVCWjVoZjdZRzM1CnVNUllHSzZzRk00dzJUWUpXdFMweWx2dFAybXBWMnBZc3hFajE3UkpnSVlkbVZHcWdaWXlVbmd3cUlnd2ViNHYKZm1tZjI1UEFnMVlPdDNGYzFDZXhxdUU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
  root-ca.pem: >-
    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUttRENDQ0lDZ0F3SUJBZ0lUR0FBQUFBUzVSUWR3QmJBWVFBQUFBQUFBQkRBTkJna3Foa2lHOXcwQkFRc0YKQURBWk1SY3dGUVlEVlFRREV3NVVaWE4wSUZKdmIzUWdRMEVnTWpBZUZ3MHhOakEzTVRVeE1qUTNORE5hRncweQpOREEzTVRVeE1qVTNORE5hTUdNeEVqQVFCZ29Ka2lhSmsvSXNaQUVaRmdKeWRURVVNQklHQ2dtU0pvbVQ4aXhrCkFSa1dCSE5pY21ZeEVqQVFCZ29Ka2lhSmsvSXNaQUVaRmdKallURWpNQ0VHQTFVRUF4TWFVMkpsY21KaGJtc2cKVkdWemRDQkpjM04xYVc1bklFTkJJREl3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQwpBUURPZTlQSmpTTXI0UUd2ZXN3a2VwMS83M2tDSE9tQWxQaVdvRThCanBwVyt1RGlidGM3eVdYS2lwRTRRZ2JxClhOejF1M295Nld5TFEzUEJBMlBQY2xnOE80MjV4Q0g4VmdiT1d6MEZtTTd2ZEZvTVlKR0xGcFZxOURFMVZFSEkKM01QM2xPdDV4aERVM0lWYUNIbk1EZGR4OG1GUzJSa1hOdkRCTGE1TkJmZ2UyVU01U3NsRVFST0pjM2Z1RlFtTApENEhSbGFKZStzZ09xbTNidXczYTVXVkdiYURHUThML2Uxa21SeVFhNzhJckhjYldGd2dlOWFXYkhhVVk0ZS91CkIxeis2RXpXdWFPRFJzamxycFhIL2R2ZzRYTHNWSkdsb3hRY3FnRmh2Ym1sM2ZjcWxQaFNXeWRpVUhuaW16SU8KSUxkUEQ5SEJJZnlPdVNEcElwazVXZUxYTkVKZS9pMEVvdGNsRUl5V3dXT2pVb0ZoM1ppSzZzZUVWYk1OWFdmdApOaUtyNlczYk5XK2tmc2VTT1VkZEFTSHhCejVXc1pRQW5pZ0x1d3dqVHIrazF4N1ZpN0Y4eFR6cDlKRHVCMmkrCjBlSzlDU29GTGpxK2ZIcXppVW1ORVgyeFRiSUpqZUpwNTExV3VqNWl2KzBpbWlyVUpKSkNiUkplZndlTzg0bFEKcG5oVnZzazR3WVkyQXVZT203MS9HL0JmUTN5eXB3cHJodUxOY0c1eVhaL1pUVzB5LzZqS21OTkxsdm5WNTZDSwpFbE9yMTN6NDI3SzZWSzdlSXdIWmdlUXBjVWtqYTN6VytjYmxyRnJ3Z2UrQmR1c3BOcU82ZG4vMkhhUDVjZm9jCjNVbitGMW5ZNVdodThSeHJibEVlY0YvNVpMemMxZzJKQzJwekRpd1RnNGZRUHdJREFRQUJvNElGalRDQ0JZa3cKRUFZSkt3WUJCQUdDTnhVQkJBTUNBUUV3SXdZSkt3WUJCQUdDTnhVQ0JCWUVGQktmZWVBLzRha20rQjBMTEFQTQpzdkdlVER0TE1CMEdBMVVkRGdRV0JCUlJYK3ErSmg1TklGaThpMHNhci9ZRmpLRjFNakFaQmdrckJnRUVBWUkzCkZBSUVEQjRLQUZNQWRRQmlBRU1BUVRBTEJnTlZIUThFQkFNQ0FZWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWYKQmdOVkhTTUVHREFXZ0JTZnNrMm42MC9MQ2trRVFkTW5LS3djeThNWFd6Q0NBbG9HQTFVZEh3U0NBbEV3Z2dKTgpNSUlDU2FDQ0FrV2dnZ0pCaGpkb2RIUndPaTh2Y0d0cExuTmlaWEppWVc1ckxuSjFMM0JyYVM5alpIQXZWR1Z6CmRDVXlNRkp2YjNRbE1qQkRRU1V5TURJdVkzSnNob0hHYkdSaGNEb3ZMeTlEVGoxVVpYTjBKVEl3VW05dmRDVXkKTUVOQkpUSXdNaXhEVGoxVVpYTjBVbTl2ZEVOQk1qVTJMRU5PUFVORVVDeERUajFRZFdKc2FXTWxNakJMWlhrbApNakJUWlhKMmFXTmxjeXhEVGoxVFpYSjJhV05sY3l4RFRqMURiMjVtYVdkMWNtRjBhVzl1TEVSRFBYTnBaMjFoCkxFUkRQWE5pY21Zc1JFTTljblUvWTJWeWRHbG1hV05oZEdWU1pYWnZZMkYwYVc5dVRHbHpkRDlpWVhObFAyOWkKYW1WamRFTnNZWE56UFdOU1RFUnBjM1J5YVdKMWRHbHZibEJ2YVc1MGhvRzliR1JoY0Rvdkx5OURUajFVWlhOMApKVEl3VW05dmRDVXlNRU5CSlRJd01peERUajFVWlhOMFVtOXZkRU5CTWpVMkxFTk9QVU5FVUN4RFRqMVFkV0pzCmFXTWxNakJMWlhrbE1qQlRaWEoyYVdObGN5eERUajFUWlhKMmFXTmxjeXhEVGoxRGIyNW1hV2QxY21GMGFXOXUKTEVSRFBYTmljbVlzUkVNOWNuVS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREOWlZWE5sUDI5aQphbVZqZEVOc1lYTnpQV05TVEVScGMzUnlhV0oxZEdsdmJsQnZhVzUwaGo5b2RIUndPaTh2WlhoMGNHdHBMbk5wCloyMWhMbk5pY21ZdWNuVXZRMlZ5ZEVWdWNtOXNiQzlVWlhOMEpUSXdVbTl2ZENVeU1FTkJKVEl3TWk1amNteUcKUEdoMGRIQTZMeTlwYm5Sd2Eya3VZMkV1YzJKeVppNXlkUzlEWlhKMFJXNXliMnhzTDFSbGMzUWxNakJTYjI5MApKVEl3UTBFbE1qQXlMbU55YkRDQ0FuY0dDQ3NHQVFVRkJ3RUJCSUlDYVRDQ0FtVXdRd1lJS3dZQkJRVUhNQUtHCk4yaDBkSEE2THk5d2Eya3VjMkpsY21KaGJtc3VjblV2Y0d0cEwyRnBZUzlVWlhOMEpUSXdVbTl2ZENVeU1FTkIKSlRJd01pNWpjblF3Z2JnR0NDc0dBUVVGQnpBQ2hvR3JiR1JoY0Rvdkx5OURUajFVWlhOMEpUSXdVbTl2ZENVeQpNRU5CSlRJd01peERUajFCU1VFc1EwNDlVSFZpYkdsakpUSXdTMlY1SlRJd1UyVnlkbWxqWlhNc1EwNDlVMlZ5CmRtbGpaWE1zUTA0OVEyOXVabWxuZFhKaGRHbHZiaXhFUXoxemFXZHRZU3hFUXoxelluSm1MRVJEUFhKMVAyTkIKUTJWeWRHbG1hV05oZEdVL1ltRnpaVDl2WW1wbFkzUkRiR0Z6Y3oxalpYSjBhV1pwWTJGMGFXOXVRWFYwYUc5eQphWFI1TUlHdkJnZ3JCZ0VGQlFjd0FvYUJvbXhrWVhBNkx5OHZRMDQ5VkdWemRDVXlNRkp2YjNRbE1qQkRRU1V5Ck1ESXNRMDQ5UVVsQkxFTk9QVkIxWW14cFl5VXlNRXRsZVNVeU1GTmxjblpwWTJWekxFTk9QVk5sY25acFkyVnoKTEVOT1BVTnZibVpwWjNWeVlYUnBiMjRzUkVNOWMySnlaaXhFUXoxeWRUOWpRVU5sY25ScFptbGpZWFJsUDJKaApjMlUvYjJKcVpXTjBRMnhoYzNNOVkyVnlkR2xtYVdOaGRHbHZia0YxZEdodmNtbDBlVEJaQmdnckJnRUZCUWN3CkFvWk5hSFIwY0RvdkwyVjRkSEJyYVM1emFXZHRZUzV6WW5KbUxuSjFMME5sY25SRmJuSnZiR3d2VkdWemRGSnYKYjNSRFFUSTFObDlVWlhOMEpUSXdVbTl2ZENVeU1FTkJKVEl3TWk1amNuUXdWZ1lJS3dZQkJRVUhNQUtHU21oMApkSEE2THk5cGJuUndhMmt1WTJFdWMySnlaaTV5ZFM5RFpYSjBSVzV5YjJ4c0wxUmxjM1JTYjI5MFEwRXlOVFpmClZHVnpkQ1V5TUZKdmIzUWxNakJEUVNVeU1ESXVZM0owTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFBREdLZXYKZWN0YzRpWmJWRDVzSGJtWDFDejZmZWVKcWwvWlBxQkp5alZMTG9KRkVMVkpud3dzaFU4V09kYWtKamVPeDdnMgprMnArdGJUdytoTnBtZ1loK2txcVI2cFRFbnR1aWdIWEMzbmNxWUc3VWxET0ZBS0ErNkVHUHBUeEVBb3kxY0ZECkpvMGRORks1ck96dlhEOGdiQ0VDNmpLQjc3YnFOWk44UjRqR2t2T2hUNDd0U0MwUG9OTXdpemV5S0RWc1ZkYVkKN0w0RHFnNFhzcFYrK29qcjhrKzEzdmVNRTNJK1JFb3ViWmxNd0pVbmx5QmtYRHdmUTYzNlRGemJCS3F3U2dYcQpsQkgwcnBLSVVmSjJtL093MVM2MVZWUVlzdWJiZjdCUlpIL2VPME53Qi9McUVLaEhvRlBydmFHai80Z3hIQUdKCktsOFppTzkzTGdjUFRqa1dMeGcvQ2lzK2V1aXB0K1RaLzBXd1hjWmhuZmpBempxL3ZRaWk3MDA1NEpaSUxiNjIKVlJaUi9jbW9JU0M2d0ZRM0d4a3pJQm5LdEdQeVFnQ2RrTCtLU0ZZaW1DcVYyanBlY3Bpa1V2ZzBzNEpva2ZWVApHd0ZxMG10VXB6M1l0SWp3clJwMkpzK2JtckNNdHBvWUx3RUovNXFUaG54TFEvM08rMHozQ2tsWDl2cm5hemVjCndsMG4xVkNhZWMyN2ZqRlNwRWdsQUJJQW1JbUNJYzRGSHVKcDllajNnd3BUYUNlYUtkRTR1R0VsTFd6aDhMM3UKREJpNi83NGdNdmNCSy9mUFRBVmMrZlcvM1pYYzJqTlUvMVkzaE4yNHE4RFpuYnRMQm5udUtIMXhKN1BnTTJYOApkUmU2eTZNTzdWQThFUmF2SjllWFNyOFdGdVhYeFZKQjliRjJCUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZEVENDQXZXZ0F3SUJBZ0lRWXJRK2hHYlFUcWxCS2NMdUxBajV1REFOQmdrcWhraUc5dzBCQVFVRkFEQVoKTVJjd0ZRWURWUVFERXc1VVpYTjBJRkp2YjNRZ1EwRWdNakFlRncweE5qQTNNVFV4TVRVek1EVmFGdzB6TWpBMwpNVFV4TWpBeU5UaGFNQmt4RnpBVkJnTlZCQU1URGxSbGMzUWdVbTl2ZENCRFFTQXlNSUlDSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF1L2YvWmlHTi8rVFpKaFdVSzI3Q3pWWUZuNHpwNXhOc1VEbzgKYTJLV3BVWG5zZ0IrQ2F5MHgzRStUV0UwNEdGZU44eWFvcC91SHRkSE8xMkpsY2lrL1JqcEp4bmg2TU95OEZzWApZMEZCL3hTWEdqNjNnTkdCQkhGOTc2U2VHRWg5QmVncVVkT20yV0NNWEROcEx0OEdmZkU1ZUJuNGRXbWNwZTIwCno0T1JCZmg5c2JaeHJrdW1WTDMrOFBpbUVBRnFqbmZOanRVdXdZZlNNOFZ3TlBjaStnK2JhenAzbGJybEgyZEoKbHZXS2N2RGpWSlBDWmxKZUFyZGJNOXBwb0dMc05jNDZvMTR2b0dUTXBGNDhSVitFam5vUHZONlh5VEVmYW11dgpER2JoMzNoei9WY2JtdStlcFgwVXZvKy9RcG9ub0Y0Y3oyTXlTMlRvZHdRc2Nmbno0L2JjTG04TEtoQ0puMi9tCndUbXVnNVVsMXVOeEp2cEVGTC9KZ1RrZlllNW1TQUlFbndTQmtqcENzSSt2UjN3dWFCL3M2K00rYk9JOVpXTE8KeHJTVlZIQVl2TFdQWUZERjBlWmxzaGZxT0xGaEwrWmUya2FYbi9YMTZxZ2I3cEFOMDZYRnVEdE56U29Za2RuMAoyOHdFcEJKNUVkdmRTczdOUzVPOGFaVkRId3BwamQvVVRqQlFCZGE1OENkNmlxM0VNN1oySW5KVjg3VHpXVXRJCjlybll2V3QxZzRmSFpnUjZUaWFWa2xXOG10ODlDMzhST0QvM2s2VURHL3pvUXRGeFM1cDR6bUdjaitER2tib1YKOFJLRkZXcVJ6WG9JN092c0FYZVlVV0lzM1RVRFNEL1pBanloTE0yR2pOOE1leHRab2hLYmtVNDFtTkNlSEdyWApRSGdEeUxrQ0F3RUFBYU5STUU4d0N3WURWUjBQQkFRREFnR0dNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEClZSME9CQllFRkoreVRhZnJUOHNLU1FSQjB5Y29yQnpMd3hkYk1CQUdDU3NHQVFRQmdqY1ZBUVFEQWdFQU1BMEcKQ1NxR1NJYjNEUUVCQlFVQUE0SUNBUUJMSUE1RDQyS2NWdWVDYVhnb0RhWStPNm1HcUZRTnhNQWJFaWdUMk5OOApueFNiVFpjN0tuU3pCaVg2aGxUZW9BTFJWSVcrZXVKdklpZTZ6OE4ra00xNk0vNmdCZUluaTVFRHFadzZqOEhMCnN0WTJXZHdLb1V1OGRwODJZQXcySXh5RHNqajdxRkZXdGM1U20vNDlUaWV3aEV4OTJHVlZwNnl4a2VCN0crVlAKVkxTZ0pWU1A3NWMzVHR0eFdzR1VmVklLdVl1Qjc0N05XWG9GN25GRHl0OE4yeW0yanRFZmhJRzhsL0RyVjJsZgpQb3hZZHhGWEVVcldqYlB0WHlyUTdSOEc5bm1zMWdCbU0vT1RocUFEbzRsRk44U2Q4MC9ETjV6RDIzOXBMcFExCndRdU9XOEZXejN6NXptMms2ZEcvNGJMb3FKSHdCMUFTb0xRbWw1RXF4Q2Npd3RLSXFETWNveW03Sm1MaHJyYUgKSHJiN3BmOWJ6TndnN01yWWdFRG4xSGJIc0VkeDZCbHJ3a1VnR1gxZUJpY2lSRFhDaVByQkptemM5a0huRDhPWQpoU0F1Q21aaVcwNFhlTDM5ak8raWZtSlg4ZlVNRkJHZE1VRUR5YmFMQlhZdGlZMnZ4YzV5elBRUlVkdURhVVJKClJUQ2c3WjBsRFdLZktZRzZENTR0Y1VzaGZ4Q0FSMExhazh2d0ErdGhXTkM3RGZTelEvOCtqN2JjSnhRb1B5alYKVGN3eDA1QlZ5Ky9yZk1uaU9xUk9DNlZ6M0ZaVkNZWWZwM3RDYWJCOWpTUXlyc3JONURzemMzdEpsYzgxbWpDSwpqZUZkQlRvOW5FS2ZKcjIxd0krRXJveFhlbE9rTFF0bnRwcEpKSEE4TFh4NG5MUVlWdWFINkFiTHZQaE85R0xrCjNnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
type: Opaque

Далее шифруем envoy-secret.yml Jenkins job, если установка будет производиться через INSTALL_EIP.

Затем добавляем шифрованный файл в репозиторий конфигурации установки соответствующего стенда и подсистемы в каталог - <openshift/secret>.

Секрет fluent-bit-sct.yaml для тестовых сред создается аналогичным образом и использует те же сертификаты, что и секрет envoy-secret.yml.

Добавление параметров для MMT Proxy в os.props.conf в репозиторий стенда

Добавить в репозиторий стенда набор параметров для MMT Proxy, ниже приведен пример для стенда ИФТ КБ Бостон. Параметры для других стендов можно узнать у администраторов полигона.

# Параметры для конфигурационных файлов MMT Proxy
# Имя namespace в который устанавливаем
NAMESPACE=ci00641491-idevgen-htm-space-ift
# адрес control-plane (<имя сервиса control-plane>.<имя namespace control-plane>.svc.cluster.local)
CONTROL_PLANE=control-plane-kb.ci00641491-idevgen-mmt-proxy-project.svc.cluster.local
# порт control-plane
CONTROL_PLANE_PORT=8888
# брокеры Kafka логгер
BROKERS=tzuku1.delta.sbrf.ru:9093,tzuku2.delta.sbrf.ru:9093,tzuku3.delta.sbrf.ru:9093,tzuku4.delta.sbrf.ru:9093,tzuku5.delta.sbrf.ru:9093
# Имя кластера
OSCLUSTER_NAME=dev-gen
# Адрес модуля ММТ-прокси envoy в docker registry
MMT_PROXY_ENVOY_IMAGE_DOCKER_LINK=registry.ca.sbrf.ru/pprb-dev/ci01139494_mmt_dev/envoy
# Версия модуля ММТ-прокси envoy
MMT_PROXY_ENVOY_IMAGE_VERSION=rhel8-rotate

Интеграция с Прикладным журналом (опционально)#

На текущий момент интеграция с ПЖ отключена.

Для отключения интеграции с ПЖ все настройки добавлены в application.yml

####### ОТКЛЮЧЕНИЕ ПЖ (временно)
standin:
  enabled: false
  cloud:
    client:
      stub: true
      zoneId: test
      mmt-proxy-url: localhost
      kafka.bootstrapServers: localhost

Генерация типовых конфигурационных файлов#

Так как на различных стендах может использоваться различное количество внешних хостов с которыми необходима интеграция, в состав дистрибутива включены наборы шаблонов для генерации однотипных 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

Адрес ingress внешнего сервиса

INTEGRATION_INGRESS_PORT

Порт ingress внешнего сервиса

При этом для работы с ПФ на стенде необходимо переопределить валидационные 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-plane с поддержкой RHSM 2.0.*;

  • Изменить в конфигурации стенда параметры:

    • CONTROL_PANEL - указать новый control-plane;

    • PROXY_IMAGE - указать ссылку на istio прокси envoy, для rhsm 2.0.По умолчанию для rhsm 2.0. используется - registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:51d82b560e467ec59a3b6625b04c31b86df5b4c10070a351d547cb6cf3f26591;

    • Скорректировать переопределенный на стенде egress-svc - labels, selector, status port;

    • Скорректировать валидационные фильтры - селектор, safe_regexp_match (пример в дистрибутиве);

    • При использовании конфигурационных файлов для внешних http интеграций, хранящихся на среде - задать порту в svc external (локальный сервис с коротким именем интеграции) имя порту (name: http-8080, при использовании порта 8080 для внутреннего порта egress http интеграций);

  • Дождаться переключения на новый control-plane, отключить текущие поды istio ingress/egress;

  • Развернуть новую версию, проверить работоспособность. При положительном исходе - удалить старые версии istio из проекта.

При переходе на rhsm 2 был осуществлён отказ от 2 ingress и теперь запросы и на пользовательскую и на системную апи используют единый ingress.

Обновление#

Обновление приложения выполняется посредством развертывания артефактов соответствующей версии.

Для того чтобы выполнить обновление, необходимо:

  1. Выполнить установку дистрибутива необходимой версии через Install_EIP

    • обновление должно быть произведено для трех модулей: htm-app, htm-bridge-app, htm-portal.

Процедура установки подробно описана в разделе Установка.

Принудительное удаление предыдущей версии не требуется.

Удаление#

При установке в OSE процедура удаления Platform V Flow TaskList представляет собой удаление собранного nameSpace в OpenShift.

Проверка работоспособности#

Проверить работоспособность компонента можно с помощью команды health check:

http://<URL>/actuator/health

URL - должен содержать IP адрес и порт развернутого стенда TaskList Platform V Flow.

В результате должно быть получено сообщение "status":"UP" и перечень данных о компонентах приложения и их актуальных статусах.

Откат#

Откат приложения на предыдущую версию выполняется посредством развертывания артефактов предыдущей версии.

Для того чтобы выполнить откат на предыдущую версию приложения:

  1. Выполнить установку дистрибутива предыдущей версии через Install_EIP

    • Откат должен быть произведен для трех модулей: htm-app, htm-bridge-app, htm-portal.

Процедура установки подробно описана в разделе Установка.

Часто встречающиеся проблемы и пути их устранения#

Основные сценарии связанные с администрированием TaskList Platform V Flow описаны в "Руководстве по системному администрированию".

Чек-лист валидации установки#

После установки необходимо проверить:

  1. Все запланированные при разворачивании pod поднялись успешно;

  2. Логи не содержат сообщений об ошибке старта компонента;

  3. Проверка health check проходит успешно.