Руководство по установке BAMN 4.1#

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

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

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

  • Автоматическая установка (опционально) компонентом Deploy tools в составе Platform V DevOps Tools версии не ниже release/D-01.039.049-886

Термины и определения#

Раздел доступен в документе "Общее описание продукта Platform V Monitor (OPM)" В таблице ниже приведен перечень терминов и определений касающихся только компонента BAMN.

Системные требования#

Внешние сервисы и окружения

Сервис

Версия

Обязательность

Комментарий

OIDC провайдер / IAM Proxy / СУДИР

версии 4.2.0 и выше

опционально

Требуется для выполнения аутентификации пользователей.

Компонент Abyss (LGDB) входящий в состав продукта Platform V Monitor (OPM)

версии 4.1 и выше

обязательно

Рекомендуемое хранилище телеметрических данных - Abyss. В случае отсутствия Abyss - сервис может записывать данные в Apache Kafka или в лог.

Компонент Indicator (INDA) входящий в состав продукта Platform V Monitor (OPM)

версии 4.1 и выше

обязательно

Реализация UI компонента. Также сервис используется для отображения дашбородов системного и бизнес-мониторинга.

Компонент Unimon (MONA) входящий в состав продукта Platform V Monitor (OPM)

версии 4.1 и выше

опционально

Метрики самомониторинга публикуются в формате prometheus. Для их сбора рекомендуется использовать Unimon-agent (или Prometheus-агент). Подробнее в разделе Настройка обслуживания сервиса.

Компонент Журналирование (LOGA) входящий в состав продукта Platform V Monitor (OPM)

версии 4.1 и выше

обязательно

Набор сервисов и инструментов для сбора и отображения в Indicator логов и цепочек вызовов.

Platform V Audit SE (AUD)

версии 4.7 и выше

опционально

Platform V Аудит SE в prod-like окружениях является обязательным. Существует режим с записью событий аудита в логи.

Platform V Flow (BPM) / Поставщик событий в формате Cloudevents

версии 4.9.1 и выше

опционально

Создание проектов, процессов

Среда виртуализации Kubernetes / RedHat Open Shift

Kubernetes v 1.21/RedHat Open Shift 1.21.6+b4b4813 (Kubernetes version)

обязательно

Платформа служащая для оркестрации контейнеров

СУБД PostrgeSQL (рекомендуется Platform V Pangolin SE(PSQ))

версии 4.4.х и выше

обязательно

Хранение данных сервиса

Platform V DevOps Tools (DOT)

версии 1.1 и выше

опционально

Инструмент автоматической установки

Platform V Synapse Service Mesh (SSM) (ISTIO)

версии 2.8 и выше

опционально

Сервис интеграции и оркестрации микросервисов в облаке.

Проверить наличие или создать:

  • Проекты в Platform V Monitor Abyss(LGDB) для BAMN (формируются при создании подключения проекта через UI BAMN).

  • Namespace с подключенным и настроенным проектом ISTIO. Для создания namespace необходимо использовать команду $ kubectl create namespace или создать YAML-файл и использовать его, как любой другой ресурс Kubernetes. Подключение Istio: kubectl create namespace <ИМЯ_NAMESPACE> kubectl label namespace <ИМЯ_NAMESPACE> istio.io/member-of=<НАИМЕНОВАНИЕ_КОНТРОЛПЛЕЙНА_ИСТИО> kubectl label namespace <ИМЯ_NAMESPACE> istio-injection=enabled

  • Пользователей СУДИР/IAM для работы с сервисом. Аутентификация происходит на стороне Platform V IAM (IAM).

Рекомендуемая последовательность установки сервисов для корректного функционирования BAMN#

Последовательность установки компонентов продукта не важна.

Установка#

Перед настройкой стенда#

Выделить необходимую квоту в Platform V Monitor Abyss (LGDB) для каждого проекта (тенанта). Квота на топики и задачи должны соответствовать количеству сервисов, которые будут подключены в BAMN.

Ручная установка#

Для установки сервиса Platform V Monitor Business activity monitoring (BAMN) вручную необходимо:

Для установки сервиса Platform V Monitor Platform V Monitor Business activity monitoring (BAMN) вручную необходимо:

  1. Получить дистрибутив сервиса Platform V Monitor Business activity monitoring (BAMN);

  2. Выполнить или запросить настройку базы данных Platform V Pangolin для Platform V Monitor Business activity monitoring (BAMN). Для корректной установки необходимо обеспечить изолированное пространство имен (Database schema) без сторонних сущностей и таблиц;

  3. Во всех файлах с расширением yaml расположенных в директориях дистрибутива заполнить значения переменных в соответствии с актуальным окружением (Enviroment);

  4. Заполнить ConfigMaps в разделах дистрибутива /package/conf/k8s/base в соответствии с комментариями по заполнению параметров в файлах .conf из директории /package/conf/config/parameters.

  5. Создать секреты для Istio:

    • bamn-secret-ingressgateway-ca-certs;

    • bamn-secret-egressgateway-ca-certs;

    • bamn-secret-ott-certs.

  6. На основе шаблонов файлов из дистрибутива /package/conf/k8s/base/secrets завести секреты в целевом пространстве Kubernetes:

    • bamn-secret-common-certs;

    • bamn-secret-logger-kafka-certs;

    • bamn-secret-encrypted.

