Установка#

Выбор способа установки#

Установка дистрибутива производится с использованием одного из вариантов:

  • Ручная установка без использования скриптов развертывания.

  • Ручная установка с использованием инструмента установки Platform V Monitor, расположенного в дистрибутиве по пути package/bh/installer/deploy-pvm.zip (инструкция по его использованию находится внутри архива)

  • Автоматическая установка (опционально) компонентом Deploy tools в составе Platform V DevOps Tools.

Подготовка окружения#

  1. Должны быть созданы сущности для хранения метрик в Abyss (проект, topic Kafka, аналитический индекс). Подробная информация представлена в Руководстве оператора сервиса Abyss (LGDB).

  2. Подготовить окружение - проверить наличие или создать:

    • Namespace с подключенным и настроенным проектом Istio.

  3. Проверить в файле installer/system/efs/config/parameters/ssl.conf корректность заполнения параметров для сертификатов Istio.

  4. Создать схему БД Postgres SQL или БД Platform V Pangolin SE для Unimon. В данном релизе имеется ограничение, при подключении к БД Postgres SQL или БД Platform V Pangolin SE для прогона liquibase-скриптов ssl не используется.

  5. Сервис Unimon поддерживает гео-балансировку. Подробнее о настройке можно посмотреть в документации SberInfra, раздел Гео-балансировка.

  6. Для применения конфигураций заданных через Pacman в namespace должен присутствовать Reloader.

  7. Наличие Platform V IAM SE для авторизации типа IAM или Abyss для авторизации типа PVM.

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

Установка на стенды k8s#

Ниже в разделе - Автоматическая установка (опционально) компонентом Deploy tools указаны стендозависимые параметры для заполнения, которые применимы для различных сред контейнеризации, в том числе и k8s. Автоматическая установка Unimon в среде k8s возможна с помощью компонента Deploy tools. Для применения специфичных конфигураций k8s необходимо выполнить донастройку multiCluster.json в common-репозитории. А именно, добавить секцию overrides с пустым значением и проверить корректность значения указанной ControlPlane. Пример:

{
   "datacenters": {
      "stands-vdc01-(st-unimon-01-k8s)": {
         "openshiftCluster": "https://api.k8s.devpub.solution.xxx:6443",
         "openshiftSATokenCred": "unimon-st-sa-k8s",
         "openshiftProjectName": "tribe-om-st-unimon-01",
         "openshiftAppsDomain": "apps.k8s.devpub.solution.xxx",
         "openshiftControlPlane": "gt-sol-dev-controlplane-01",
         "openshiftWebConsole": "https://console.apps.k8s.devpub.solution.xxx/k8s/cluster/projects",
         "openshiftRoutersFQDN": [
            "1.1.1.1"
         ],
         "overrides": [
            ""
         ]
      }
   }
}

Также необходимо проверить заполнение параметров в конфигурационном файле opm_unimon.all.conf

unimon.common.k8s.fs-group=
unimon.common.k8s.uid=
unimon.common.seccompprofile.param.enable=false

Если выполняется установка в DropApp, то рекомендуем проверить заполнение параметра unimon.common.da.runAsGroup= в конфигурационном файле opm_unimon.all.conf. На некоторых стендах без задания указанного параметра могут не запускаться pod из-за настроек политики безопасности.

Ручная установка без использования скриптов развертывания#

Для клиентов, которые по каким-либо причинам не могут воспользоваться Pipeline для установки Unimon, доступна установка сервиса вручную:

  1. Получить дистрибутив Unimon.

  2. Сделать backup БД Unimon следующим, либо другим удобным способом:

pg_dump -h [имя_хоста] -p [номер_порта] -U [имя_пользователя] -n [имя_схемы] -v -f [имя_файла_c_backup].sql [имя_бд]

Пример:

pg_dump -h st-abyss-name-01.opsmon.xxx -p 5432 -U postgres -n unimon -v -f namedb.sql namedb_db
  1. Создать следующие служебные подключения для самомониторинга Unimon (с помощью UI Unimon для подключения или API Unimon):

  • unimon-server;

  • unimon-metadata;

  • unimon-filter.

  1. Создать секреты:

  • secret-opm-unimon-server;

  • unimon-db-certs;

  • secret-opm-unimon;

  • unimon-logger-kafka-certs - для интеграции с Журналированием;

  • unimon-ott-certs - если подразумевается взаимодействие с One-Time Password (OTP) / OTT (далее Platform V One-Time-Token (OTT)). При установке вручную в именовании необходимо проставить версию .${distrib.release.version}. Пример: unimon-agent-config.r4. Файлы секретов находятся в дистрибутиве с конфигурационными файлами по пути ./package/conf/k8s/base/secrets/.

  1. Во всех файлах .yaml, расположенных в директориях unimon-server, unimon-metadata, unimon-filter заполнить значения переменных.
    Список обязательных параметров указан ниже в пункте Автоматическая установка (опционально) компонентом Deploy tools. Описание всех параметров собрано в Справочнике конфигурационных файлов".

  2. Если namespace подключен к Istio и требуется выводить трафик через Deployment Egress необходимо:

  • создать секреты egressgateway-ca-certs и egressgateway-certs;

  • заполнить значения переменных для всех файлов .yaml из директории istio.

  1. Далее необходимо установить все заполненные файлы .yaml в среду контейнеризации с помощью команды

