Настройка интеграции со смежными сервисами#
Настройка интеграции со смежными сервисами происходит путем конфигурации параметров для конкретного внешнего сервиса в определенных ConfigMaps. Каждый смежный сервис имеет свой набор параметров:
Настройка интеграции с компонентом Аудит продукта Platform V Audit SE#
Для настройки интеграции сервиса Batch Tasks с компонентом Аудит:
в файле
tasks-server.confсконфигурируйте следующие параметры:
# Включение интеграции с сервисом Аудит: true/false
TASKS_SERVER_AUDIT_ENABLED=true
в файле
batch-tasks.istio.all.confсконфигурируйте следующие параметры:
# Хосты: порты внешних сервисов для ServiceEntry Egress
TASKS_SE_AUDIT_HOST=<!- заполните самостоятельно ->
# В TASKS_SE_AUDIT_PORT указывается нужный endpoint port.
TASKS_SE_AUDIT_PORT=<!- заполните самостоятельно ->
## Используемый протокол: tls/http
TASKS_SE_AUDIT_PROTOCOL=<!- заполните самостоятельно: tls/http ->
# MUTUAL/DISABLE в зависимости от протокола: MUTUAL для tls (для сервисов, обращение к которым выполняется через HTTPS (вызов от сервиса до Egress выполняется по HTTP, а от Egress до интегрируемого сервиса проксируется через HTTPS)), DISABLE для http
TASKS_SE_AUDIT_TLS_MODE=<!- заполните самостоятельно: MUTUAL/DISABLE ->
При необходимости внесения изменений в интеграцию сервиса Batch Tasks с внешними сервисами внесите соответствующие правки в файл batch-tasks.istio.all.conf, после чего выполните повторный запуск Jenkins Job Deploy Tools сервиса Batch Tasks согласно соответствующей инструкции.
Проверку успешности проведения интеграции сервиса Batch Tasks с внешними сервисами выполняйте в консоли сервиса, с которым выполняется интеграция.
Инструкция по включению/отключению работы health-check приведена в Руководстве системного администратора в разделе «Включение/отключение health-check для сервиса Аудит».
Примеры заполнения batch-tasks.istio.all.conf для интеграции с компонентом Аудит
Пример конфигурации параметров batch-tasks.istio.all.conf для внешнего компонента Аудит с различными endpoint:
HTTPS-endpoint
https://audit2-client-proxy.apps.dev-gen.xxxxx.ru:
TASKS_SERVER_AUDIT_ENABLED=true
TASKS_SE_AUDIT_HOST=audit2-client-proxy.apps.dev-gen.xxxxx.ru
TASKS_SE_AUDIT_PORT=443
TASKS_SE_AUDIT_PROTOCOL=tls
TASKS_SE_AUDIT_TLS_MODE=MUTUAL
# Общие для всех смежных сервисов параметры (указываются однократно)
TASKS_OTT_ENVOY_FILTER_PORT=8888
TASKS_EXT_SERVICE_EGRESS_PORT=9999
HTTP-endpoint
http://audit2-client-proxy.apps.dev-gen.xxxxx.ru:
TASKS_SERVER_AUDIT_ENABLED=true
TASKS_SE_AUDIT_HOST=audit2-client-proxy.apps.dev-gen.xxxxx.ru
TASKS_SE_AUDIT_PORT=80
TASKS_SE_AUDIT_PROTOCOL=http
TASKS_SE_AUDIT_TLS_MODE=DISABLE
# Общие для всех смежных сервисов параметры (указываются однократно)
TASKS_OTT_ENVOY_FILTER_PORT=8888
TASKS_EXT_SERVICE_EGRESS_PORT=9999
HTTP-endpoint
http://audit2-client-proxy.apps.dev-gen.xxxxx.ru:9080:
TASKS_SERVER_AUDIT_ENABLED=true
TASKS_SE_AUDIT_HOST=audit2-client-proxy.apps.dev-gen.xxxxx.ru
# Обратите внимание, что в TASKS_SE_AUDIT_PORT указывается нужный endpoint port.
TASKS_SE_AUDIT_PORT=9080
TASKS_SE_AUDIT_PROTOCOL=http
TASKS_SE_AUDIT_TLS_MODE=DISABLE
# Общие для всех смежных сервисов параметры (указываются однократно)
TASKS_OTT_ENVOY_FILTER_PORT=8888
TASKS_EXT_SERVICE_EGRESS_PORT=9999
Настройка в случае развертывания без компонента Аудит
Для настройки сервиса Batch Tasks без интеграции компонента Аудит в файле batch-tasks.istio.all.conf сконфигурируйте следующие параметры:
# Включение интеграции с сервисом Аудит: true/false
TASKS_SERVER_AUDIT_ENABLED=false
# Хосты: порты внешних сервисов для ServiceEntry Egress
TASKS_SE_AUDIT_HOST=xxx.xxx.xxx
# В TASKS_SE_AUDIT_PORT указывается нужный endpoint port.
TASKS_SE_AUDIT_PORT=443
## Используемый протокол: https/http
TASKS_SE_AUDIT_PROTOCOL=https
# MUTUAL/DISABLE в зависимости от протокола: MUTUAL для tls (для сервисов, обращение к которым выполняется через HTTPS (вызов от сервиса до Egress выполняется по HTTP, а от Egress до интегрируемого сервиса проксируется через HTTPS)), DISABLE для http
TASKS_SE_AUDIT_TLS_MODE=MUTUAL
Настройка интеграции с компонентом Объединенный мониторинг Unimon продукта Platform V Monitor#
Для настройки интеграции с компонентом Объединенный мониторинг Unimon установите сервис Объединенный мониторинг Unimon в соответствии с Руководством по установке на него.
Настройка интеграции с компонентом Журналирование продукта Platform V Monitor#
Выполнение настроек перед разворачиванием сервиса с новым типом интеграции (отправка трафика с лог-записями на прямую в Kafka logger вместо endpoint logger):
Выпустите клиентский ключ и сертификат:
logger_private-key.pemиlogger_cert.pem.В репозитории с настройками Deploy Tools в файле
fluent-bit.confпо пути:ansible/files/fluent-bit/<каталог сервиса>/замените весь блок [OUTPUT] со строкиName httpна новый блок:
[OUTPUT]
Name kafka
Match *
timestamp_key timestamp
Brokers <Хосты kafka logger>
Topics <Топик kafka logger>
rdkafka.sticky.partitioning.linger.ms 4000
rdkafka.queue.buffering.max.kbytes 5120
rdkafka.ssl.key.location /app/certs/logger/logger_private-key.pem
rdkafka.ssl.certificate.location /app/certs/logger/logger_cert.pem
rdkafka.ssl.ca.location /app/certs/logger/logger_cacerts.cer
rdkafka.security.protocol SSL
Укажите значения параметров hosts и топик Kafka Logger:
# Заполнить значениями <DNS kafka logger с указанием портов>, пример: stend-kafka-01.opsmon.xxx:ххх,stend-kafka-02.opsmon.xxx:ххх,stend-kafka-03.opsmon.xxx:ххх
Brokers <Хосты Kafka Logger>
# Топик Kafka Logger
Topics <Топик Kafka Logger>
В репозитории с настройками параметров сервиса в файле
custom_property.yaml, после блока хостов Kafka ПЖ, добавьте новый блок hosts Kafka Logger. Пример:
# Блок хостов Kafka Logger
logger_kafka_hosts:
- host: stend-kafka-01.opsmon.xxx
ip: xx.xx.xx.xx
egress_port: xxx
out_port: xxx
- host: stend-kafka-02.opsmon.xxx
ip: xx.xx.xx.xx
egress_port: xxx
out_port: xxx
- host: stend-kafka-03.opsmon.xxx
ip: xx.xx.xx.xx
egress_port: xxx
out_port: xx
Добавьте параметр с указанием пути до образа. Пример:
## Путь до образа fluent-bit
fluent_bit_registry_path: <путь до образа>
В репозитории с настройками в файле
batch-tasks.all.confпо путиconfig/parametersустановите флаг включения сервиса Журналирование:
# Флаг включения/отключения интеграции с сервисом Журналирование
LOGGER_ENABLED=true
В зависимости от интеграции с сервисом SecMan:
При наличии интеграции добавьте сертификаты и ключи в хранилище SecMan (подробнее о сертификатах приведено в разделе «Настройка интеграции с продуктом Secret Management System»).
При отсутствии интеграции добавьте пути до сертификатов и ключей в файл
ssl.conf.
Настройка в случае интеграции без компонента Журналирование
Для работы Batch Tasks без интеграции с компонентом Журналирование в репозитории с настройками в файле batch-tasks.all.conf по пути config/parameters установите флаг отключения:
# Флаг включения/отключения интеграции с сервисом Журналирование
LOGGER_ENABLED=true
Настройка интеграции с компонентом One-Time Password (OTP) / OTT#
Сервис Batch Tasks может быть развернут как с возможностью интеграции с продуктом OTT, так и без него.
В случае, если сервис Batch будет развертываться с OTT, то должны быть произведены соответствующие настройки OTT в рамках работ по настройке namespace в системе оркестрации контейнерами. Подробнее см. в разделе «Настройка окружения» → «Настройка OTT».
Настройка при интеграции с OTT
Для настройки интеграции сервиса Batch Tasks с OTT:
Добавьте настройки host и путь до образа OTT в файл
custom_property.ymlв репозитории сервиса по пути: /conf/inventory/custom_property.yml в блок:
ott_registry_path: <путь до образа OTT>
ott_hosts:
- host: <host сервера OTT>
port: <порт сервера OTT>
inner_port: <внутренний порт для маршрутизации Istio, выбирается самостоятельно>
В зависимости от количества hosts серверов OTT необходимо растиражировать блок. Пример приведен в файле.
В файле
batch-tasks.ott-sidecar.all.confсконфигурируйте адрес OTT сервера:
### Адрес OTT-сервера (в целевом варианте — FQDN). При заполнении в файле custom_property.yml нескольких блоков серверов OTT заполнение параметра должно быть в формате: host:inner_port. Пример: host1:inner_port1,host2:inner_port2,host3:inner_port3
OTT_SERVICE_HOSTS=<!- заполните самостоятельно ->
UI_SE_OTT_TLS_MODE=<!- заполните самостоятельно, например: MUTUAL ->
При необходимости внесения изменений в интеграцию сервиса Batch Tasks с внешними сервисами внесите соответствующие правки в batch-tasks.ott-sidecar.all.conf, после чего выполните повторный запуск Jenkins Job Deploy Tools сервиса Batch Tasks согласно соответствующей инструкции.
Файлы сертификатов OTT должны быть прописаны в ssl.conf:
# OTT
ssl.tasks.ott.client.crt=ansible/files/ssl/ott/batch-tasks.crt
ssl.tasks.ott.client.key=ansible/files/ssl/ott/batch-tasks.key
ssl.tasks.ott.ott-service=ansible/files/ssl/ott/ott-service.crt
ssl.tasks.ott.trustCa=ansible/files/ssl/ott/trustCa.crt
Проверку успешности проведения интеграции сервиса Batch Tasks с внешними сервисами выполняйте в консоли сервиса, с которым выполняется интеграция.
Пример заполнения для настройки интеграции с OTT приведен в файле batch-tasks.ott-sidecar.all.conf.
Настройка в случае развертывания без OTT
Для настройки сервиса Batch Tasks без интеграции с OTT в batch-tasks.ott-sidecar.all.conf сконфигурируйте следующие параметры:
## Конфигурирование параметров для интеграции с OTT
### Включение интеграции с OTT: true - интеграция включена; false - интеграция выключена
OTT_ENABLED=false
Настройка интеграции с компонентом Прикладной журнал#
Для настройки интеграции сервиса Batch Tasks с компонентом Прикладной журнал:
Заведите заявку на администраторов компонента Прикладной журнал на стенде на подключение ZONE_ID в конфигураторе со значением
TSK.Обратитесь к администраторам компонента Прикладной журнал для выпуска сертификатов:
server.keystore.jksиtrust.jks.Укажите значения вместо placeholders (placeholders заключены в двойные фигурные скобки
{{ }}).Добавьте настройки host в файл
custom_property.ymlв репозитории сервиса по пути: /conf/inventory/custom_property.yml в блок:
ja_kafka_hosts:
- host: <host сервера Kafka>
ip: xxx.xxx.xxx.xxx
inner_port: <внутренний порт для маршрутизации Istio, выбирается самостоятельно>
egress_port: <промежуточный порт для маршрутизации Istio, выбирается самостоятельно>
out_port: <порт сервера Kafka>
В зависимости от количества hosts серверов Kafka необходимо растиражировать блок. Пример приведен в файле.
Заполните в файле конфигурирования
batch-tasks.all.confпараметры прикладного ПЖ:
# Флаг включения заглушки ПЖ
AJ_STAND_IN_STUB_MODE_FLAG=<обязательно к заполнению, false - для интеграции с ПЖ, true - без интеграции с ПЖ>
# Сервер Kafka. При заполнении в файле custom_property.yml нескольких блоков серверов Kafka заполнение параметра должно быть в формате: host:inner_port. Пример: host1:inner_port1,host2:inner_port2,host3:inner_port3
AJ_KAFKA_BOOTSTRAP_SERVERS=<обязательно к заполнению>
# Зона ПЖ
AJ_STAND_IN_ZONE_ID=<обязательно к заполнению, например: TASK>
Настройка в случае развертывания без компонента Прикладной журнал#
Для настройки сервиса Batch Tasks без интеграции с компонентом Прикладной журнал в конфигурационном файле установите флаг: AJ_STAND_IN_STUB_MODE_FLAG=true
Настройка загрузки и сверки данных БД PostgreSQL#
Для загрузки и сверки данных в БД:
Убедитесь, что на стендах сервиса ПЖ установлен BSSI.
В основной БД (Main) создайте и предоставьте права на чтение пользователю
bssi_linkс использованием скриптаcreate_bssi_link.sql(данный и последующие скрипты расположены в дистрибутиве по пути:BAT-x.x.x-xxx-owned-distrib.zip/task-bin-x.x.x-xxx-distrib.zip/db/db-scripts-db/bssi/users).В репликационной БД (Stand-In):
создайте пользователя и схему
bssiс использованием скриптаcreate_bssi.sql;в схеме
bssiсоздайте процедуруtruncateTablesс использованием скриптаTruncateAllTablesInSchema.sql;предоставьте права пользователю
bssiна схему сервиса с использованием скриптаcreate_bssi.sql;предоставьте права пользователю
bssiна схемуbssiс использованием скриптаcreate_bssi.sql;
На сервере, где установлен BSSI, установите утилиты PostgreSQL: pg_dump, psql. Версии утилит должны быть равны или выше версии PostgreSQL.
Передайте администраторам ПЖ три системные пути относительно корня системы:
к bash, например:
/usr/bin/bash;к pg_dump, например:
/usr/bin/pg_dump;к psql, например:
/usr/bin/psql.
Сконфигурируйте файл валидации с таблицами для сверки. Файл конфигурации создается для одной из БД: Main или Stand-In (структура БД одинакова). Для этого:
заполните актуальными параметрами БД файл
generate-validate.envв папкеbssi(расположена по пути:BAT-x.x.x-xxx-owned-distrib.zip/task-bin-x.x.x-xxx-distrib.zip/db/db-scripts-db/bssi);запустите утилиту генерации
generate-validate-config.shв папкеbssi.
Для генерации файла сверки данных используется файл generate-validate-config-template.sql в папке bssi (файл в конфигурации не нуждается).
Дождитесь генерации файла сверки. Пример файла:
bssi-oracle-validate-dbtasks-1613627122.properties.Передайте администраторам ПЖ пути к БД, а также логин и пароль пользователя БД.
Далее пункты выполняются администраторами ПЖ.
Откройте в Конфигураторе ПЖ артефакт БС SI ORACLE.
В конфигураторе BSSI заполните пути к системным утилитам.
В конфигураторе BSSI добавьте новую схему.
Tip
Тип подключения — POSTGRES.
Перезапустите BSSI и АРМ ПЖ.
После перезапуска BSSI отображается новая схема в списке доступных схем для загрузки или сверки данных в БД.
Настройка интеграции с продуктом Secret Management System#
Принцип работы обновления секретов#
Период настройки задается на каждый секрет в vault-agent по формуле:
Math.max(minRenewal.getSeconds(),
lease.getLeaseDuration().getSeconds() - expiryThreshold.getSeconds())
где:
expiryThreshold(порог истечения срока действия), значение по умолчанию — 1 мин;LeaseDuration— значение из vault-agent для секрета, значение по умолчанию: для vault-engine-kv — 200 ч; для TTL — 10 с (10s);minRenewal— минимальное время опроса клиента, значение по умолчанию — 10 с.
Для установки времени опроса хранилища SecMan на наличие изменений в каждом хранилище SecMan добавьте пару "key-value". Например, для установки жизни токена равным 1 мин, введите: ttl=1m.
Настройка интеграции#
Для интеграции с Secret Management System (далее — SecMan):
В хранилище секретов перенесите все секреты из системы оркестрации контейнерами.
Все файлы с разрешением .crt, .pk8, .jks, .pem необходимо переносить в кодировке base64.
Наименование секрета в системе оркестрации контейнерами |
Наименование секрета в SecMan |
Содержимое |
Примечание |
|---|---|---|---|
batch-tasks-application-journal-certs |
journal-certs |
certstore.jks |
— |
batch-tasks-db-certs-secret |
db-certs |
postgresql.pk8 |
— |
secret-{{ fpConfig.fpi_name }}.4 |
db-secrets |
tasks.db.main.user, |
В системе оркестрации контейнерами данный секрет генерируется Jenkins Job Deploy Tools на основе файла distrib.yml |
istio-ingressgateway-ca-certs |
ingressgateway-ca-certs |
ca-chain.cert.pem |
— |
istio-ingressgateway-certs |
ingressgateway-certs |
tls.crt, |
— |
istio-egressgateway-ca-certs |
egressgateway-ca-certs |
ca-chain.cert.pem |
— |
istio-egressgateway-certs |
egressgateway-certs |
tls.crt, |
— |
batch-tasks-ott-certs |
ott-certs |
batch-tasks.crt, |
— |
batch-tasks-logger-certs |
logging-certs |
logger_cacerts.cer, |
— |
Заведите роль для доступа (роль
vaultпо наименованию проекта системы оркестрации контейнерами) и предоставьте права на хранилище для доступа к секретам.Настройте параметры для управления подключением в файле
batch-tasks.secman.all.conf.
Параметр SECMAN_ENABLED позволяет управлять включением/выключением интеграции с Secret Management System. При задании параметра в false — все относящиеся к SecMan аннотации, лейблы и т.д. не будут включены в манифесты. При SECMAN_ENABLED=false секреты будут включены в установку, монтироваться секреты будут средствами системы оркестрации контейнерами.
Возможные сценарии использования SecMan:
Использование SecMan в конфигурации KV-engine.
Использование SecMan в конфигурации KV-engine+DB-engine.
Интеграция с SecMan для pods Istio выполняется с использованием sidecar vault-agent, для прикладных pods — без sidecar vault-agent.
Использование SecMan в конфигурации KV-engine#
Предусловия:
в файле
batch-tasks.secman.all.confзаполнен блок с уровнем доступа;в файле
batch-tasks.secman.all.confвведено значение параметраSECMAN_URL.
Для использования SecMan в конфигурации KV-engine в файле batch-tasks.secman.all.conf установите значение переменных:
SECMAN_KV_CERTS_ISTIO=true;SECMAN_PKI_CERTS=false;SECMAN_KV_APP=true;SECMAN_DB_ENGINE_ENABLED=false.
Использование SecMan в конфигурации KV-engine+DB-engine#
Предусловия:
в файле
batch-tasks.secman.all.confзаполнен блок с уровнем доступа;в файле
batch-tasks.secman.all.confвведено значение параметраSECMAN_URL.
Для использования SecMan в конфигурации KV-engine+DB-engine:
В файле
batch-tasks.secman.all.confустановите значение переменных:
SECMAN_KV_CERTS_ISTIO=true;SECMAN_PKI_CERTS=false;SECMAN_KV_APP=true;SECMAN_DB_ENGINE_ENABLED=true;SECMAN_DB_ENGINE_ROLE_MAIN=<роль для основной БД>;SECMAN_DB_ENGINE_ROLE_SI=<роль для репликационной БД>;SECMAN_DB_ENGINE_BACKEND=<путь до DB-engine>.
Из переменной
SECMAN_CONFIG_IMPORTудалите контекстoptional:vault://{{SECMAN_NAMESPACE}}{{SECMAN_SECRETADDRESS}}/db-secrets.
Настройка приоритизации источников секретов#
Для организации поведения "fail-safe" существуют два источника получения секретов: kind: Secret и SecMan.
Для настройки приоритизации в файле batch-tasks.secman.all.conf укажите приоритет, где 0 — максимальный приоритет.
# Флаг включения завершения запуска сервиса, если выявлены ошибки при запуске: true/false
SECMAN_FAIL_FAST=false
# Приоритет получения секретов из kind: Secret (0/1)
SECMAN_SPRING_PRIORITY=1
# Приоритет получения секретов из Vault (0/1)
SECMAN_VAULT_PRIORITY=0
Принудительное применение секретов сервиса Batch Tasks#
Для принудительного применения секретов в терминале любого pod, например, tasks-server, выполните команду:
curl -X POST localhost:8080/actuator/secrets-refresh
Настройка PKI для сервиса Pangolin#
Для настройки PKI для сервиса Pangolin:
В файле
batch-tasks.secman.all.confзаполните значения параметров:
# Флаг включение/отключение PKI для прикладных Pods (true/false)
PKI_APP_ENABLED=false
# Путь до PKI
PKI_PATH=<Обязательно к заполнению, например: PKI/pki>
# Роль для получения клиентского сертификата БД
PKI_ROLE_POSTGRESQL_CRT=<Обязательно к заполнению>
# CN для клиентского сертификата БД
PKI_CN_POSTGRESQL_CRT=<Обязательно к заполнению>
# Время жизни сертификата
PKI_TTL_POSTGRESQL_CRT=<Обязательно к заполнению>
# Роль для получения корневого сертификата БД
PKI_ROLE_ROOT_CRT=<Обязательно к заполнению>
# CN для корневого сертификата БД
PKI_CN_ROOT_CRT=<Обязательно к заполнению>
# Время жизни сертификата
PKI_TTL_ROOT_CRT=<Обязательно к заполнению>
# Роль для получения клиентского ключа БД
PKI_ROLE_POSTGRESQL_KEY=<Обязательно к заполнению>
# CN для клиентского ключа БД
PKI_CN_POSTGRESQL_KEY=<Обязательно к заполнению>
# Время жизни ключа
PKI_TTL_POSTGRESQL_KEY=<Обязательно к заполнению>
Из переменной
SECMAN_CONFIG_IMPORTудалите контекстoptional:vault://{{SECMAN_NAMESPACE}}{{SECMAN_SECRETADDRESS}}/db-certs.
Настройка интеграции с продуктом Synapse Rate Limiter Service#
Для настройки интеграции с компонентом Synapse Rate Limiter Service (далее — SRLS) необходимо:
Настройте файл конфигурации
srls.all.conf(все параметры обязательны к заполнению), расположенный в дистрибутиве по пути:package/conf/k8s/base/customresources. Пример заполнения приведен в файле.При необходимости квотирования для каждого потребителя в конфигурационном файле
custom_property.ymlв блоке добавления заголовков заполните:
srls_headers:
- header: <Уникальный заголовок потребителя, например - batch-tasks>
name: <Метаданные для заголовка потребителя, например - simple>
unit: <Единица измерения лимитов, например - second>
value: <Величина квоты для запросов потребителя, например - 10>
Note
Для использования файла custom_property.conf.yml необходимо перенести содержимое файла inventory/custom_property.yml вручную, а файл inventory/custom_property.yml удалить вместе с каталогом.