Комментарии по заполнению параметров есть в разделе "Подготовка секрета с паролями".

  1. Далее необходимо установить все заполненные файлы .yaml в платформе приложений-контейнеров с помощью команды: «kubectl apply -f .yaml». Необходимо начать с каталога Istio, затем остальные каталоги. Приоритет развертывания: kind: secrets, configmaps, services, deployment, далее приоритет не важен.

Подготовка стенда#

Выполнить следующие шаги:

  1. Подготовка pipeline

  2. Подготовка среды контейнеризации (Kubernetes или Red Hat OpenShift4+)

  3. Подготовка хранилища сертификатов

  4. Подготовка секрета с паролями

  5. Подготовка базы данных

  6. Настройка общей конфигурации для всех сервисов в составе продукта

  7. Настройка конфигурации Istio для подключаемых внешних сервисов

  8. Настройка журналирования

  9. Настройка мониторинга

Подготовка pipeline#

Необходимо подготовить DevOps Tools для развертывания сервисов BAMN. Для раскатки используется стандартный Pipeline CD. После добавления подсистемы в environment.json, subsystems.json сервис станет доступен для раскатки: см. раздел «Раскатка сервиса». Добавление дистрибутива в pipeline осуществляется по аналогии с примером в файле environment.json и subsystems.json в common репозитории. Данная инструкция не содержит подробную настройку pipeline, так как используемый pipeline сам по себе является отдельным продуктом. Добавление кластеров kubernetes (openshift) осуществляется, по аналогии с примером в файле multiClusters.json. Для Kubernetes в multiClusters.json использовать параметр «overrides»: []. Для OpenShift использовать парамер «overrides»: [«openshift»].

Подготовка среды контейнеризации Kubernetes#

  1. Необходимо подготовить пространство (проект) в Kubernetes в соответствии с минимальными требованиями по квоте сервисов BAMN.

Установлены следующие требования по квоте:

limits.cpu: '14'
limits.memory: 16Gi
persistentvolumeclaims: '0'
requests.cpu: '14'
requests.memory: 16Gi

Параметры ресурсов определены в конфигурационных файлах соответствующих сервисов ВAMN:

  • bam.administrator.conf;

  • bam.pull-processing.conf;

  • bam.selector.conf. Файлы распроложенны в папке config/parameters.

  1. Проект должен быть подключен к Platform V Synapse Service Mesh (SSM) (ISTIO)

  2. Прописан global.ufs.synapse.controlPlane.project=(проект kubernetes) в common репозитории

Поды приложения (BAMN):

  • administrator-unver

  • pull-processing-unver

  • selector-unver Служебные поды:

  • istio

Приведенные в разделах ниже параметры, конфигурации используются для работы сервиса BAMN в среде Kubernetes. Дополнительные настройки для развертывания в Kubernetes не требуются.

Подготовка хранилища сертификатов#

Для работы сервисов BAMN потребуется наличие нескольких хранилищ сертификатов:

  1. bamn-secret-common-certs - должен содержать private key и доверенные сертификаты для работы с Platform V Pangolin SE (PSQ). Секрет монтируется как bamn-secret-common-certs. Для указанного секрета используются переменные конфигурационного файла bam.common.all.conf:

# !!! Пути к хранилищам сертификатов bam-common в common репозитории
# на их основе будет создан секреты в bamn-secret-common-certs
bam.ose.configmap.common.cert.location=ansible/files/ssl/common.jks

#### Настройки для подключения к БД через SSL
# Без необходимости не менять
# !!! Пути к хранилищам сертификатов bam-common в common репозитории для БД postgresql
# на их основе будет создан секреты в bamn-secret-common-certs
bam.ose.secret.datasource.ssl.root.cert.location=ansible/files/ssl/root.crt
bam.ose.secret.datasource.ssl.cert.location=ansible/files/ssl/postgresql.crt
bam.ose.secret.datasource.ssl.key.location=ansible/files/ssl/postgresql.key

При использовании установки через pipeline CD достаточно в common репозиторий положить сертификаты в директорию ansible/files/ssl/ как указано в примере выше и установка секрета пройдет автоматически. При ручной установке, секрет нужно будет создать вручную

kubectl create secret generic bamn-secret-common-certs  --from-file=ansible/files/ssl/common.jks --from-file=ansible/files/ssl/root.crt  --from-file=ansible/files/ssl/postgresql.crt --from-file=ansible/files/ssl/postgresql.key
  1. bamn-secret-logger-kafka-certs – должен содержать сертификаты для работы с сервисом журналирования:

  • logger_private-key.pem;

  • logger_cert.pem;

  • logger_cacerts.cer. См. «Настройка журналирования» (bam.fluent-bit-sidecar.all.conf расположен в config/parameters): Для указанного секрета используются переменные конфигурационного файла bam.fluent-bit-sidecar.all.conf.

