Руководство по установке#
Термины и сокращения#
Термин |
Определение |
|---|---|
АС |
Автоматизированная система |
БД |
База данных |
Завольтовать |
Зашифровать через 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.
Интеграция с реестром для пуллинга образов (опционально)#
В проекте 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, в которой размещена Jenkins job install_eip для того чтобы в проекте jenkins создать новый credentials с типом secret text. ID рекомендуется указать равным названию проекта в ose - т.к. у каждого проекта уникальный токен, в поле secret text вставить токен скопированный в п.3.
Id созданного credentials (читай название namespace) нужно будет указать в конфигурации install_eip.
Подготовка БД PostgreSQL SE#
Заказать КТС PostgreSQL с указанием компонентов:
Имя табличного пространства —
htm_space;Имя базы данных —
htmdb;Владелец БД — указать УЗ админа (сотрудник, который будет работать с первичной настройкой/подготовкой базы);
ТУЗ АС —
htm-admin;Имя схемы —
htmdb;
Если используется кластер, все команды должны выполняться только на
master node;Подключиться к PostgreSQL через pgadmin:
Запустить ПО pgadmin (откроется вкладка в браузере) с запросом мастер пароля (нужно ввести и запомнить пароль т.к. он будет запрашиваться всегда при открытии pgadmin);
В разделе Servers выбрать Add New Server, далее во вкладке General указать имя сервера (для отображения в списке серверов);
Открыть вкладку connection (указать ip/dns name сервера БД в поле host );
В поле port указать порт, который был указан в почте (обычно это 5432);
В поле Maintenance database указать название базы
htmdb;В полях username/password указать логин/пароль УЗ и выполнить подключение к базе;
Для выполнения переподключения к базе под другой УЗ, к примеру ТУЗ, необходимо нажать правой кнопкой на сервер и выбрать Disconnect, далее зайти в properties и указать необходимый логин/пароль;
После получения КТС необходимо выполнить:
подключение к БД через 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;
Проблемы с которыми приходилось сталкиваться:
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);
Дополнительные команды:
перечислить список схем:
sql 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_TaskList
Все настройки стендов хранятся в репозитории gitlab.
Есть три типа репозиториев, содержащих скрипты и конфигурации:
Тестовая ветка (DEV)
Данный репозиторий предназначен исключительно для отладки перед переносом в целевой репозиторий.
Для получения доступа к репозиторию и Jenkins job необходимо создать заявку в jira.
Репозиторий настроек подсистемы и стендов -
branch = masterФайл конфигурации —
configuration.xml.Целевая ветка (СТ ИФТ)
Ветка для настройки Pipeline в DPM и прохождения вплоть до ИФТ. Затем администраторы ПСИ сливают эту ветку с веткой ПСИ. Далее все нижеописанные шаги корректируются руками администраторов ПСИ.
Доступ к job не выдается, запуск только через DPM. Доступ к репозиториям есть у администраторов стендов.
Репозиторий скриптов
branch = DEV.Репозиторий настроек подсистемы и стендов —
branch = master.Файл конфигурации —
configuration.xml.ПСИ/Пром ветка (ПСИ/ПРОМ)
Ветка управляется администраторами ПСИ/ПРОМ вручную.
Для первоначальной установки модуля в 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:
создать каталог - его имя будет именем секрета;
в каталог секрета добавить один или несколько файлов, которые станут содержимым секрета, т.о. чтобы имя файла стало именем ключа, а содержимое — значением;
предварительно каждый файл необходимо завольтовать Jenkins job
ANSIBLE_VAULT_file.Т.е. не требуется подготавливать конфиг секрета и отдельно кодировать содержимое в base64 перед вставкой в конфиг.
Проблемы с которыми приходилось сталкиваться:
при создании текстового файла, win всегда добавляет расширение
.txt, которое попадает в имя ключа - необходимо дополнительно переименовывать файл;при вольтовании сертификата с расширением
.crtJenkins 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>;завольтовать файл Jenkins job и разместить его в
openshift/certs/db-secter.Т.о. при установке создастся нужный секрет в OpenShift проекте.
Пример механизма для секрета типа envoy-secret (с сертификатами):
перейти в каталог
openshift/certs;создать каталог
envoy-secret;в созданный каталог положить предварительно завольтованные сертификаты:
envoy.crt;
envoy.key;
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#
Архив со статикой портала включен в дистрибутив поставки и располагается в —
/other/nginx/htm-portal-static-{version}.zip;Конфигурация
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необходимо указать стандартныйaction—configure_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.
Наименование location — htm-portal, т.е. при работе через СУДИР ссылка будет иметь вид: SUDIR/react/htm-portal.
Стенд |
URL |
|---|---|
СТ КБ / SUPERB |
|
ИФТ КБ / BOSTON |
пример 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} |
||
-Dauth.logoutUrl |
${SUDIR_BASE_URL}/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-secretJVM-опцию —-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.
Среда исполнения осуществляет отправку следующих данных для фиксации события в АС Аудит:
Метамодель;
Событие.
Вызываемое АПИ зависит от режима работы Аудит (с поддержкой мультитенантности/ без поддержки мультитенантности):
Регистрация метамодели. В режиме мультиинстанс регистрация метамодели должны быть произведена разово для каждого потребителя (каждого уникального 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 необходимо:
Включить логгирование в приложении:
-Dlogging.json;-Dlogging.json.dir=/home/logs;-Dlogging.json.file=log.json;
Указать адрес и порт сервиса приема событий Logger на стенде в файле конфигурации стенда. Значения для конкретного стенда можно взять со страницы в Confluence:
serviceHostname;servicePort.
Подробнее настройка взаимодействия с Logger описана в статье "Руководство администратора по запуску sidecar контейнера".
Интеграция с MMT (mmt-envoy) (опционально)#
В проекте OSE необходимо развернуть proxy mmt envoy.
Template OpenShift envoy входит в поставку дистрибутива и требует:
Подготовку секретов с сертификатами:
envoy-secret— включает сертификаты envoy;fluent-bit-sct— включает сертификаты подключения к брокерам кафки логгера;
настройку стендозависимых параметров:
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.
Обновление#
Обновление приложения выполняется посредством развертывания артефактов соответствующей версии.
Для того чтобы выполнить обновление, необходимо:
Выполнить установку дистрибутива необходимой версии через
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" и перечень данных о компонентах приложения и их актуальных статусах.
Откат#
Откат приложения на предыдущую версию выполняется посредством развертывания артефактов предыдущей версии.
Для того чтобы выполнить откат на предыдущую версию приложения:
Выполнить установку дистрибутива предыдущей версии через
Install_EIPОткат должен быть произведен для трех модулей:
htm-app,htm-bridge-app,htm-portal.
Процедура установки подробно описана в разделе Установка.
Часто встречающиеся проблемы и пути их устранения#
Основные сценарии связанные с администрированием TaskList Platform V Flow описаны в "Руководстве по системному администрированию".
Чек-лист валидации установки#
После установки необходимо проверить:
Все запланированные при разворачивании pod поднялись успешно;
Логи не содержат сообщений об ошибке старта компонента;
Проверка health check проходит успешно.