oc apply -f <имя_файла.yaml>

Автоматическая установка (опционально) компонентом Deploy tools#

  1. Выполнить миграцию конфигурационных файлов:

  • Выбрать SUBSYSTEM: <значение, указанное в subsystem.json в common-репозитории стенда, например OPM_UNIMON_SERVER>. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, то в SUBSYSTEM нужно выбрать прикладной/технологический сервис.

  • Выбрать COMPONENTS: Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, выбрать прикладной/технологический сервис и UNIMON (необходимы дополнительные настройки SUBSYSTEM, для отображения в списке второго компонента).

  • Выбрать DISTRIB_VERSION: <необходимая версия, формат D-5.x.x>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: <branch (в который выполнялась миграция конфигурационных файлов), соответствующий релизу и описанный в env common-репозитория стенда. Например, branch R5>.

  • Выбрать playbook MIGRATION_FP_CONF.

  • Нажать кнопку «Собрать».

  1. В репозитории конфигурационных файлов установить корректные значения для параметров:

в файле conf/config/parameters/opm_unimon.all.conf должны быть обязательно заполнены параметры:

Параметр

Описание

Пример заполнения

unimon.ingress.endpoint.hostname

Хост ingress'а namespace, в котором установлен unimon-server

unimon.ci02707148d43c3.apps.dev-gen.sssss.ssss.ru

unimon.ingress.url

url ingress серверного namespace

http://unimon.ci02707148d43c3.apps.dev-gen.sssss.ssss.ru

logger.labels.standid

ID стенда Журналирования

DEV

audit.proxy.url

Адрес для подключения к Audit

http://${audit.proxy.host}:/

audit.proxy.host

Хост Audit

ift.audit2-http-proxy-ott.apps.dev-gen.aa.sssss.ru

audit.proxy.endpoint

Путь до endpoint-а Audit

audit.proxy.port

Порт Audit

443

audit.enabled

Включение/выключение аудита событий

true

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если auth.api_key.enable=true (включена аутентификация по Api-key), по умолчанию имеют значение none:

Параметр

Описание

Пример заполнения

auth.api_key.validation.host

Хост, отвечающий за валидацию Api-key

auth.api_key.validation.port

Порт для валидацию Api-key

0000

API-key выдается администраторами Abyss. Подробнее о создании API-key в Руководстве оператора, инструкция поставляется в рамках компонента Abyss (LGDB) в составе продукта Platform V Monitor (OPM). В наименовании заголовка API ключа должен быть UID из SUB. Для корректного взаимодействия клиентской и серверной части необходимо также добавить пользователю (владельцу Api-key) разрешения MONA_QUOTA_METRICS_WRITE, MONA_METADATA_EDITOR, MONA_CONNECTIONS_VIEWER, MONA_FILTER_VIEWER или PVM_ADMIN_PERMISSION.

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_OTT_OSE_DEPLOY=true (включена установка Platform V One-Time-Token (OTT)), по умолчанию имеют значение none:

Параметр

Описание

Пример заполнения

unimon.ose.ott.module.id

Идентификатор модуля для сервиса Platform V One-Time-Token (OTT)

unimon_dev

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_LOGGER_PPRB_ENABLE=true (включена установка Журналирование LOGP), по умолчанию имеют значение none:

Параметр

Описание

Пример заполнения

logger.pprb.host

Хост Журналирование

logger-endpoint-demo-http-ci00641491-idevgen-logger-dev.aaaa.dev-gen.aa.ssss.ru

logger.pprb.endpoint

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

/logger-endpoint/v1/events

logger.pprb.port

Порт Журналирование

80

logger.pprb.vs.port

Порт, на который выходит трафик из egress

00

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_LOGGER_EFS_ENABLE: true (включена установка Журналирование), иначе оставить пустым:

Параметр

Описание

Пример заполнения

logger.efs.kafka.bootstrap.servers

Cписок bootstrap - серверов Kafka для отправки логов

tkles-pppp00075.vm.eeee.cloud.ssss.ru:9093,tkles-pppp00076.vm.eeee.cloud.ssss.ru:9093

logger.efs.kafka.topic.name