# !!! Имена файлов сертификатов bamn-secret-logger-kafka-certs
# Используется для шаблонизации секрета bamn-secret-logger-kafka-certs
# Должен соответствовать с тем что заполнено в блоке переменных: Путь на поде до файлов сертификатов для kafka журналирования
fluent-bit-sidecar.ose.secret.kafka.private.key.fileName=logger_private-key.pem
fluent-bit-sidecar.ose.secret.kafka.cert.fileName=logger_cert.pem
fluent-bit-sidecar.ose.secret.kafka.cacert.fileName=logger_cacerts.cer
# !!! Пути к сертификатам в common репозитории
# на их основе будет создан секрет bamn-secret-logger-kafka-certs который будет содержать:
#   ${fluent-bit-sidecar.ose.secret.kafka.private.key.fileName}
#   ${fluent-bit-sidecar.ose.secret.kafka.cert.fileName}
#   ${fluent-bit-sidecar.ose.secret.kafka.cacert.fileName}
fluent-bit-sidecar.ose.secret.kafka.private.key.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.private.key.fileName}
fluent-bit-sidecar.ose.secret.kafka.cert.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.cert.fileName}
fluent-bit-sidecar.ose.secret.kafka.cacert.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.cacert.fileName}

При использовании установки через pipeline CD достаточно в common репозиторий положить сертификаты в директорию ansible/files/ssl/ как указано в примере выше и установка секрета пройдет автоматически.

При ручной установке, секрет нужно будет создать вручную

kubectl create secret generic bamn-secret-logger-kafka-certs --from-file=ansible/files/ssl/logger_private-key.pem --from-file=ansible/files/ssl/logger_cert.pem  --from-file=ansible/files/ssl/logger_cacerts.cer
  1. Опционально (при использовании ОТТ): bamn-secret-ott-certs Для указанного секрета используются переменные конфигурационного файла bam.ott-sidecar.all.conf.

# Имя секрета, по умолчанию создается bamn-secret-ott-certs с двумя jks - ott_keystore.jks, ott_truststore.jks
# на основе путей ott-sidecar.ose.secret.keystore.location и ott-sidecar.ose.secret.truststore.location
ott-sidecar.ose.deployment.spec.template.spec.volumes.name.ott-certs.secret.secretName=bamn-secret-ott-certs

# !!! Имена файлов к хранилищам сертификатов должны соответствовать с тем что заполнено в location и path
# используется для генерации секретов в файле по параметру ott-sidecar.ose.deployment.spec.template.spec.volumes.name.ott-certs.secret.secretName
ott-sidecar.ose.secret.ott.keystore.fileName=ott_keystore.jks
ott-sidecar.ose.secret.ott.truststore.fileName=ott-truststore.jks

# !!! Пути к хранилищам сертификатов ott в репозитории на их основе будет создан bamn-secret-ott-certs с ott_keystore.jks, ott_truststore.jks
ott-sidecar.ose.secret.keystore.location=ansible/files/ssl/${ott-sidecar.ose.secret.ott.keystore.fileName}
ott-sidecar.ose.secret.truststore.location=ansible/files/ssl/${ott-sidecar.ose.secret.ott.truststore.fileName}

При использовании установки через pipeline CD достаточно в common репозиторий положить сертификаты в директорию ansible/files/ssl/ как указано в примере выше и установка секрета пройдет автоматически.

При ручной установке, секрет нужно будет создать вручную

kubectl create secret generic bamn-secret-ott-certs --from-file=ansible/files/ssl/ ott_keystore.jks --from-file=ansible/files/ssl/ott-truststore.jks
  1. Сертификаты Istio требуются для работы сервисов BAMN: selector, administrator и pull-processing. По умолчанию настроены в режиме mutual TLS (mTLS) и требуются для всех взаимодействий по протоколу HTTPs. 4.1. Указываем корневые сертификаты, которые будут использоваться при mTLS соединении на egress. Для этого в bam.istio.all.conf определены следующие переменные:

# Список alias корневых сертификатов egress (Certification authority, CA): bam.ose.istio.secret.egressRootCertAlias=${ssl.ose.istio.keyStore.egress.CertAlias} # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка bam.ose.istio.secret.egressRootCertAlias: bam.ose.istio.secret.egressKeyStoreFile=${ssl.ose.istio.keyStore.egress.KeyStoreFromFile} # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.egressKeyStorePass=${ssl.ose.istio.keyStore.egress.password}

По умолчанию переменные ссылаются на переменные common репозитория: installer/system/efs/config/parameters/ssl.conf

# Список alias корневых сертификатов, перечислить через запятую без пробелов ssl.ose.istio.keyStore.egress.CertAlias=istio # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка ssl.ose.istio.keyStore.egress.KeyStoreFromFile=ansible/files/ssl/HTTPS.jks

# Данный пароль должен быть заполнен в _passwords.conf среды. Используется для расшифровки jks ssl.ose.istio.keyStore.egress.password=ssl.istio.keyStore.egress.password

Нужно в common репозиторий загрузить сертификат, заполнить переменные из примера выше. В _password.conf common репозитория внести пароль от JKS хранилища сертификатов:

ssl.istio.keyStore.egress.password=

Если нужно переопределить указанные параметры специфичными стендозависимыми значениями, то следует заполнить переменные в bam.istio.all.conf:

