Установка#
Выбор способа установки#
Установка дистрибутива производится с использованием одного из вариантов:
Ручная установка без использования скриптов развертывания.
Ручная установка с использованием инструмента установки Platform V Monitor, расположенного в дистрибутиве по пути package/bh/installer/deploy-pvm.zip (инструкция по его использованию находится внутри архива)
Автоматическая установка (опционально) компонентом Deploy tools в составе Platform V DevOps Tools.
Подготовка окружения#
Должны быть созданы сущности для хранения метрик в Abyss (проект, topic Kafka, аналитический индекс). Подробная информация представлена в Руководстве оператора сервиса Abyss (LGDB).
Подготовить окружение - проверить наличие или создать:
Namespace с подключенным и настроенным проектом Istio.
Проверить в файле installer/system/efs/config/parameters/ssl.conf корректность заполнения параметров для сертификатов Istio.
Создать схему БД Postgres SQL или БД Platform V Pangolin SE для Unimon. В данном релизе имеется ограничение, при подключении к БД Postgres SQL или БД Platform V Pangolin SE для прогона liquibase-скриптов ssl не используется.
Сервис Unimon поддерживает гео-балансировку. Подробнее о настройке можно посмотреть в документации SberInfra, раздел Гео-балансировка.
Для применения конфигураций заданных через Pacman в namespace должен присутствовать Reloader.
Наличие 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, доступна установка сервиса вручную:
Получить дистрибутив Unimon.
Сделать 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
Создать следующие служебные подключения для самомониторинга Unimon (с помощью UI Unimon для подключения или API Unimon):
unimon-server;
unimon-metadata;
unimon-filter.
Создать секреты:
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/.
Во всех файлах .yaml, расположенных в директориях unimon-server, unimon-metadata, unimon-filter заполнить значения переменных.
Список обязательных параметров указан ниже в пункте Автоматическая установка (опционально) компонентом Deploy tools. Описание всех параметров собрано в Справочнике конфигурационных файлов".Если namespace подключен к Istio и требуется выводить трафик через Deployment Egress необходимо:
создать секреты egressgateway-ca-certs и egressgateway-certs;
заполнить значения переменных для всех файлов .yaml из директории istio.
Далее необходимо установить все заполненные файлы .yaml в среду контейнеризации с помощью команды
oc apply -f <имя_файла.yaml>
Автоматическая установка (опционально) компонентом Deploy tools#
Выполнить миграцию конфигурационных файлов:
Выбрать 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.
Нажать кнопку «Собрать».
В репозитории конфигурационных файлов установить корректные значения для параметров:
в файле 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 |
Выбрать способ хранения секретов, паролей и сертификатов:
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#
Создать PKI в Secman для вашего приложения (если оно еще не существует).
Для выпуска сертификатов можно использовать роль по имени "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 данные (логины, пароли, сертификаты, и т. д.):
Создать в Secman хранилище KV для вашего приложения (если оно еще не существует).
Создать в 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} |
Добавить в созданные 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 и сертификаты для ОТТ.
Создать в 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 |
Добавить сертификаты:
Имя 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_авторизации>
Примечание: Указать техническую учетную запись с правами на получение:
модели доступов;
списка проектов;
списка доступов для указанного пользователя.
Заполнить остальные параметры 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
Если вышеперечисленных глобальных переменных нет, необходимо создать их или заполнить самостоятельно в репозитории конфгурационных файлов параметры, которые ссылаются на эти глобальные переменные.
Сделать 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
Выполнить раскатку скриптов базы данных и 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".
Создать служебные подключения Unimon. Сделать это можно с помощью Api Unimon (/rn/{rn}/instance) или UI Unimon - форма Подключения, подробная информация представлена в документации компонента INDA (Руководстве оператора -> Руководство оператора приложения «Unimon» -> Создание и просмотр подключений).
unimon-server;
unimon-metadata;
unimon-filter.
Выполнить установку дистрибутива 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 вручную устанавливать не следует
В состав дистрибутива входят конфигурационные файлы с рекомендуемыми значениями не стендозависимых параметров для настройки продукта. Их изменение может нарушить безопасность продукта. Пример типовой конфигурации