Topic, в который будет осуществляется отправка логов

undefined

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если требуется геобалансировка, иначе оставить пустыми:

Параметр

Описание

Пример заполнения

istio.geo.route.balancer.host

FQDN геобалансировщика в unimon-geo-route.yaml(OSE)

unimon.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.balancer.host

FQDN геобалансировщика в ingress-geo.yaml(k8s)

unimon.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.server.balancer.host

FQDN геобалансировщика в unimon-geo-server-route.yaml для unimon-server

unimon-server.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.filter.balancer.host

FQDN геобалансировщика в unimon-geo-filter-route.yaml для unimon-filter

unimon-filter.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.metadata.balancer.host

FQDN геобалансировщика в unimon-geo-metadata-route.yaml для unimon-metadata

unimon-metadata.dev-apps.ocp-geo.dddd.sss.ru

Следующий параметр opm_unimon.all.conf нужно выставить в значение true, если в namespace включен mtls:

Параметр

Описание

Пример заполнения

istio.sidecar.mtls-mode.enabled

Включен ли mtls в namespace

false

При включенном mtls проверить значения параметров:

unimon-server.startupProbe.endpoint=/app-health/unimon-server/livez - Endpoint стартап пробы unimon-sender
unimon-server.startupProbe.port=15020 - Порт стартап пробы unimon-server
unimon-filter.startupProbe.endpoint=/app-health/unimon-filter/livez - Endpoint стартап пробы unimon-filter
unimon-filter.startupProbe.port=15020 - Порт стартап пробы unimon-filter
unimon-metadata.startupProbe.endpoint=/app-health/unimon-metadata/livez - Endpoint стартап пробы unimon-metadata
unimon-metadata.startupProbe.port=15020 - Порт стартап пробы unimon-metadata

При выключенном mtls проверить значения параметров:

unimon-server.startupProbe.endpoint=/actuator/health/liveness - Endpoint стартап пробы unimon-server
unimon-server.startupProbe.port=8081 - Порт стартап пробы unimon-server
unimon-filter.startupProbe.endpoint=/actuator/health/liveness - Endpoint стартап пробы unimon-filter
unimon-filter.startupProbe.port=8081 - Порт стартап пробы unimon-filter
unimon-metadata.startupProbe.endpoint=/actuator/health/liveness - Endpoint стартап пробы unimon-metadata
unimon-metadata.startupProbe.port=8081 - Порт стартап пробы unimon-metadata

При работе с контрольной панелью от Platform V Synapse Service Mesh и включенным режимом работы с mTLS (манифест peerauthentication mode: STRICT) нужно задавать параметры в следующих конфигурационных файлах:

opm_unimon.unimon-metadata.conf:

unimon-metadata.startupProbe.endpoint=/actuator/health/liveness
unimon-metadata.startupProbe.port=8081

opm_unimon.unimon-filter.conf:

unimon-filter.startupProbe.endpoint=/actuator/health/liveness
unimon-filter.startupProbe.port=8081

opm_unimon.unimon-server.conf:

unimon-server.startupProbe.endpoint=/actuator/health/liveness
unimon-server.startupProbe.port=8081

opm_unimon.all.conf:

istio.sidecar.mtls-mode.enabled=true

в файле conf/config/parameters/opm_unimon.server.all.conf должны быть обязательно заполнены параметры: Параметры настройки авторизации, неотменеченные, как pvm, одинаковы для всех возможных сервисов авторизации.

Параметр

Описание

Пример заполнения

unimon.db.pool.hosts

Адреса пар хост+порт базы данных. Подробное описание ниже в п. Настройка соединения с БД PostreSQL (п.2)

psql-1.ca.345.ru:8101,psql-2.ca.345.ru:8102

unimon.db.name

Название базы данных

monaadm

unimon.db.schema

Схема базы данных

monadev2

unimon.db.ssl.enable

Включить ssl для подключения к базе данных

true

unimon.db.ssl.mode

Режим ssl при подключении к базе данных

verify-full

auth.iss-urls

Адреса ISS аутентификации

https://XX.XX.XXX.XX:XXXX/auth/realms/PlatformAuth

auth.jwks-url

Адрес получения jwk токена

http://${auth.jwks.host}:/${auth.jwks.endpoint}

auth.jwks.port

Порт для адрес получения jwk токена

443

auth.jwks.host

Хост адреса получения jwk токена

all-sh-sudiwsa21u.aa.ssss.ru

auth.jwks.endpoint

Путь до endpoint-а получения jwk токена

auth/realms/PlatformAuth/protocol/openid-connect/certs

auth.pvm.url

Адрес сервиса авторизации (только при auth.type=pvm)

http://${auth.pvm.host}:/${auth.pvm.endpoint}