# Список alias корневых сертификатов egress (Certification authority, CA) bam.ose.istio.secret.egressRootCertAlias=root,istio # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка bam.ose.istio.secret.egressRootCertAlias bam.ose.istio.secret.egressKeyStoreFile=ansible/files/ssl/istio-ca.jks # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.egressKeyStorePass=ssl.istio.keyStore.egress.password

При этом значение переменной bam.ose.istio.secret.egressKeyStorePass будет равно значению переменной ssl.ose.istio.keyStore.egress.password в _password.conf common репозитория. Можно указать произвольную переменную из _password.conf common репозитория. 4.2. Указываем корневые сертификаты, которые будут использоваться при mTLS соединении на ingress. Для этого в bam.istio.all.conf определены следующие переменные:

# Список alias корневых сертификатов ingress (Certification authority, CA) bam.ose.istio.secret.ingressRootCertAlias=${ssl.ose.istio.keyStore.ingress.CertAlias} # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка bam.ose.istio.secret.ingressRootCertAlias bam.ose.istio.secret.ingressKeyStoreFile=${ssl.ose.istio.keyStore.ingress.KeyStoreFromFile} # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.ingressKeyStorePass=${ssl.ose.istio.keyStore.ingress.password}

По умолчанию переменные ссылаются на переменные common репозитория: installer/system/efs/config/parameters/ssl.conf

# Список alias корневых сертификатов, перечислить через запятую без пробелов ssl.ose.istio.keyStore.ingress.CertAlias=istio # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка ssl.ose.istio.keyStore.ingress.KeyStoreFromFile=ansible/files/ssl/HTTPS.jks # Данный пароль должен быть заполнен в _passwords.conf среды. Используется для расшифровки jks ssl.ose.istio.keyStore.ingress.password=ssl.istio.keyStore.ingress.password

Нужно в common репозиторий загрузить сертификат, заполнить переменные из примера выше. В _password.conf common репозитория внести пароль от JKS хранилища сертификатов:

ssl.istio.keyStore.ingress.password=

Если нужно переопределить указанные параметры специфичными стендозависимыми значениями, то следует заполнить переменные в bam.istio.all.conf:

# Список alias корневых сертификатов egress (Certification authority, CA): bam.ose.istio.secret.ingressRootCertAlias=root,istio # Путь к JKS хранилищу сертификатов, который содержит сертификаты из списка bam.ose.istio.secret.egressRootCertAlias: bam.ose.istio.secret.ingressKeyStoreFile=ansible/files/ssl/istio-ca.jks # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.ingressKeyStorePass=ssl.istio.keyStore.ingress.password

При этом значение переменной bam.ose.istio.secret.ingressKeyStorePass будет равно значению переменной ssl.istio.keyStore.ingress.password в _password.conf common репозитория. Можно указать произвольную переменную из _password.conf common репозитория. 4.3. В случае если не заполнены значения переменных:

bam.ose.istio.secret.egressRootCertAlias=${ssl.ose.istio.keyStore.egress.CertAlias} bam.ose.istio.secret.ingressRootCertAlias=${ssl.ose.istio.keyStore.ingress.CertAlias}

Список alias для сертификата будет взят из переменной common репозитория: installer/system/efs/config/parameters/ssl.conf

ssl.ose.istio.keyStore.RootCertAlias=root

4.4. Сертификаты монтируются как bamn-secret-egressgateway-ca-certs и bamn-secret-ingressgateway-ca-certs ansible/_passwords.conf - зашифрованный файл, содержащий пароли. Местоположение секрета установлена в логике Pipeline CD.

Подготовка секрета с паролями#

Требуемые пароли:

  1. bam.ssl.store-password # Пароль от хранилища сертификатов common.jks

  2. abyss.password # Пароль от Abyss

  3. auth.pvm.password # Пароль от сервиса авторизации (является частью Platform V Monitor Abyss и отвечает за авторизацию), имя пользователя задается в общих конфигах bam.common.all.conf

  4. spring.datasource.password # Пароль к БД, логин в параметре: spring.datasource.username

  5. bam.datasource.sslpassword

В случае установки через pipeline cd переменные необходимо установить в зашифрованном конфигурационном файле _password. Пароли запишутся автоматически в процессе установки в kubernetes. Создастся секрет bamn-secret-encrypted, в котором пароли будут зашифрованы в библиотекой Jasypt.

Подготовка базы данных#

