Настройка интеграции с сервисными системами#
Ниже описана процедура интеграции с рекомендованным АО «СберТех» продуктами:
Platform V Audit SE (компонент AUDT);
Platform V Monitor (компонент LOGA);
Platform V Synapse Event Transfer Service (компонент EVTA);
Platform V Synapse Streaming Event Processing (компонент EVPT).
На усмотрение пользователя может быть настроена интеграция с аналогичным по функциональности продуктом от других производителей.
Элементы дистрибутива, содержащие файлы скриптов развертывания и управления, описаны в разделе Состав дистрибутива.
Настройка интеграции со смежными сервисами происходит в процессе конфигурации параметров в файле vars.yml. Подробнее в разделе Пример заполненного файла vars.yml.
Интеграция с компонентом SMBX продукта Platform V Synapse Messaging напрямую не осуществляется. При необходимости, можно настроить взаимодействие с компонентом SMBX через компонент EVTA.
1. Интеграция с компонентом AUDT продукта Platform V Audit SE#
Настройка интеграции компонента EVPC с компонентом AUDT продукта Platform V Audit SE производится в файле vars.yml, блок настроек:
epf:
audit: # блок настроек аудита
service:
# type: log # Вариант отправки событий аудита (http или log)
type: http # Вариант отправки событий аудита (http или log)
url.base: "http://ext-http.audit.example.ru"
url.event.path: "/v1/event"
url.metamodel.path: "/v1/metamodel"
ssl.enabled: "false"
ssl.keystore: "keystore.jks"
ssl.keystore.password: "password"
ssl.key.password: "password"
ssl.truststore: "truststore.jks"
ssl.truststore.password: "password"
ssl.protocol: "TLSv1.2"
ssl.verify.hostname: "false"
send.metamodel: "true"
metamodel.module: EVPC Stream Processor
metamodel.version: 1.0
redelivery.enabled: "true"
add.redelivery.headers: "true"
redelivery.buffers: "in-memory-buffer"
redelivery.in-memory-buffer.type: "queue"
redelivery.in-memory-buffer.max.size: "10k"
redelivery.in-memory-buffer.clear.logger.name: "memory"
request.timeout.ms: "30000"
2. Интеграция с компонентом LOGA продукта Platform V Monitor#
Настройка интеграции компонента EVPC с компонентом LOGA продукта Platform V Monitor производится в файле vars.yml, блок настроек:
epf:
logback: # блок настроек журналирования
level: info # Уровень вывода логов
# loggers: # Настройка логгеров
# - name: "ru.example.cep" # Наименование логгера
# level: debug # Уровень логирования. Возможные значения: info/warn/debug
# - name: "org.apache.kafka" # Наименование логгера
# level: warn # Уровень логирования. Возможные значения: info/warn/debug
# - name: "com.typesafe.akka" # Наименование логгера
# level: debug # Уровень логирования. Возможные значения: info/warn/debug
kafka:
topic: logstash
retries: 3 # Количество переиницилизаций продюсера
interval: 1000 # Интервал между переиницилизациями
multiplier: 1 # Множитель интервала переинициализации
never_block: true # блокировка работы приложения при недоступности Kafka (при true недоставленные сообщения в kafka отбрасываются)
discarding_threshold: 20 # процент свободного места в очереди отправки сообщений при достижении которого будут удаляться сообщения уровня TRACE, DEBUG, INFO
queue_size: 512 # размер очереди для отправки в Кафку
properties:
"bootstrap.servers": "hostname-1:9092,hostname-2:9092"
"client.id": "epf-cluster-test"
"config.providers": decode
"config.providers.decode.class": ru.sbt.ss.kafka.DecryptionConfigProvider
"config.providers.decode.param.security.encoding.key": file:ssl/secret.pass
"config.providers.decode.param.security.encoding.class": ru.sbt.ss.password.BaseEncryptor
"security.protocol": SSL
"ssl.endpoint.identification.algorithm": ""
"ssl.keystore.location": "ssl/epf.jks"
"ssl.truststore.location": "ssl/epf.jks"
"ssl.keystore.password": <password>
"ssl.truststore.password": <password>
"ssl.key.password": <password>
3. Интеграция с компонентом Apache Kafka продукта Platform V Synapse Event Transfer Service#
Настройка интеграции производится в файле vars.yml, блок настроек:
epf_defaults: # Блок настроек прессетов транспорта для обработчика, данные настройки будут использоваться в конфигурации обработчика по имени прессета
kafka_example:
type: kafka
bootstrap.servers: example1.ru:9092,example2.ru:9092
security.protocol: SSL
ssl.endpoint.identification.algorithm: "" # Отключение проверки хостнейма в сертификате, обязательно для стендов кафки
ssl.keystore.location: ${vault:ssl.keystore.location} # при использовании Vault
ssl.keystore.password: ${vault:ssl.keystore.password}
ssl.key.password: ${vault:ssl.key.password}
ssl.truststore.location: ${vault:ssl.keystore.location}
ssl.truststore.password: ${vault:ssl.keystore.password}
config.providers.vault.class: ru.sbt.ss.kafka.VaultConfigProvider
config.providers.vault.param.security.encoding.class: ru.sbt.ss.password.BaseEncryptor
config.providers.vault.param.security.encoding.key: file:ssl/secret.pass
config.providers.vault.param.ssl.vault.address: https://vault_address
config.providers.vault.param.ssl.vault.tls.enable: "true"
config.providers.vault.param.ssl.vault.tls.keystore.location: ssl/vault-client.jks
config.providers.vault.param.ssl.vault.tls.keystore.password: "{{ jks_password }}"
config.providers.vault.param.ssl.vault.tls.key.password: "{{ jks_password }}"
config.providers.vault.param.ssl.vault.tls.truststore.location: ssl/vault-client.jks
config.providers.vault.param.ssl.vault.tls.truststore.password: "{{ jks_password }}"
config.providers.vault.param.ssl.endpoint.identification.algorithm: ""
config.providers.vault.param.ssl.vault.auth.type: approle
config.providers.vault.param.ssl.vault.auth.role.id: 669dc918-***-158abc0247ac
config.providers.vault.param.ssl.vault.auth.secret.id: 298bde51-***-ba0f2ceced13
config.providers.vault.param.ssl.vault.pki.role.name: pki-role
config.providers.vault.param.ssl.vault.pki.common.name: evpc-dev
config.providers.vault.param.ssl.keystore.location: /tmp/vault-keystore.jks
config.providers.vault.param.ssl.truststore.location: /tmp/vault-truststore.jks
config.providers.vault.param.ssl.vault.secret.path: kv1/certstore
config.providers.vault.param.ssl.vault.engine.version: 1
config.providers.vault.param.ssl.vault.secret.key: key
config.providers.vault.param.ssl.vault.secret.keystore: <secret.keystore>
config.providers.vault.param.ssl.vault.secret.truststore: <secret.truststore>
config.providers.vault.param.ssl.vault.pki.email: email@example.com
config.providers.vault.param.ssl.vault.namespace: my_namespace
4. Интеграция с компонентом EVTA продукта Platform V Synapse Event Transfer Service#
Настройка интеграции компонента EVPC с компонентом EVTA продукта Platform V Synapse Event Transfer Service производится обязательно в двух файлах vars.yml (для компонента EVPC и компонента EVTA):
В файле vars.yml компонента EVPC, блок настроек:
epf_defaults:
grpc_fpss_example: # используется для параметра ${defaults.grpc_fpss_example} из *.conf
type: grpc
url: fpss://k2_simple.common.segment/system/testevent/1 # точка подключения в fpss формате (fpss://домен.федерация.сегмент/система/имя_события/версия)
host: reactive-stream-adapter-epfegress # имя сервиса egress адаптера
port: 8081 # порт сервиса egress адаптера
В файле vars.yaml компонента EVTA, обязательный набор параметров в блоке настроек:
reactive_stream_adapter:
# EVPC соединяется только по протоколу GRPC
type: grpc
# отключение механизма автоматического коммита сообщения при вычитке адаптером
autoCommit: false
# Включить механизм подтверждения получения/обработки сообщения со стороны EVPC
needInfoAboutAcknowledge: true
# Отключение механизма остановки Consumer при простое потока
useStorageTime: false
5. Получение значений параметров ansible из HashiCorp Vault#
Также возможно реализовать получение значений параметров ansible из HashiCorp Vault. Для этого при указании параметров в файле vars.yml вместо значений параметров используется специальный синтаксис. Например:
ansible_password: "{{ lookup('hashi_vault', 'url=*** namespace=*** auth_method=approle role_id=*** secret_id=*** secret=*** validate_certs=0') }}"
, где:
url– URL для подключения к HashiCorp Vault. Например: https://my.vault.address;namespace– используемый namespace;auth_method– метод аутентификации. Например: approle;role_id– используемый role.id;secret_id– используемый secret.id;secret– путь: ключ для получаемого секрета. Например:kv1/company/secret_keys:jks_password;validate_certs– проверка доверия сертификата HashiCorp Vault.
Параметры подключения и аутентификации запрашиваются у администраторов HashiCorp Vault.
В результате значение переменной ansible_password будет получено из HashiCorp Vault при запуске установки.
6. Интеграция с компонентом EVPT продукта Platform V Synapse Streaming Event Processing#
Настройка интеграции компонента EVPC с компонентом EVPT производится в файле vars.yml, блок настроек:
scheduler:
url: "localhost:8080" # Url, на котором запущен EVPT, в который будут добавляться задачи на срабатывание агрегации
timeout: 5000 # Тайм-аут ожидания ответа
flow.port: 9090 # Порт, на котором запущен сервер, принимающий вызовы от EVPT, для последующего срабатывания триггера
flow.host: 0.0.0.0 # Хост, на котором запущен сервер, принимающий вызовы от EVPT, для последующего срабатывания триггера
flow.advertisedPort: 9090 # Порт сервиса для callback от EVPT
flow.advertisedHost: localhost # Имя сервиса для callback от EVPT
Для того, чтобы вызов EVPT был защищенным, возможно использование параметров с префиксом scheduler..
Аналогично, чтобы внутренний сервер, принимающий вызовы от EVPT, для последующего срабатывания триггера был запущен с SSL-контекстом возможно использование параметров с префиксом scheduler.flow..