auth.pvm.port

Порт сервиса авторизации (по умолчанию none, задать значение только при auth.type=pvm)

443

auth.pvm.host

Хост адреса сервиса авторизации (по умолчанию none, задать значение только при auth.type=pvm)

tkles-pprb00075.vm.eeee.cloud.ssss.ru

auth.pvm.endpoint

Путь до endpoint-а сервиса авторизации (по умолчанию none, задать значение только при auth.type=pvm)

v1

в файле conf/config/parameters/opm_unimon.unimon-filter.conf:

unimon-filter.unimonId=unimon-filter - параметр для указания ID подключения для метрик Unimon-filter

в файле conf/config/parameters/opm_unimon.unimon-metadata.conf:

unimon-metadata.unimonId=unimon-metadata - параметр для указания ID подключения для метрик Unimon-metadata

в файле conf/custom_property.conf.yml включить нужны параметры: Если требуется включить установку Platform V One-Time-Token (OTT), Журналирование, Журналирование LOGP (опциональная возможность включить один из сервисов журналирования) или сбор инфраструктурных метрик или установку открытого роута, то необходимо в соответствующих параметрах указать значение true. По умолчанию эта функциональность отключена.

UNIMON_OTT_OSE_DEPLOY: false # Включить установку Platform V One-Time-Token (OTT), если необходимо.
UNIMON_LOGGER_PPRB_ENABLE: false # Включить установку Журналирование LOGP при необходимости.
UNIMON_LOGGER_EFS_ENABLE: false # Включить установку Журналирование при необходимости.
UNIMON_FEDERATE_METRICS_ENABLE: false # Включить сбор инфраструктурных метрик(true), по умолчанию сбор инфраструктурных метрик отключен(false).
UNIMON_SENDER_HTTP_ROUTE_ENABLED: false # Включить установку открытого роута для unimon-sender, по умолчанию установка роута отключена.
UNIMON_GEO_BALANCING: false # Включить установку Route/Ingress в среде контейнеризации для геобалансировки

в файле conf/config/parameters/opm_unimon.unimon-server.conf должны быть обязательно заполнены параметры:

Параметр

Описание

Пример заполнения

unimon-server.abyss.host

Адрес хоста Abyss

tkles-pppp00078.vm.eeee.cloud.ssss.ru

unimon-server.abyss.port

Порт Abyss

443

abyss.endpoint

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

coordinator/api/gateway/v1

unimon-server.unimonId

Параметр для указания ID подключения для метрик Unimon-server

unimon-server

  1. Выбрать способ хранения секретов, паролей и сертификатов:

  • Secure Password Manager (далее - Secman).

  • Common-репозиторий.

Одновременное использование двух вариантов хранения недоступно.

Для серверной части Unimon используются следующие сертификаты:

  • secret-opm-unimon-server;

  • unimon-db-certs;

  • unimon-logger-kafka-certs - для интеграции с Журналированием;

  • unimon-ott-certs - если подразумевается взаимодействие с Platform V One-Time-Token (OTT).

Общий корневой сертификат расположен в common-репозитории и используется независимо от способа хранения секретов (в Secman или в common-репозитории).

Рекомендованное расположение цепочки сертификатов УЦ, указано в конфигурационном файле opm_unimon.all.conf:

Параметр

Описание

Пример заполнения

mona.certs.trusted.pem.file

Расположение цепочки сертификатов УЦ в common-репозитории

ansible/files/ssl/caCertificates.pem

В этот файл необходимо поместить цепочку сертификатов УЦ в формате PEM для Apache Kafka, Istio, OTT, БД, Secman.

Secret Management System (Secman)#

Для хранения сертификатов в Secman необходимо в конфигурационном файле opm_unimon.all.conf заполнить общие параметры:

Общее назначение

Параметр

Наименование

Возможные значения

Общие настройки взаимодействия с Secman

mona.vault.enabled

Признак использования интеграции с Secman

true

mona.vault.host

URL для подключения к HashiCorp Vault

secman-ddo.solution.xxx

mona.vault.port

Порт для подключения к HashiCorp Vault

8200

mona.vault.config.auto_auth.method.mount_path

Endpoint для аутентификации в Secman

auth/os/stands-vdc01.solution.xxx

mona.vault.config.auto_auth.method.config.role

Роль пользователя, которому доступно получать/обновлять/удалять секреты в Secman

role-ga-secman-mona

mona.vault.config.auto_auth.method.namespace

Имя namespace в Secman

DEV_DDO

mona.certs.trusted.pem.file.location

Путь до сертификатов УЦ в common репозитории

ansible/files/ssl/caCertificates.pem

mona.certs.trusted.pem.file.name

Имя файла с сертификатами УЦ в common репозитории

caCertificates.pem