Для BAMN требуется подготовленный экземпляр базы данных, схема, два табличных пространства и пользователь:

  • для DDL операций при раскатке liquibase;

  • для доступа к данным. Схема (без необходимости не менять имя) должна совпадать с параметром BAM_POSTGRES_SCHEMA из common.conf.yml Рекомендуемая схема совпадает со схемой пользователя: pvm_administrator. Табличные пространства:

  • pvm_administrator_ts_idx - для хранения индексов;

  • pvm_administrator_ts_data - для хранения данных. Требуется настроить параметры (common.conf.yml):

  1. Для liquibase добавить в common репозитории параметры с пользователем для создания таблиц:

  • BAM_POSTGRES_URL.Например: jdbc:postgresql://URL/pvmadm;

  • BAM_POSTGRES_SCHEMA. Целевая схема, по умолчанию: pvm_administrator;

  • BAM_POSTGRES_USER. Логин, по умолчанию: pvm_administrator;

  • BAM_POSTGRES_PASS. Пароль от pvm_administrator;

  • BAM_POSTGRES_TS_IDX. Табличное пространство индексов, по умолчанию: pvm_administrator_ts_idx;

  • BAM_POSTGRES_TS_DATA Табличное пространство данных, по умолчанию: pvm_administrator_ts_data.

  1. Параметры пользователя для работы сервисов (заполняются в conf файлах каждого сервиса) bam.administrator.conf, bam.pull-processing.conf, bam.selector.conf

  • spring.datasource.url. Например: jdbc:postgresql://URL/pvmadm;

  • spring.datasource.username. Логин, по умолчанию: pvm_administrator;

  • spring.datasource.password. Пароль от pvm_administrator, обязательно добавить этот параметр в password.conf чтобы этот параметр попал в секреты сервиса.

Настройка общей конфигурации всех сервисов в составе продукта (Administrator, Selector, Pull processing)#

Первый этап:

  • Заполнение custom_property.conf.yml Содержит три обязательных параметра настройки:

  • BAM_USE_SERVICE_TO_BALANCER

  • BAM_DB_CLUSTER

  • BAM_KAFKA_SERVERS Каждая настройка описана в самом custom_property.conf.yml (располагается вместе с параметрами конфигов, папка: «pipeline») с примерами заполнения. Параметр BAM_USE_SERVICE_TO_по умолчанию не обязателен к заполнению если у каждого внешнего сервиса используется уникальное доменное имя. Параметр BAM_USE_SERVICE_TO, заполняется только в случаях, если внешние сервисы находятся за HTTP балансировщиком, который перенаправляет запросы на соответствующий сервис при обращении на порт/префикс пути адреса. При этом необходимо заполнить bam.istio.all.conf.

# Имя хоста балансера, за которым находятся HTTP сервисы (например: Platform V Monitor Abyss, Platform V Audit, аутентификация, авторизация)
bam.ose.istio.egress.common.balancer.hostname=

Второй этап: • Настроить bam.common.all.conf • Настроить bam.istio.all.conf Указываем используемый образ для Istio. Для Openshift использовать:

### Параметры istio
# Путь до образа Istio Envoy
bam.ose.istio.envoy-image=${bam.ose.registry.url}${global.envoy.image.registry.path}/proxyv2-rhel8@sha256:51d82b560e467ec59a3b6625b04c31b86df5b4c10070a351d547cb6cf3f26591

Для Kubernetes использовать:

### Параметры istio
# Путь до образа Istio Envoy
bam.ose.istio.envoy-image=path_to_image/proxyv2:1.12.1.2

Указать контроль панель Istio, наименование сервиса контроль панели и используемый порт

### Параметры istio
# !!! Istio Control plane
bam.ose.istio.control-plane-project=${global.ufs.synapse.controlPlane.project}

################# ConfigMap parameters

# Адрес подключения сервиса mTLS
bam.ose.istio.common.istio-basic.discoveryAddress=istiod-basic.${bam.ose.istio.control-plane-project}.svc:15012

• Настроить bam.administrator.conf • Настроить bam.selector.conf • Настроить bam.fluent-bit-sidecar.all.conf (настройка журналирования) • Настроить bam.openjdk-init-container.all.conf (запускаемый контейнер для подготовки конфигурации журналирования) Параметр для OpenShift:

# Путь до образа openjdk
openjdk-init-container.ose.deployment.spec.template.spec.initContainers.openjdk-init.image=${bam.ose.registry.url}${openjdk-init-container.ose.deployment.spec.template.spec.containers.image.registryPath}/openjdk-11-rhel8@sha256:4cfa218a5912f34b541c67abd73f2e391b47a699413b6f6b2a425c3493f03b4d
openjdk-init-container.ose.deployment.spec.template.spec.containers.image.registryPath=/base/redhat/openjdk

Параметр для Kubernetes:

# Путь до образа openjdk openjdk-init-container.ose.deployment.spec.template.spec.initContainers.openjdk-init.image=${bam.ose.registry.url}${openjdk-init-container.ose.deployment.spec.template.spec.containers.image.registryPath}/alt-p10-openjdk-11:p10 openjdk-init-container.ose.deployment.spec.template.spec.containers.image.registryPath=path_to_image_registry

• Настроить bam.ott-sidecar.all.conf (при использовании ОТТ) Все вышеперечисленные файлы расположены в config/parameters. Все конфигурации в дистрибутиве сопровождаются комментариями и содержат примеры. Все обязательные для настройки параметры выделены отметкой «!!!»

Настройка конфигурации Istio для подключаемых внешних сервисов#

Для взаимодействия с внешними сервисами, BAMN использует ingress/egress Istio.

Для настройки интеграции с другими сервисами внести следующие обязательные ingress/egress параметры в файл bam.istio.all.conf:

  • Platform V Monitor Indicator (INDA):

################# Ingress parameters