vault.auth.requests.api-key.value.notation

Нотация для указания значения Api-key для запросов к серверу (по умолчанию none)

vault.auth.pvm.user.notation

Нотация для указания пользователя для базовой аутентификации в сервисе авторизации Abyss (по умолчанию none)

vault.auth.pvm.password.notation

Нотация для указания пароля для базовой аутентификации в сервисе авторизации Abyss (по умолчанию none)

При работе в режиме генерации сертификатов через PKI#

  1. Создать PKI в Secman для вашего приложения (если оно еще не существует).

  2. Для выпуска сертификатов можно использовать роль по имени "role-название-созданной-группы-в-AD" (в данном случае, в отличие от остальных, важен регистр). У данной роли разрешены домены sbt и gt, а также выпуск сертификатов для поддоменов. Если требуется, то можно создать собственную роль (отличается от роли для доступа к vault), которая будет содержать параметры выпуска сертификатов.

Задать значения параметров в конфигурационном файле opm_unimon.all.conf:

Общее назначение

Параметр

Наименование

Возможные значения

Настройки при использовании PKI в Secman

mona.vault.secrets.certs.method

Метод генерации сертификатов

issue

mona.vault.secrets.certs.source.pki

Признак использования PKI

true

mona.vault.secrets.certs.cn

Указание common-name, c которым будет генерироваться сертификат

tribe-om-dev-collect-01.apps.secman-ddo.xxx

mona.vault.secrets.certs.ttl

Указание времени жизни сертификата

1800h

mona.vault.secrets.certs.source

Путь до сгенерированных сертификатов

ST/MONA/OM/PKI

Параметры ttl по-умолчанию имеют значение 1800h, их нужно переопределить на стенде, так как на Secman может стоять ограничение.

При работе с хранилищем KV#

Разместить в Secman данные (логины, пароли, сертификаты, и т. д.):

  1. Создать в Secman хранилище KV для вашего приложения (если оно еще не существует).

  2. Создать в UI Secman в KV новые secret для хранения сертификатов (кнопка Create secret+).

    • можно задать любое имя секрета, например unimon-server-secret (это имя необходимо указать в нотациях сервисов)

    • ingressgateway-certs

    • egressgateway-certs

Задать значения параметров в следующих конфигурационных файлах:

opm_unimon.all.conf:

Общее назначение

Параметр

Наименование

Возможные значения

Настройки при использовании KV в Secman

mona.vault.secrets.kv.source

Путь к сертификатам в хранилище Secman

ST/MONA/OM/KV

mona.vault.secrets.certs.source.pki

Признак использования PKI

false

logger.efs.kafka.certs.secret.name

Имя сертификата для подключения к Kafka сервиса Журналирования

logger-certs

opm_unimon.server.all.conf:

Общее назначение

Параметр

Наименование

Возможные значения

Настройки при использовании KV в Secman

vault.unimon.db.ssl.private.key.pass.notation

Нотация пароля от приватного ключа для БД

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:mona-secret-st:db.key.pass}

vault.unimon.db.ssl.cert.notation

Нотация от клиентского сертификата для БД

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:mona-secret-st:certificate}

vault.unimon.db.ssl.key.notation

Нотация от приватного ключа для БД

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:jdbc.unimon_postgres.user}

vault.unimon.db.postgres.user.notation

Нотация от имени пользователя БД

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:jdbc.unimon_postgres.user}

vault.unimon.db.postgres.password.notation

Нотация от пароля пользователя БД

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:jdbc.unimon_postgres.password}

vault.auth.pvm.user.notation

Нотация от имени пользователя в cервис авторизации Abyss

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:unimon.auth.pvm.abyss.user}

vault.auth.pvm.password.notation

Нотация от пароля пользователя в cервис авторизации Abyss

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:unimon.auth.pvm.password}

vault.unimon-server.abyss.user.notation

Нотация от имени пользователя в Abyss

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:unimon-server.abyss.user}

vault.unimon-server.abyss.password.notation

Нотация от пароля пользователя в Abyss

$__vault{kv:DEV_DDO/A/DEV/OM/MONA/KV:secret-opm-unimon-server-k8s.r5:unimon-server.abyss.password}

  1. Добавить в созданные secret необходимые сертификаты в текстовом формате, где

    • Key - имя файла сертификата, по которому будет происходить lookup сертификата и его нужно будет указать в нотациях сервисов

    • Value - тело сертификата

Следующие параметры задаются в secret с произвольным именем (например unimon-server-secret):

Описание параметра

Пример Key

Пример Value

Параметр для указания пароля для подключения к БД

jdbc.unimon_postgres.password

password

Параметр для указания пользователя для подключения к БД

jdbc.unimon_postgres.user

unimon_user