# !!! Добавляет проверку Subject Alternative Name сертификатов клиентов.
# Нужно вписать два сертифката - от indicator и АС Советчик
# Параметры IFT: bam.ose.istio.ingress.gateway.spec.servers.tls.subjectAltNames=[вставить свои URL]
bam.ose.istio.ingress.gateway.spec.servers.tls.subjectAltNames=
  • Platform V Monitor Abyss (LGDB)

# !!! Host abyss
bam.ose.istio.egress.common.abyss.host=вставить необходимый Host
# !!! Endpoint abyss: coordinator/api/gateway/v1
bam.ose.istio.egress.common.abyss.endpoint=coordinator/api/gateway/v1
# !!! Внешний порт istio для abyss
bam.ose.istio.egress.common.abyss.port=443
  • Platform V Monitor Audit (AUD)

# !!! Параметры istio для аудита.
bam.ose.istio.egress.common.audit.host=вставить необходимый Host
# !!! Endpoint audit
bam.ose.istio.egress.common.audit.endpoint=
# !!! Внешний порт istio для audit
bam.ose.istio.egress.common.audit.port=443
  • Сервис аутентификации (взаимодействие с СУДИР происходит на стороне Platform V IAM(IAM))

# !!! Параметры istio для аутентификации 
bam.ose.istio.egress.common.authentication.host=вставить необходимый Host

# !!! Endpoint аутентификации: auth/realms/PlatformAuth/protocol/openid-connect/certs
bam.ose.istio.egress.common.authentication.endpoint=auth/realms/PlatformAuth/protocol/openid-connect/certs
# !!! Внешний порт istio для аутентификации
bam.ose.istio.egress.common.authentication.port=443
  • Авторизация (сервис авторизации)

# !!! Параметры istio для сервиса авторизации
bam.ose.istio.egress.common.authorization.host=вставить необходимый Host
# !!! Endpoint авторизации: адрес endpoint
bam.ose.istio.egress.common.authorization.endpoint=v1
# !!! Внешний порт istio для авторизации
bam.ose.istio.egress.common.authorization.port=443
  • Kafka

# !!! Заполнить все IP брокеров кафки
bam.ose.istio.egress.se.spec.addresses.kafka=[IP адреса Kafka]
  • БД Platform V Pangolin или PostgreSQL в конфигурационном файле custom_property.conf.yml заполнить список серверов:

# !!! (обязательно для заполнения) Список серверов в кластере БД (postgresql), минимальное значение: один сервер
# Для каждого сервера в кластере БД описываем путь прохождения трафика:
# BAM_DB_CLUSTER: [{host: "psql-1.ca.345.ru", gateway_port: 8101, internal_egress_port: 7101, destination_port: 6543},{host: "psql-2.ca.345.ru", gateway_port: 8102, internal_egress_port: 7102, destination_port: 6545},{host: "psql-3.ca.345.ru", gateway_port: 8103, internal_egress_port: 7103, destination_port: 6543},{host: "psql-4.ca.345.ru", gateway_port: 8104, internal_egress_port: 7104, destination_port: 6543}]
# host - хостнейм сервера, gateway_port - порт для всех запросов из пода на сервер БД, internal_egress_port - внутренний порт на егрессе, destination_port - порт на сервере БД
# gateway_port и internal_egress_port должны быть уникальны и не пересекаться с уже используемыми портами на егресс
BAM_DB_CLUSTER:

Чек-лист по наличию файлов с ключами и сертификатами:#

  1. bamn-secret-common-certs с сертификатами для работы клиента kafka сервиса (Platform V Monitor Abyss (LGDB), Platform V Flow (BPM)) с файлом common.jks, а также сертификаты для работы базы данных (root.crt, postgresql.crt, postgresql.key).

  2. Секрет bamn-secret-logger-kafka-certs с сертификатами для работы клиента Kafka в FluentBit с файлами:

  • logger_private-key.pem;

  • logger_cert.pem;

  • logger_cacerts.cer.

  1. Секреты Istio с указанием файлов в них:

  • istio.default (cert-chain.pem, key.pem, root-cert.pem);

  • ingressgateway-ca-certs.ver1 (root.crt);

  • ingressgateway-certs.ver1 (tls.crt, tls.key);

  • egressgateway-ca-certs.ver1(root.crt);

  • egressgateway-certs.ver1**(tls.crt, tls.key).


Настройка журналирования#

Установленные конфигурации для конфигурационных файлов: Administrator, Selector, Pull-processing - не требуют изменений или особой настройки. Настройка параметров журналирования осуществляется в конфигурационном файле - bam.fluent-bit-sidecar.all.conf. Пример конфигурации ниже (!!! – отмечены обязательные для заполнения параметры):

# Путь до образа FluentBit
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.image=${bam.ose.registry.url}${fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath}/fluent-bit@sha256:767f20b9246a0209cd3236c2e53419d96df2f4f013ce59d634b1fd581ee8c951
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath=/pprb/ci00641491/ci02469991_logger

# Параметры ресурсов для Sidecar FluentBit
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.requests.cpu=200m
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.requests.memory=200Mi
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.limits.cpu=200m
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.fluent-bit-sidecar.resources.limits.memory=200Mi

#################  Configuration

# !!! Имена файлов сертификатов bamn-secret-logger-kafka-certs
# Используется для шаблонизации секрета bamn-secret-logger-kafka-certs
# Должен соответствовать с тем что заполнено в блоке переменных: Путь на поде до файлов сертификатов для kafka журналирования
fluent-bit-sidecar.ose.secret.kafka.private.key.fileName=logger_private-key.pem
fluent-bit-sidecar.ose.secret.kafka.cert.fileName=logger_cert.pem
fluent-bit-sidecar.ose.secret.kafka.cacert.fileName=logger_cacerts.cer
# !!! Пути к сертификатам в common репозитории
# на их основе будет создан секрет bamn-secret-logger-kafka-certs который будет содержать:
#   ${fluent-bit-sidecar.ose.secret.kafka.private.key.fileName}
#   ${fluent-bit-sidecar.ose.secret.kafka.cert.fileName}
#   ${fluent-bit-sidecar.ose.secret.kafka.cacert.fileName}
fluent-bit-sidecar.ose.secret.kafka.private.key.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.private.key.fileName}
fluent-bit-sidecar.ose.secret.kafka.cert.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.cert.fileName}
fluent-bit-sidecar.ose.secret.kafka.cacert.location=ansible/files/ssl/${fluent-bit-sidecar.ose.secret.kafka.cacert.fileName}
# Пути на поде до файлов сертификатов для kafka журналирования
fluent-bit-sidecar.ose.configmap.kafka.private-key=/etc/config/ssl/${fluent-bit-sidecar.ose.secret.kafka.private.key.fileName}
fluent-bit-sidecar.ose.configmap.kafka.logger-cert=/etc/config/ssl/${fluent-bit-sidecar.ose.secret.kafka.cert.fileName}
fluent-bit-sidecar.ose.configmap.kafka.logger-cacerts=/etc/config/ssl/${fluent-bit-sidecar.ose.secret.kafka.cacert.fileName}

# !!! Параметры Kafka журналирования 
# fluent-bit-sidecar.ose.configmap.kafka.bootstrap.servers=kafka-...:9093,kafka-8...:9093,kafka-7..:9093
fluent-bit-sidecar.ose.configmap.kafka.bootstrap.servers=
# !!! Топик kafka журналирования
fluent-bit-sidecar.ose.configmap.kafka.topic=bam.logger_topic
fluent-bit-sidecar.ose.configmap.kafka.protocol=SSL
fluent-bit-sidecar.ose.configmap.tenant.code=BAM

#################  Configuration end


Журналирование опционально выключить нельзя, Sidecar поднимается всегда.

Настройка мониторинга#

Необходимо в пространстве BAMN реализовать шаги, прописанные в инструкции по установке UNIMON (в составе дистрибутива UNIMON). В рамках BAMN реализуется следующий сценарий мониторинга:

  1. BAMN выставляет метрики в формате Prometheus.

  2. Unimon-agent собирает метрики.

  3. Unimon-sender отправляет метрики в хранилище

Для передачи метрик в Unimon на стороне BAMN в среде контейнеризации устанавливаются сервисы (для Administrator, Selector, Pull processing) с использованием библиотеки Micrometer. Метрики BAMN отображаются через http-endpoint actuator/prometheus, пример сервиса отображен ниже:

kind: Service
apiVersion: 
metadata:
  name: bamn-svc-administrator-micrometer
  namespace: <>
  uid: <>
  resourceVersion: 
  creationTimestamp: <>
  labels:
    app: bamn-administrator
    CHANNEL: unimon
    jenkinsDeployUser: <>
    standardReleaseVersion: <>
    SUBSYSTEM: <>
    distribVersion: <>
    deployDate: <>
    ENVIR: <>
    distribReleaseVersion: <>
    version: <>
    jenkinsDeployId: <>
  annotations:
    description: Exposes Micrometer-Prometheus Administrator
    prometheus.io.path: /actuator/prometheus
    prometheus.io.port: <>
    prometheus.io.scrape: 'true'

Раскатка сервиса#

После выполнения всех подготовительных шагов, выполнить раскатку сервиса: Необходимые playbook:

  • MIGRATION_FP_CONF

  • DB_UPDATE

  • OPENSHIFT_INGRESS_EGRESS_DEPLOY

  • OPENSHIFT_DEPLOY

  • DEBUG (опционально, для подробных логов при отладке)

Проверка раскатки и диагностика#

После и во время раскатки сервиса через job pipeline необходимо произвести проверку результата выполнения (см.Чек-лист валидации установки)

Должно быть развернуто 3 сервиса BAMN (Administrator, Pull processing, Selector) + сервис синтетики для стендов тестирования

Количество подов может меняться и задается в конфигурации сервисов параметром replicas

После развертывания необходимо проверить наличие исключений в логах сервиса, так как не все проблемы могут быть обнаружены через стандартный healthcheck kubernetes (liveness probe, Readiness probe)

Для проверки доступности сервисов через Istio выполнить запрос на базовый endpoint сервиса selector (адрес можно получить в разделе routes):

curl -sSvk https://selector-ver1.ci01976100.../selector/ --cert bam.cer --key bam.key

Необходимо иметь файлы сертификатов если Istio настроен в режиме mutual tls

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

В случае ошибок диагностировать по логам соответствующих сервисов.