Параметр для указания пароля для подключения к Abyss

unimon-server.abyss.password

password

Параметр для указания пользователя для подключения к Abyss

unimon-server.abyss.user

unimon_user

Параметр для указания пользователя для подключения к Сервису авторизации

unimon.auth.pvm.abyss.user

unimon_user

Параметр для указания пароля для подключения к Сервису авторизации

unimon.auth.pvm.password

password

Параметр для указания пароля для приватного ключа БД

unimon.db.ssl.key.password

password

Параметр для указания клиентского сертификата для Kafka сервиса Журналирования

logger_cert.pem

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Параметр для указания приватного ключа для Kafka сервиса Журналирования

logger_private-key.pem

-----BEGIN PRIVATE KEY----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Параметр для указания приватного ключа для подключения к БД

unimon-pg-private-key.pem

-----BEGIN PRIVATE KEY----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Параметр для указания клиентского сертификата для подключения к БД

unimon-pg-cert.pem

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Параметр для указания пароля пользователя при аутентификации в Abyss для валидации Api-key

auth.pvm.api-key.validation.basic.auth.password

password

Параметр для указания имени пользователя при аутентификации в Abyss для валидации Api-key

auth.pvm.api-key.validation.basic.auth.user

admin

Параметр для указания значения Api-key для внутреннего взаимодействия между сервисами (в формате Base64)

authentication.api-key.internal-key

AgIBATANBgkqhkiG9w0BAQsF

Имена следующих сертификатов (Key) изменять не рекомендуется.

Имя secret

Key

Пример Value

Описание сертификатов

ingressgateway-certs

tls.crt

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Клиентский сертификат для Ingressgateway Istio

tls.key

-----BEGIN PRIVATE KEY----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Приватный ключ для Ingressgateway Istio

egressgateway-certs

tls.crt

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Клиентский сертификат для Egressgateway Istio

tls.key

-----BEGIN PRIVATE KEY----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Приватный ключ для Egressgateway Istio

Параметры для задания значений Key для сертификатов в хранилище Secman в конфигурационных файлах:

opm_unimon.server.all.conf:

unimon.ose.db.ssl.private.key.fileName=unimon-pg-private-key.pem
unimon.ose.db.ssl.cert.fileName=unimon-pg-cert.pem

opm_unimon.all.conf:

logger.efs.kafka.ssl.certificate.filename=logger_cert.pem
logger.efs.kafka.ssl.key.filename=logger_private-key.pem
istio.ingress.serverCertificate.name=tls.crt
istio.ingress.privateKey.name=tls.key
istio.egress.clientCertificate.name=tls.crt
istio.egress.privateKey.name=tls.key

В случае необходимости ротации сертификатов, добавьте ключ ttl в secret Secman со значением времени перечитывания хранилища.

При использовании ОТТ#

Необходимо добавить новый secret и сертификаты для ОТТ.

  1. Создать в UI Secman в KV новый secret для хранения сертификатов unimon-ott-certs (кнопка Create secret+) по пути DEV/{четырехбуквенный_код_компонента}/OM/KV/my-certs

Задать значения параметров в конфигурационном файле opm_unimon.all.conf:

Общее назначение

Параметр

Наименование

Возможные значения

Настройки при использовании OTT

mona.vault.secrets.certs.ott.cn

Указание common-name, c которым будет генерироваться сертификат

tribe-om-dev-collect-01.apps.secman-ddo.xxx

mona.vault.secrets.certs.ott.ttl

Указание времени жизни сертификата для OTT

1800h

mona.vault.secrets.certs.ott.source

Путь до сгенерированных сертификатов для OTT

ST/MONA/OM/PKI

  1. Добавить сертификаты:

Имя secret

Key

Value (пример)

Комментарий

unimon-ott-certs

moduleCert.pem

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Клиентский сертификат для OTT

moduleKey.pem

-----BEGIN PRIVATE KEY----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Приватный ключ OTT клиента

ottService.pem

-----BEGIN CERTIFICATE----- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsF

Сертификат OTT сервиса

Значения Key для сертификатов в хранилище Secman заданы в манифестах.

Common-репозиторий#

Для работы с паролями и секретами Platform V DevOps Tools (DOT) можно использовать файл _passwords.conf, который хранится в зашифрованном виде в common-репозитории.

_passwords.conf:

  • добавить имя пользователя, пароль и значение Api-key для внутреннего взаимодействия

auth.pvm.api-key.validation.basic.auth.user
auth.pvm.api-key.validation.basic.auth.password
authentication.api-key.internal-key
  • пароли к остальным хранилищам jks, в особенности от jks для kafka:

ssl.ose.keyStore.mq.password=
  • добавить параметры для авторизации в Abyss:

unimon-server.abyss.password=<пользователь_abyss>
unimon-server.abyss.user=<пароль_abyss>

Примечание: Указать техническую учетную запись с правами для необходимого проекта:

  • чтение из хранилища;

  • чтение/запись topic Apache Kafka;

  • чтение/запись аналитических задач Abyss.

  • добавить параметры для БД:

jdbc.unimon_postgres_liquibase.user=<пользователь_бд_с_правами_для_раскатки_liquibase_скриптов>
jdbc.unimon_postgres_liquibase.password=<пароль_для_пользователя_бд_с_правами_для_раскатки_liquibase_скриптов>
jdbc.unimon_postgres.user=<пользователь_бд_с_правами_для_работы_с_ас>
jdbc.unimon_postgres.password=<пароль_для_пользователя_бд_с_правами_для_работы_с_ас>
unimon.db.ssl.key.password=<пароль_для_приватного_ключа_бд>
  • добавить параметры для авторизации в Сервисе авторизации:

unimon.auth.pvm.user=<пользователь_pvm_авторизации>
unimon.auth.pvm.password=<пароль_pvm_авторизации>

Примечание: Указать техническую учетную запись с правами на получение:

  • модели доступов;

  • списка проектов;

  • списка доступов для указанного пользователя.

  1. Заполнить остальные параметры common-репозитория

common.conf.yml:

  • добавить параметры для подключения к БД Postgres:

UNIMON_POSTGRES_DB_URL: "jdbc:postgresql://<хост_бд>:<порт_бд>/<пользователь_бд>" если используется pgbouncer значение должно иметь вид "jdbc:postgresql://<хост_бд>:<порт_бд>/<пользователь_бд>?prepareThreshold=0"
UNIMON_POSTGRES_DB_SCHEMA: "<схема_бд>"

ssl.conf:

  • добавить пароль от хранилища jks для сертификатов kafka (а так же для остальных сертификатов, используемых в среде контейнеризации, кроме istio и ott):

ssl.ose.keyStore.mq.password=ssl.ose.keyStore.mq.password - данный пароль должен быть заполнен в _passwords.conf среды
  • добавить месторасположение хранилища jks для сертификатов kafka (а так же для остальных сертификатов, используемых в среде контейнеризации, кроме istio и ott), а так же алиас сетрификата для kafka:

ssl.ose.keyStore.mq.keyStoreFromFile=ansible/files/ssl/kafka.jks
ssl.ose.keyStore.mq.CertAlias=
  • добавить месторасположение сертификатов для БД Postgres SQL или БД Platform V Pangolin SE :

ssl.ose.db.postrgesql.cert.location=ansible/files/ssl/pg-cert.pem
ssl.ose.db.postrgesql.private.key.location=ansible/files/ssl/pg-key.pem

openShift.conf:

  • Параметры для указания места хранения docker-образов

registry=ddo.sw.sbc.space
registry_path=/xxx/ci90000099_mona
  • Параметры для Platform V One-Time-Token (OTT) (если используется, иначе оставить пустым)

global.ott.service.url=https://stub-host:stub-port/ott-service/rest/token
global.ott.grpc.port=/mnt/ott-uds-socket/ott.socket
global.ott.service.hosts="XX.XX.X.XX:XXXX,XX.XXX.XXX.XXX:XXXX"
global.ott.store.type=JKS
  • Параметры для logger

global.platform.logger.kafka.bootstrap.servers=${global.unimon-sender.kafka.bootstrap_servers}
global.platform.logger.kafka.topic=unimon.sender
global.platform.logger.kafka.security.protocol=SSL
  • Параметры для kafka

global.unimon-sender.kafka.bootstrap_servers=tkles-pprb00075.vm.esrt.cloud.ssss.ru:9093,tkles-pppp00076.vm.eeee.cloud.ssss.ru:9093,tkles-pppp00077.vm.eeee.cloud.sssss.ru:9093
global.platform.ose.kafka.ports=9093 (можно указать несколько портов через ',')
global.unimon-sender.kafka.default.topic=unimon.Tengri
global.unimon-sender.kafka.ssl.enabled=true
  • Параметр для задания минимального количества pod (реплик) приложения для стабильной работы (конфигурация PodDisruptionBudget). Указывается абсолютное значение, которое должно быть меньше количества реплик Pod, указанных в deployment.

global.common.poddisruptionbudget.minAvailable=1
  • Имя кластера в среде контейнеризации, в который устанавливается unimon

global.multiClusters.openshiftAppsDomain=some.solution.xxx
  • Контрольная панель Istio service Mesh

global.ufs.synapse.controlPlane.project=tribe-om-istio-controlpanel

_global.resources.conf

  • Ссылка до registry, задается администратором в настройках инструмента развертывания/распаковки