Конфигурация для георезервированной схемы подключения#

Необходимо развернуть дистрибутив на разных кластерах контейнеризированого средства оркестрации, при этом:

  • rout сервиса: bam.ose.istio.ingress.common.bam-hostname.https.appFQDN=bam-${openshiftProjectName}.${openshiftAppsDomain}

  • сертификат должен быть выпущен для данного хоста.

Для георезервированного балансера необходимо указать URL для выполнения запросов healthcheck используемых компонентов:

  • Administrator - https://bam-${openshiftProjectName}.${openshiftAppsDomain}/control/administrator/actuator/health/

  • Selector - https://bam-${openshiftProjectName}.${openshiftAppsDomain}/control/selector/actuator/health/

  • Pull Processing - https://bam-${openshiftProjectName}.${openshiftAppsDomain}/control/pull-processing/actuator/health/

где, host - хосты, указанные в rout сервисов

Обновление#

  • Обновление BAMN представляет собой удаление предыдущей версии релиза и установку новой версии релиза через DevOps Tools.

  • Необходимые настройки сервиса будут осуществлены при установке дистрибутива через DevOps Tools. Дополнительных настроек не требуется.

Удаление#

BAMN является частью продукта Platform V Monitor (OPM), который состоит из согласованного набора компонентов определенных версий. Удаление одного из компонентов влечет за собой нарушение работоспособности всего продукта, поэтому процесс удаления необходимо рассматривать в контексте всего Platform V Monitor (OPM). Для удаления непосредственно компонентов BAMN необходимо в среде контейнеризации ввести команду: "kubectl delete all --all"

Проверка работоспособности#

  1. Создание подключения проекта

Шаги:

  • Войти под логином пользователя с доступом к проектам в Abyss

  • Зайти в портал Indicator и перейти в BAMN

  • Создать подключение на странице "Управление подключениями" в UI BAMN. Для начала процесса создания подключения необходимо нажать на кнопку "Создать подключение" и пройти процедуру создания.

Ожидаемый результат

  • После выполнения операции в списке появится новое подключение. В случае, если подключение не удалось создать, перед пользователем в UI BAMN отобразится информационное окно с ошибкой.

  1. Проверка отображения данных в Platform V Monitor Indicator (INDA)

Предусловие: Есть подключенный на первом шаге проект с работающим сервисом BAMN

Шаги:

  • Зайти в административную панель Platform V Flow для генерации событий и выгрузки bpmn

  • В разделе "тестирование" выгрузить bpmn схему, в которой прописан bamProjectId, равный имени проекта, подключенного на 1-ом шаге

  • После добавления схемы найти те, процессы, которые были загружены (так как нужны только те где нужный bamProjectId), запустить их

  • Перейти в grafana (входит в состав Platform V Monitor Indicator(INDA), однако также используется для визуализации BAMN)

  • На графиках выбрать проект подключенный на первом шаге (п.1 "Создание подключения"). Если проекта нет, значит существует проблема с подключением к сервису BAMN Selector, для устранения проблемы необходимо либо заново создать подключение (п.1 "Создание подключения") либо обратиться к администратору сервиса BAMN.

  • После выбора проекта выбрать процессы которые были в bpmn схеме. Если проекта нет, есть проблемы с подключением к сервису BAMN Selector или проблемы с установкой процессинга, для устранения проблемы необходимо либо заново создать подключение (п.1 "Создание подключения") либо обратиться к администратору сервиса BAMN.

Ожидаемый результат Графики отображаются и показывают значения, на основных графиках отсутствует ошибка NO DATA

Откат#

  1. Откат к предыдущей версии BAMN представляет собой удаление и установку последней стабильной версии.

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

Часто встречающиеся проблемы и пути их устранения#

  1. Ошибка монтирования сертификата в событиях пода. Данная ошибка возникает при отсутствии или некорректно созданном секрете для сертификатов selector, administrator и pull-processing. Для устранения необходимо исправить или пересоздать секрет.

  2. Ошибка выгрузки образа. Данная ошибка возникает при отсутствии или некорректном секрете для выгрузки образа. Для устранения необходимо исправить или пересоздать секрет. Для исправления секрета повторить на соответствие шагам, которые описаны в разделе "Подготовка хранилища сертификатов" текущего документа.

  3. Ошибка исчерпания ресурсов namespace. Данная ошибка возникает при отсутствии необходимого количества ресурсов для развертывания сервиса. Для устранения необходимо удалить лишние сущности из namespace, либо расширить квоты.

Чек-лист валидации установки#

  • Раздел Platform V Monitor Business activity monitoring (BAMN) открывается в Platform V Monitor Indicator (INDA) без видимых ошибок.

  • Подключение Platform V Monitor Business activity monitoring (BAMN) в Platform V Monitor Indicator (INDA) проходит штатно. В UI Platform V Monitor Business activity monitoring (BAMN) после выполнения процедуры создания подключения(раздел "Проверка работоспособности" текущего документа),созданное подключение отображается в таблице подключений.

  • Сервис BAMN Selector (в соответствии с доступом предоставляет данные из Platform V Monitor Abyss(LGDB)) доступен через REST API для получения данных.