global.registry.url=ddo.sw.sbc.space
  • Базовый путь до каталога с образом envoy

global.envoy.image.registry.path=some/path

multiClusters.json

  • Имя проекта istio контрольной панели

global.multiClusters.openshiftControlPlane=istio-control-panel-name

Если вышеперечисленных глобальных переменных нет, необходимо создать их или заполнить самостоятельно в репозитории конфгурационных файлов параметры, которые ссылаются на эти глобальные переменные.

  1. Сделать backup БД Unimon следующим, либо другим удобным способом:

pg_dump -h [имя_хоста] -p [номер_порта] -U [имя_пользователя] -n [имя_схемы] -v -f [имя_файла_c_backup].sql [имя_бд]

Пример:

pg_dump -h st-abyss-name-01.opsmon.xxx -p 5432 -U postgres -n unimon -v -f namedb.sql namedb_db
  1. Выполнить раскатку скриптов базы данных и Ingress/egress:

  • Выбрать SUBSYSTEM: <значение, указанное в subsystem.json в common-репозитории стенда, например OPM_UNIMON_SERVER>.

  • Выбрать DISTRIB_VERSION: <необходимая версия, формат D-5.x.x>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: <branch (в который выполнялась миграция конфигурационных файлов), соответствующий релизу и описанный в env common-репозитория стенда. Например, branch R5>.

  • Выбрать playbooks DB_UPDATE, OPENSHIFT_INGRESS_EGRESS_DEPLOY.

  • Нажать кнопку "Build".

  1. Создать служебные подключения Unimon. Сделать это можно с помощью Api Unimon (/rn/{rn}/instance) или UI Unimon - форма Подключения, подробная информация представлена в документации компонента INDA (Руководстве оператора -> Руководство оператора приложения «Unimon» -> Создание и просмотр подключений).

  • unimon-server;

  • unimon-metadata;

  • unimon-filter.

  1. Выполнить установку дистрибутива Unimon в среде контейнеризации:

  • Выбрать SUBSYSTEM: <значение, указанное в subsystem.json в common-репозитории стенда, например OPM_UNIMON_SERVER>.

  • Выбрать DISTRIB_VERSION: <необходимая версия, формат D-5.x.x>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: <branch (в который выполнялась миграция конфигурационных файлов), соответствующий релизу и описанный в env common-репозитория стенда. Например, branch R5>.

  • Выбрать playbooks OPENSHIFT_DEPLOY.

  • Нажать кнопку "Build".

После установки Unimon, необходимо проверить наличие всех необходимых манифестов Istio. При отсутствии какого-либо - добавить вручную.

egress-se-http-logger.yaml
egress-se-http-abyss.yaml
egress-se-tcp-kafka.yaml
egress-se-tcp-ott.yaml
egress-se-tcp-postgresql-geo.yaml
egress-se-http-audit.yaml
egress-se-http-auth.yaml
egress-se-http-authorization.yaml
egress-se-http-balancer.yaml
egress-se-http-iam-template.yaml
egress-se-http-kubernates.yaml
egress-secman-se.yaml

egress-dsr-abyss.yaml
egress-dsr-audit.yaml
egress-dsr-auth.yaml
egress-dsr-authorization.yaml
egress-dsr-http-balancer.yaml
egress-dsr-iam-template.yaml
egress-dsr-psql-geo.yaml
egress-dsr-logger.yaml

egress-ef-ott-auth.yaml
egress-ef-ott-external.yaml
mona-cm-cert-ca.yaml
secman-egressgateway-monitoring-config.yaml

egress-gw-server.yaml
egress-gw.yaml
egress-secman-gw.yaml

egress-vs-abyss.yaml
egress-vs-audit.yaml
egress-vs-auth.yaml
egress-vs-authorization.yaml
egress-vs-http-balancer.yaml
egress-vs-iam-template.yaml
egress-vs-postgresql-geo.yaml
egress-secman-vs.yaml
egress-vs-logger.yaml

egress-ott-env-config.yaml
egress-ott-logback-config.yaml

ingress-gw-server.yaml
ingress-gw.yaml
ingress-vs-server.yaml
istio-conf-cm.yaml
ingress-ott-env-config.yaml
ingress-ott-logback-config.yaml

ingress-secman-ef.yaml
unimon-geo-filter-route.yaml
unimon-geo-metadata-route.yaml
unimon-geo-server-route.yaml
secman-ingressgateway-monitoring-config.yaml

Примечание: если сервис Журналирование не используются, egress-se-http-logger.yaml вручную устанавливать не следует

В состав дистрибутива входят конфигурационные файлы с рекомендуемыми значениями не стендозависимых параметров для настройки продукта. Их изменение может нарушить безопасность продукта. Пример типовой конфигурации