Установка#
Перед настройкой стенда#
Выделить необходимую квоту в Abyss (LGDB) для каждого проекта (тенанта). Квота на топики и задачи должны соответствовать количеству сервисов, которые будут подключены в BAMN. Информация по созданию и управлению квотами дана в документации компонента Abyss (LGDB) продукта Platform V Monitor (OPM).
Ручная установка#
Для установки сервиса Business activity monitoring (BAMN) вручную необходимо:
Получить дистрибутив сервиса Business activity monitoring (BAMN);
Выполнить или запросить настройку базы данных Platform V Pangolin SE (PSQ) для Business activity monitoring (BAMN). Для корректной установки необходимо обеспечить изолированное пространство имен (Database schema) без сторонних сущностей и таблиц;
Во всех файлах с расширением yaml расположенных в директориях дистрибутива заполнить значения переменных в соответствии с актуальным окружением (Environment);
Заполнить ConfigMaps в разделах дистрибутива /package/conf/k8s/base в соответствии с комментариями по заполнению параметров в файлах .conf из директории /package/conf/config/parameters.
Создать секреты для Istio:
bamn-secret-ingressgateway-certs;
bamn-secret-egressgateway-certs;
bamn-secret-ott-certs (опционально). При ручной установке, секрет нужно будет создать вручную.
kubectl create secret generic bamn-secret-ingressgateway-certs --from-file=server/serverCertificate.pem --from-file=server/privateKey.pem kubectl create secret generic bamn-secret-egressgateway-certs --from-file=client/clientCertificate.pem --from-file=client/privateKey.pem kubectl create secret generic bamn-secret-common-certs --from-file=ansible/files/ssl/common.jks kubectl create secret generic bamn-secret-db-certs --from-file=db/caCertificates.pem --from-file=db/clientCertificate.pem --from-file=db/privateKey.pem kubectl create secret generic bamn-secret-logger-kafka-certs --from-file=fluentbit/caCertificates.pem --from-file=fluentbit/clientCertificate.pem --from-file=fluentbit/privateKey.pem kubectl create secret generic bamn-secret-ott-certs --from-file=ott/caCertificates.pem --from-file=ott/ottService.pem --from-file=ott/moduleCert.pem --from-file=ott/moduleKey.pemНа основе шаблонов файлов из дистрибутива /package/conf/k8s/base/secrets завести секреты в целевом пространстве Kubernetes:
bamn-secret-common-certs;
bamn-secret-logger-kafka-certs;
bamn-secret-encrypted.
Комментарии по заполнению параметров есть в разделе «Подготовка секрета с паролями».
Далее необходимо установить все заполненные файлы .yaml в платформе приложений-контейнеров с помощью команды: «kubectl apply -f .yaml». Необходимо начать с каталога Istio, затем остальные каталоги. Приоритет развертывания: kind: secrets, configmaps, services, deployment, далее приоритет не важен.
Автоматическая установка#
Подготовка стенда#
Выполнить следующие шаги:
Подготовка pipeline.
Подготовка среды контейнеризации (Kubernetes или Red Hat OpenShift4+).
Подготовка хранилища сертификатов.
Подготовка секрета с паролями.
Подготовка базы данных.
Настройка общей конфигурации для всех сервисов в составе продукта.
Настройка конфигурации Istio для подключаемых внешних сервисов.
Настройка журналирования.
Настройка мониторинга.
Подготовка pipeline#
Необходимо подготовить DevOps Tools для развертывания сервисов BAMN. Для раскатки используется стандартный Pipeline CD.
После добавления подсистемы в environment.json, subsystems.json сервис станет доступен для раскатки: см. раздел «Раскатка сервиса».
Добавление дистрибутива в pipeline осуществляется по аналогии с примером в файле environment.json и subsystems.json в common репозитории. В subsystems.json необходимо установить параметр "strict": "false" в используемом subsystem или по умолчанию ("__default")
Данная инструкция не содержит подробную настройку pipeline, так как используемый pipeline сам по себе является отдельным продуктом.
Добавление кластеров kubernetes (openshift) осуществляется, по аналогии с примером в файле multiClusters.json. Для Kubernetes в multiClusters.json использовать параметр «overrides»: []. Для OpenShift использовать парамер «overrides»: [«openshift»].
Подготовка среды контейнеризации Kubernetes#
Необходимо подготовить пространство (проект) в Kubernetes в соответствии с минимальными требованиями по квоте сервисов BAMN.
Установлены следующие требования по квоте:
limits.cpu: '14'
limits.memory: 16Gi
persistentvolumeclaims: '0'
requests.cpu: '14'
requests.memory: 16Gi
Параметры ресурсов определены в конфигурационных файлах соответствующих сервисов и sidecars ВAMN:
bam.administrator.conf;
bam.pull-processing.conf;
bam.selector.conf;
bam.istio.all.conf;
bam.fluent-bit-sidecar.all;
bam.ott-sidecar.all;
bam.secman-sidecar.all.
Файлы расположены в папке config/parameters.
Проект должен быть подключен к Platform V Synapse Service Mesh (SSM) (ISTIO).
Прописан global.ufs.synapse.controlPlane.project=(проект kubernetes) в common репозитории.
Pods приложения (BAMN):
bamn-administrator-{ hash }
bamn-pull-processing-{ hash }
bamn-selector-{ hash }
Служебные pods:
igw-bamn-{ namespace }-{ hash }
begw-bamn-{ namespace }-{ hash }
Приведенные в разделах ниже параметры, конфигурации используются для работы сервиса BAMN в среде Kubernetes. Дополнительные настройки для развертывания в Kubernetes не требуются.
Подготовка хранилища сертификатов#
Для работы сервисов BAMN потребуются следующие сертификаты:
Корневой сертификат (CA) центра сертификации. Имя в среде контейнеризации: bamn-cm-certificate-authority.
Путь до сертификата внутри контейнера определяется переменной в configmap сервисов (bamn-cm-administrator, bamn-cm-pull-processing, bamn-cm-selector):bam.ssl.ca-certificates=/etc/ssl/certs/caCertificates.pemСертификат должен находиться в common репозитории по пути, определяемому переменной конфигурационного файла bam.common.all.conf:
# !!! Путь к корневому сертификату (root CA) bam.ose.secret.common.root.cert.location=ansible/files/ssl/root.crtДанный сертификат используется:
для установления mTLS через Platform V Synapse Service Mesh (SSM) (ISTIO);
для авторизации по HTTPS (TLS) в API Secret Management System (Secman).
Важно: если используется несколько центров сертификации в файле сертификата должны быть прописаны все используемые корневые сертификаты центров сертификации.
Сертификаты для подключения к Kafka компонента Abyss (LGDB) и Platform V Flow (BPM).
Все подключаемые брокеры Kafka должны доверять одному центру сертификации.
Имя секрета в среде контейнеризации:bamn-secret-common-certsПуть до сертификатов внутри контейнера с отключенной интеграцией Secret Management System (Secman), переменные в configmap сервисов:
bamn-cm-administrator, bamn-cm-pull-processing, bamn-cm-selector
# Kafka Abyss bam.ssl.common.client-certificate=/vault/secrets/certs/db/clientCertificate.pem bam.ssl.common.private-key=/vault/secrets/certs/db/privateKey.pem bam.ssl.common.jks-keystore=/vault/secrets/certs/client/common.jks bam.ssl.common.jks-truststore=/vault/secrets/certs/client/common.jksтолько bamn-cm-pull-processing
# Kafka Platform V Flow bam.ssl.kafka.private-key=/vault/secrets/certs/client/privateKey.pem bam.ssl.kafka.client-certificate=/vault/secrets/certs/client/clientCertificate.pem bam.ssl.kafka.jks-keystore=/vault/secrets/certs/client/common.jks bam.ssl.kafka.jks-truststore=/vault/secrets/certs/client/common.jksПуть до сертификатов в сервисе Vault с включенной интеграцией Secret Management System (Secman), переменные в configmap сервисов. Указаны примеры в качестве значений, необходимо заменить на актуальные пути в Secman:
bamn-cm-administrator, bamn-cm-pull-processing, bamn-cm-selector
# Kafka Abyss bam.ssl.common.client-certificate=$__vault{pki:DEV_EXAMPLE/PKI:role-ga-secman-bamn:bam-tribe-om-st-bam-01.apps.stands-vdc01.solution.example:certificate} bam.ssl.common.private-key=$__vault{pki:DEV_EXAMPLE/PKI:role-ga-secman-bamn:bam-tribe-om-st-bam-01.apps.stands-vdc01.solution.example:private_key} bam.ssl.common.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.common.sslpassword}только bamn-cm-pull-processing
# Kafka Platform V Flow bam.ssl.kafka.client-certificate=$__vault{pki:DEV_EXAMPLE/PKI:role-ga-secman-bamn:bam-tribe-om-st-bam-01.apps.stands-vdc01.solution.example:certificate} bam.ssl.kafka.private-key=$__vault{pki:DEV_EXAMPLE/PKI:role-ga-secman-bamn:bam-tribe-om-st-bam-01.apps.stands-vdc01.solution.example:private_key} bam.ssl.kafka.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.kafka.sslpassword}В режиме с отключенной интеграцией Secret Management System (Secman) для указанного секрета используются переменные конфигурационного файла bam.common.all.conf:
# !!! Путь хранилищу сертификатов common.jks в common репозитории # на их основе будет создан секрет bamn-secret-common-certs bam.ose.configmap.common.keystore.location=ansible/files/ssl/st-abyss.keystore.jksДля режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
Сертификаты для подключения к БД PostgreSQL (Platform V Pangolin SE).
Имя секрета в среде контейнеризации:bamn-secret-db-certs
Путь до сертификатов внутри контейнера (переменные в configmap сервисов bamn-cm-administrator, bamn-cm-pull-processing, bamn-cm-selector):bam.ssl.database.client-certificate=/vault/secrets/certs/db/clientCertificate.pem bam.ssl.database.private-key=/vault/secrets/certs/db/privateKey.pem bam.ssl.database.jks-keystore=/vault/secrets/certs/client/common.jks bam.ssl.database.jks-truststore=/vault/secrets/certs/client/common.jksВ режиме с отключенной интеграцией Secret Management System для указанного секрета используются переменные конфигурационного файла bam.common.all.conf:
# !!! Пути к PEM сертификатам в common репозитории для БД postgresql на их основе будет создан секрет bamn-secret-db-certs # корневой (CA) сертификат в формате PEM bam.ose.secret.datasource.ssl.ca.location=ansible/files/ssl/postgresql_ca.crt # клиентский сертификат в формате PEM bam.ose.secret.datasource.ssl.cert.location=ansible/files/ssl/postgresql.crt # private key в формате PEM, должен содержать в себе клиентский сертификат (после private key) bam.ose.secret.datasource.ssl.key.location=ansible/files/ssl/postgresql.keyДля режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
Сертификаты для подключения к Kafka компонента Журналирования (LOGA).
Имя секрета в среде контейнеризации:bamn-secret-logger-kafka-certs
Путь до сертификатов внутри контейнера (переменные в configmapbamn-cm-fluent-bit-sidecar):rdkafka.ssl.key.location /vault/secrets/certs/fluent/private-key.pem rdkafka.ssl.certificate.location /vault/secrets/certs/fluent/cert.pem rdkafka.ssl.ca.location /etc/ssl/certs/caCertificates.pemВ фп-репозитории определяется переменными в файле pvm.service.fluent-bit.all.conf:
# Пути к сертификатам в pod (!!! менять только в случае явных рекомендаций !!!) fluent-bit-sidecar.ose.configmap.kafka.key=/vault/secrets/certs/fluent/private-key.pem fluent-bit-sidecar.ose.configmap.kafka.cert=/vault/secrets/certs/fluent/cert.pem fluent-bit-sidecar.ose.configmap.kafka.cacert=/etc/ssl/certs/caCertificates.pemВ режиме с отключенной интеграцией Secret Management System (Secman) для указанного секрета используются переменные конфигурационных файлов pvm.service.fluent-bit.all.conf:
# !!! Пути к хранилищам сертификатов Kafka Logger в common репозитории # Используется при отсутствии интеграции с Secman fluent-bit-sidecar.ose.secret.kafka.keystore.location=ansible/files/ssl/st-abyss.keystore.jks # !!! Пароль к JKS (хранилищам сертификатов Kafka Logger) # данный пароль должен быть заполнен в _passwords.conf среды. Используется для расшифровки JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location fluent-bit-sidecar.ose.secret.kafka.keystore.password=pvm.ssl.logger.store.password # !!! Alias клиентского сертификата (для JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location) fluent-bit-sidecar.ose.secret.kafka.keystore.cert.alias=host # !!! Alias root сертификата (для JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location) fluent-bit-sidecar.ose.secret.kafka.keystore.root.alias=rootДля режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
Серверные сертификаты Istio Ingress (Platform V Synapse Service Mesh (SSM)).
Имя секрета в среде контейнеризации:bamn-secret-ingressgateway-certs.
Пути до сертификатов Istio внутри контейнера не параметризуются:serverCertificate: /vault/secrets/certs/server/serverCertificate.pem privateKey: /vault/secrets/certs/server/privateKey.pemКорневой сертификат см. п.1. Корневой сертификат (CA) центра сертификации:
caCertificates: /etc/ssl/certs/caCertificates.pem, имя секрета в среде контейнеризацииbamn-secret-ingressgateway-ca-certsВ режиме с отключенной интеграцией Secret Management System (Secman) для указанного секрета используются переменные конфигурационного файла bam.istio.all.conf:
# Alias mTLS сертификата ingress bam.ose.istio.secret.ingressCertAlias=${ssl.ose.istio.keyStore.ingress.CertAlias} # Alias приватного ключа ingress bam.ose.istio.secret.ingressPrivateKeyAlias=${ssl.ose.istio.keyStore.ingress.CertAlias} # Alias к JKS хранилищу сертификатов, который содержит сертификат и private key bam.ose.istio.secret.ingressKeyStoreFile=${ssl.ose.istio.keyStore.ingress.KeyStoreFromFile} # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.ingressKeyStorePass=${ssl.ose.istio.keyStore.ingress.password}Детальное описание настройки см. в Приложение А. Сертификаты Istio. Режим отключенной интеграции Secret Management System (Secman).
Для режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
Клиентские сертификаты Istio Egress (Platform V Synapse Service Mesh (SSM)) Имя секрета в среде контейнеризации:
bamn-secret-egressgateway-certsПуть до сертификатов внутри контейнера:clientCertificate: /vault/secrets/certs/client/clientCertificate.pem privateKey: /vault/secrets/certs/client/privateKey.pemКорневой сертификат см. п.1. Корневой сертификат (CA) центра сертификации:
caCertificates: /etc/ssl/certs/caCertificates.pem, имя секрета в среде контейнеризацииbamn-secret-egressgateway-ca-certsВ режиме с отключенной интеграцией Secret Management System (Secman) для указанного секрета используются переменные конфигурационного файла bam.istio.all.conf:
# Alias mTLS сертификата egress bam.ose.istio.secret.egressCertAlias=${ssl.ose.istio.keyStore.egress.CertAlias} # Alias приватного ключа egress bam.ose.istio.secret.egressPrivateKeyAlias=${ssl.ose.istio.keyStore.egress.CertAlias} # Путь к JKS хранилищу сертификатов, который содержит сертификат и private key bam.ose.istio.secret.egressKeyStoreFile=${ssl.ose.istio.keyStore.egress.KeyStoreFromFile} # Пароль от JKS хранилища сертификатов bam.ose.istio.secret.egressKeyStorePass=${ssl.ose.istio.keyStore.egress.password}Детальное описание настройки см. в Приложение А. Сертификаты Istio. Режим отключенной интеграции Secret Management System (Secman).
Для режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
Сертификаты OTT (One-Time-Token) (опционально) Имя секрета в среде контейнеризации:
bamn-secret-ott-certs
Путь до сертификатов внутри контейнера (переменные в configmapbamn-cm-ott-env-config):OTT_SERVICE_TLS_CRT: /vault/secrets/certs/ott/caCertificates.pem OTT_SERVICE_CRT: /vault/secrets/certs/ott/ottService.pem OTT_CLIENT_CRT: /vault/secrets/certs/ott/moduleCert.pem OTT_CLIENT_PRIVATE_KEY: /vault/secrets/certs/ott/moduleKey.pemВ фп-репозитории определяются переменными в файле pvm.service.ott.all.conf:
# Пути к сертификатам в pod (!!! менять только в случае явных рекомендаций !!!) ott-sidecar.ose.configmap.service.tls.crt=/etc/ssl/certs/caCertificates.pem ott-sidecar.ose.configmap.service.crt=/vault/secrets/certs/ott/ottService.pem ott-sidecar.ose.configmap.client.crt=/vault/secrets/certs/ott/moduleCert.pem ott-sidecar.ose.configmap.client.key=/vault/secrets/certs/ott/moduleKey.pemВ режиме с отключенной интеграцией Secret Management System (Secman) для указанного секрета используются переменные конфигурационного файла pvm.service.ott.all.conf:
# !!! Пути к хранилищам сертификатов OTT в common репозитории # на их основе будет создан секрет bamn-secret-ott-certs ott-sidecar.ose.secret.keystore.location=ansible/files/ssl/ott_keystore.jks ott-sidecar.ose.secret.truststore.location=ansible/files/ssl/ott_truststore.jks # !!! Пароли к JKS (хранилищам сертификатов OTT) # Указанные в переменных пароли должны быть заполнены в _passwords.conf среды. Используется для расшифровки JKS для ОТТ ott-sidecar.ose.secret.keystore.password=pvm.ott.certStore.password ott-sidecar.ose.secret.truststore.password=pvm.ott.trustStore.password # !!! Alias сервисного сертификата ОТТ (для JKS указанного в ott-sidecar.ose.secret.truststore.location) ott-sidecar.ose.configmap.ott_service_cert_alias=ott-service # !!! Alias root сертификата ОТТ (для JKS указанного в ott-sidecar.ose.secret.truststore.location) ott-sidecar.ose.configmap.ott_service_root_alias=rootа так же переменная конфигурационного файла bam.ott-sidecar.all.conf:
# !!! Alias клиентского сертификата ОТТ (для JKS указанного в ott-sidecar.ose.secret.keystore.location) ott-sidecar.ose.configmap.ott_client_cert_alias=bamДля режима включенной интеграцией Secret Management System (Secman) настройку стоит смотреть в разделе SecMan, секрет не будет создаваться в среде контейнеризации при автоматической установке.
SecMan. Управление секретами и сертификатами#
BAMN поддерживает интеграцию с Secret Management System (Secman). Secret Management System (Secman) - это менеджер паролей, который может хранить, извлекать, генерировать и синхронизировать пароли.
Для активации SecMan необходимо в bam.secman-sidecar.conf установить следующие настройки:
secman-sidecar.ose.configmap.vault.enabled=true
По умолчанию интеграция выключена. При отсутствии Secret Management System (Secman), данную настройку необходимо оставить выключенной.
Для корректной работы SecMan необходимы следующие условия:
Настроен сервис SecMan, используемый для текущей инсталляции:
Получены доступы до KV-хранилища;
Получены доступы до PKI-хранилища;
Получены доступы на аутентификацию k8s;
Заведены секреты (таблицы ниже).
Используются два разных типа секретов: сертификаты (PKI и KV) и KV-значения.
Формат сертификатов - PEM. Ключи у сертификатов всегда должны быть:
issuing_ca - CA-сертификат (рекомендуется использовать сертификат, тот же, что и без интеграции с SecMan. Цепочка сертификатов всех доверенных источников);
certificate - клиентский сертификат;
private_key - приватный ключ (в случае подключения к Apache Kafka - ssl-библиотека требует цепочку в приватном ключе. Цепочка должна состоять из: приватного ключа, клиентского сертификата, рутового сертификата);
ttl - период обновления сертификата (если необходим период, отличный от общего для движка).
Используемые сертификаты:
Тип сертификата |
Описание |
FP-параметр конфигурации |
Файл |
|---|---|---|---|
Ingress-сертификаты |
Используются для istio ingress |
secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.source |
bam.secman-sidecar.all.conf |
Egress-сертификаты |
Используются для istio egress |
secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.source |
bam.secman-sidecar.all.conf |
OTT-сертификаты |
Используются для OTT |
secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source |
bam.secman-sidecar.all.conf |
Используемые KV-секреты (все ключи должны быть представлены в одном секрете, например, bamn-secret-encrypted):
FP-параметр конфигурации |
Ключ |
Описание |
Файл |
|---|---|---|---|
bam.ose.configmap.common.jasypt_key |
jasypt_key |
ключ шифрования jasypt (должен быть пустым если в KV храним не шифрованные jasypt пароли) |
bam.common.all.conf |
bam.ose.configmap.common.ssl.common.private-key-password |
bam.common.sslpassword |
пароль от ssl-сертификатов формата PEM для Abyss |
bam.common.all.conf |
bam.ose.configmap.common.ssl.database.private-key-password |
bam.datasource.sslpassword |
пароль от ssl-сертификатов формата PEM для БД |
bam.common.all.conf |
pull-processing.ose.configmap.ssl.kafka.private-key-password |
bam.kafka.sslpassword |
пароль от ssl-сертификатов формата PEM для Kafka Flow |
bam.pull-processing.conf |
bam.ose.configmap.common.abyss.user |
abyss.user |
логин для доступа к Abyss |
bam.common.all.conf |
bam.ose.configmap.common.abyss.password |
abyss.password |
пароль для доступа к Abyss |
bam.common.all.conf |
bam.ose.configmap.common.auth.pvm.user |
auth.pvm.user |
логин для доступа к сервису аутентификации/авторизации PVM |
bam.common.all.conf |
bam.ose.configmap.common.auth.pvm.password |
auth.pvm.password |
пароль для доступа к сервису аутентификации/авторизации PVM |
bam.common.all.conf |
bam.ose.configmap.common.datasource.username |
spring.datasource.username |
логин от БД BAMN |
bam.common.all.conf |
bam.ose.configmap.common.datasource.password |
spring.datasource.password |
пароль от БД BAMN |
bam.common.all.conf |
С правилами подготовки секретов с паролями можно ознакомиться в разделе Подготовка секрета с паролями.
Для авторизации в Secret Management System (Secman) необходимо указать следующие настройки:
Пути до хранилища, используемую роль доступа и группу для namespace кластера OpenShift/Kubernetes в конфигурационном файле bam.secman-sidecar.all.conf:
# !!! Название namespace с секретами secman-sidecar.ose.configmap.vault.config.auto_auth.method.namespace=DEV_EXAMPLE # !!! Роль доступа зависит от кластера OpenShift/Kubernetes и может иметь вид: # "auth/os/<DOMAIN>" для Openshift # "auth/k8s/<DOMAIN>" для K8S # <DOMAIN> - домен 2 уровня, тот что был указан в заявке на подключения Secman к namespaces кластера secman-sidecar.ose.configmap.vault.config.auto_auth.method.mount_path=auth/os/stands-vdc01.solution.example # !!! Группа безопасности secman (пример создания группы ITSD-2436) secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role=role-ga-secman-bamn # Параметры аутентификации secman и пути до хранилища secman-sidecar.ose.configmap.pvm.vault.authentication.type=kubernetes secman-sidecar.ose.configmap.pvm.vault.authentication.k8s.sa-token-file=/var/run/secrets/kubernetes.io/serviceaccount/token secman-sidecar.ose.configmap.pvm.vault.authentication.check-resource=DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV/bamn.platform.secman.vault.secret secman-sidecar.ose.configmap.pvm.vault.authentication.k8s.path=os/stands-vdc01.solution.example secman-sidecar.ose.configmap.pvm.vault.pki.path=DEV_EXAMPLE/PKI secman-sidecar.ose.configmap.pvm.vault.certificates.ttl=6hПараметры подключения к API Secman, конфигурационный файл bam.istio.all.conf, пример:
################# Secman settings # !!! Хостнейм API Secman bam.ose.istio.egress.common.vault.host=secman-example.solution.example # Входящий порт vault bam.ose.istio.egress.common.vault.inside.port=8201 # !!! Используется ли протокол https в режиме passthrough bam.ose.istio.egress.common.vault.passthrough=true # !!! Порт API Secman bam.ose.istio.egress.common.vault.port=8443 # Внутренний порт istio (параметр без необходимости не менять) bam.ose.istio.egress.common.vault.internal-port=7501 # Внутренний http порт istio (параметр без необходимости не менять) bam.ose.istio.egress.common.vault.internal-http-port=7621 # Ограничение на одновременные запросы bam.ose.istio.egress.dr.spec.trafficPolicy.connectionPool.http.http2MaxRequests.vault.host=100 # кол-во ошибок на интервале анализа до того как хост будет исключен из пула соединений bam.ose.istio.egress.dr.spec.trafficPolicy.outlierDetection.consecutiveErrors.vault.host=20 # интервал анализа bam.ose.istio.egress.dr.spec.trafficPolicy.outlierDetection.interval.vault.host=1m # минимальное время на которое исключается хост из пула соединений bam.ose.istio.egress.dr.spec.trafficPolicy.outlierDetection.baseEjectionTime.vault.host=5m ################# END Secman settingsURL подключения к API Secman в конфигурационном файле bam.secman-sidecar.all.conf при этом сформируется автоматически:
# Secman API URL secman-sidecar.ose.configmap.vault.address=https://${bam.ose.istio.egress.common.vault.host}:${bam.ose.istio.egress.common.vault.port}Поддерживаемые движки (engine): KV (key-value), PKI (Public Key Infrastructure - инфраструктура открытых ключей).
Для передачи паролей в приложение BAMN используются KV-значения, в конфигурационном файле bam.common.all.conf необходимо указать пути до ключей в секрете, например:
# !!! Путь к хранилищу key-value с паролями формируется по шаблону $__vault{kv:<неймспейс>/<имя движка>:<имя секрета>:<имя ключа>} bam.ose.configmap.common.jasypt_key=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:jasypt_key} bam.ose.configmap.common.ssl.common.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.common.sslpassword} bam.ose.configmap.common.ssl.database.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.datasource.sslpassword} pull-processing.ose.configmap.ssl.kafka.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.kafka.sslpassword} bam.ose.configmap.common.abyss.user=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:abyss.user} bam.ose.configmap.common.abyss.password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:abyss.password} bam.ose.configmap.common.auth.pvm.user=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:auth.pvm.user} bam.ose.configmap.common.auth.pvm.password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:auth.pvm.password} bam.ose.configmap.common.datasource.username=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:spring.datasource.username} bam.ose.configmap.common.datasource.password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:spring.datasource.password}Для получения сертификатов из движка PKI (автовыпуск сертификатов), в конфигурационном файле bam.secman-sidecar.all.conf необходимо определить переменные:
Включение режима PKI для каждого типа сертификата:
# !!! Istio, автоматическая генерация сертификатов из PKI engine vault secman-sidecar.ose.configmap.vault.secrets.certs.istio.source.pki=true # !!! OTT, автоматическая генерация клиентских сертификатов из PKI engine secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source.pki=true # !!! OTT автоматическая генерация сервисных сертификатов из PKI engine secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.source.pki=trueПуть до движка получения секретов для каждого типа сертификата при генерации сертификатов из PKI, пример:
# !!! Путь до движка получения клиентских сертификатов Istio (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.source=DEV_EXAMPLE/PKI/issue/role-ga-secman-bamn # !!! Путь до движка получения серверных сертификатов Istio (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.source=DEV_EXAMPLE/PKI/issue/role-ga-secman-bamn # !!! Путь до движка получения клиентских сертификатов OTT (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source=DEV_EXAMPLE/PKI/issue/role-ga-secman-bamn # !!! Путь до движка получения сервисных сертификатов OTT (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.source=DEV_EXAMPLE/PKI/issue/role-ga-secman-bamnПараметры выпуска сертификатов для каждого типа сертификата при генерации сертификатов из PKI:
# Настройки генерации сертификатов для kafka secman-sidecar.ose.configmap.vault.secrets.certs.client.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} # !!! Настройки генерации сертификатов для подключения к БД Postgres secman-sidecar.ose.configmap.vault.secrets.certs.db.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} # Настройки генерации клиентских сертификатов istio egress, для vault режима (secman-sidecar.ose.configmap.vault.secrets.certs.istio.source.pki) secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.alt_names=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.ttl=120m # Настройки генерации серверных сертификатов istio ingress, для vault режима (secman-sidecar.ose.configmap.vault.secrets.certs.istio.source.pki) secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.alt_names=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.ttl=120m # !!! Настройки генерации клиентских сертификатов OTT, для vault режима (secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source.pki) secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.alt_names=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.ttl=120m # !!! Настройки генерации сервисных сертификатов OTT, для vault режима (secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.source.pki) secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.cn=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.alt_names=bam-${openshiftProjectName}.${openshiftAppsDomain} secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.ttl=120m
Для получения сертификатов из движка KV (key-value) в конфигурационном файле bam.secman-sidecar.all.conf необходимо определить переменные:
Выключить режим PKI
# !!! Istio, автоматическая генерация сертификатов из PKI engine vault secman-sidecar.ose.configmap.vault.secrets.certs.istio.source.pki=false # !!! OTT, автоматическая генерация клиентских сертификатов из PKI engine secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source.pki=false # !!! OTT, автоматическая генерация сервисных сертификатов из PKI engine secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.source.pki=falseУказать используемое KV для каждого типа сертификата:
# !!! Путь до движка получения клиентских сертификатов Istio (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.client.istio.source=DEV/BAMN/OM/KV/bamn-secret-egressgateway-certs # !!! Путь до движка получения серверных сертификатов Istio (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.server.istio.source=DEV/BAMN/OM/KV/bamn-secret-ingressgateway-certs # !!! Путь до движка получения клиентских сертификатов OTT (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.client.ott.source=DEV/BAMN/OM/KV/ott-client-certs # !!! Путь до движка получения сервисных сертификатов OTT (PKI/KV) secman-sidecar.ose.configmap.vault.secrets.certs.server.ott.source=DEV/BAMN/OM/KV/ott-service-certs
Важно: во всех KV хранилищах используемых для хранения сертификатов использовать следующие ключи (Key):
для корневого сертификата (CA): issuing_ca
для сертификата: certificate
для приватного ключа (private key): private_key
период обновления сертификата: ttl (если необходим период, отличный от общего для движка)
В ином случае не будет корректной передачи сертификата в контейнер из KV хранилища (secrets)
Также допустимы комбинации когда для одного из типов сертификатов включен KV (например ОТТ), а для остальных включен PKI.
Для управления лимитами ресурсов контейнера secman (vault) предусмотрены переменные:
# Настройки requests и limits для sidecar Vault Agent secman-sidecar.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-cpu=50m secman-sidecar.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-requests-mem=64Mi secman-sidecar.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-cpu=100m secman-sidecar.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.agent-limits-mem=128MiПри переходе с версий (4.0, 4.1, релиз кандидатов 4.2, 5.0) на версию 5.1 с поддержкой Secman, необходимо проверить и актуализировать переменные:
bam.common.all.conf
# При включённом SecMan: bam.ose.configmap.common.javaArguments=-Dlogging.config=/opt/logger/conf/logback.xml -XX:MaxRAMPercentage=50.0 -XshowSettings:vm # При выключенном SecMan: bam.ose.configmap.common.javaArguments=-Dlogging.config=/opt/logger/conf/logback.xml -XX:MaxRAMPercentage=50.0 -XshowSettings:vm -Dspring.config.additional-location=file:/vault/secrets/properties/application.propertiesbam.administrator.conf
administrator.ose.configmap.javaArguments=${bam.ose.configmap.common.javaArguments}bam.pull-processing.conf
# При включённом SecMan: pull-processing.ose.configmap.javaArguments=${bam.ose.configmap.common.javaArguments} -Dspring.config.additional-location=file:/etc/configs/pull-processing.properties # При выключенном SecMan: pull-processing.ose.configmap.javaArguments=${bam.ose.configmap.common.javaArguments} -Dspring.config.additional-location=file:/etc/configs/pull-processing.properties,file:/vault/secrets/properties/application.propertiesbam.selector.conf
selector.ose.configmap.javaArguments=${bam.ose.configmap.common.javaArguments}
Подготовка секрета с паролями#
В режиме с отключенной интеграцией Secret Management System (Secman):
В случае установки через pipeline cd переменные необходимо установить в зашифрованном конфигурационном файле _password.conf. Пароли запишутся автоматически в процессе установки в kubernetes. Создастся секрет
bamn-secret-encrypted, в котором пароли будут зашифрованы библиотекой Jasypt, затем будут записаны в файл/vault/secrets/properties/application.propertiesна pod.Требуемые пароли:
abyss.password # Пароль от Abyss
auth.pvm.password # Пароль от сервиса авторизации (является частью компонента Abyss (LGDB) и отвечает за авторизацию), имя пользователя задается в общих конфигурациях bam.common.all.conf. Обращение к сервису авторизации так же авторизуется (basic аутентификация), поэтому на уровне BAMN в password.conf выставляются значения для параметров: bam.ose.configmap.common.auth.pvm.user, auth.pvm.password, bam.ose.configmap.common.auth.pvm.url
spring.datasource.password # Пароль к БД, логин в параметре: spring.datasource.username
bam.ssl.common.private-key-password, # Пароль к private key сертификата Abyss при использовании SSL соединения
bam.ssl.common.jks-keystore-password, # Пароль от keystore-хранилища jks сертификата Abyss
bam.ssl.common.jks-truststore-password, # Пароль от truststore-хранилища jks сертификата Abyss
bam.ssl.database.private-key-password, # Пароль к private key сертификата БД при использовании SSL соединения
bam.ssl.database.jks-keystore-password, # Пароль от keystore-хранилища jks сертификата БД
bam.ssl.database.jks-truststore-password, # Пароль от truststore-хранилища jks сертификата БД
bam.ssl.kafka.private-key-password, # Пароль к private key сертификата Kafka Flow при использовании SSL соединения
bam.ssl.kafka.jks-keystore-password, # Пароль от keystore-хранилища jks сертификата Kafka Flow
bam.ssl.kafka.jks-truststore-password # Пароль от truststore-хранилища jks сертификата Kafka Flow
В режиме с включенной интеграцией Secret Management System (Secman):
создать KV хранилище секретов, см. SecMan. Управление секретами и сертификатами.
помимо паролей нужно указать имена пользователей для возможности использования механизма hot reload. Подробнее о механизме hot reload указано в Руководство по безопасности.
Требуемые ключи:
auth.pvm.user # Логин для сервиса авторизации (является частью компонента Abyss (LGDB) и отвечает за авторизацию)
auth.pvm.password # Пароль от сервиса авторизации
spring.datasource.user # Логин для БД
spring.datasource.password # Пароль к БД
bam.common.sslpassword # Пароль к private key сертификатов Abyss при использовании SSL соединения
bam.datasource.sslpassword # Пароль к private key сертификатов БД при использовании SSL соединения
bam.kafka.sslpassword # Пароль к private key сертификатов Kafka Flow при использовании SSL соединения
jasypt_key # Ключ шифрования паролей (должен быть пустым, если в KV храним не шифрованные jasypt пароли, и должен быть заполнен если пароли зашифрованы через jasypt)
abyss.user # Логин для Abyss (должен быть пустым, если авторизация в Abyss по JWT-токену и должен быть заполнен, если авторизация в Abyss по логину/паролю)
abyss.password # Пароль от Abyss (должен быть пустым, если авторизация в Abyss по JWT-токену и должен быть заполнен, если авторизация в Abyss по логину/паролю)
Подготовка базы данных#
Для BAMN требуется подготовленный экземпляр базы данных и пререквизиты: схема, два табличных пространства и пользователи.
Для их создания нужно запустить команды из скрипта database.sql,
подставив значения в переменные <<id_user_name>>, <<id_db_name>> и <<id_schema_name>> и указав пароли вместо 'you_password'.
Имя созданной схемы указывается в параметре BAM_POSTGRES_SCHEMA из common.conf.yml
Пользователи:
для DDL операций при раскатке liquibase, по умолчанию: bam_migrator, указывается в параметре
BAM_POSTGRES_USER;для работы приложения, по умолчанию: bam_user, в случае работы без secman, указывается в параметре
spring.datasource.username;для работы приложения (со сменой пароля через Secman), по умолчанию: bam_user_secman, в случае работы с secman, указывается в параметре
spring.datasource.username.
Табличные пространства:
для хранения индексов, по умолчанию: bam_ts_idx, указывается в параметре
BAM_POSTGRES_TS_IDX;для хранения данных, по умолчанию: bam_ts_data, указывается в параметре
BAM_POSTGRES_TS_DATA.
Требуется настроить параметры (common.conf.yml):
Для liquibase добавить в common репозитории параметры с пользователем для создания таблиц:
BAM_POSTGRES_URL. Например: jdbc:postgresql://URL/bam_db;
BAM_POSTGRES_SCHEMA. Целевая схема, по умолчанию: bam;
BAM_POSTGRES_USER. Логин, по умолчанию: bam_migrator;
BAM_POSTGRES_PASS. Пароль от bam_migrator;
BAM_POSTGRES_TS_IDX. Табличное пространство индексов, по умолчанию: bam_ts_idx;
BAM_POSTGRES_TS_DATA Табличное пространство данных, по умолчанию: bam_ts_data.
Параметры пользователя для работы сервисов (заполняются в conf файлах каждого сервиса) bam.administrator.conf, bam.pull-processing.conf, bam.selector.conf)
spring.datasource.url. Например: jdbc:postgresql://URL/bam_db;
spring.datasource.username. Логин, по умолчанию: bam_user, либо, при использовании secman, bam_user_secman;
spring.datasource.password. Пароль от bam_user, либо, при использовании secman, пароль от bam_user_secman, обязательно добавить этот параметр в password.conf чтобы этот параметр попал в секреты сервиса.
Настройка общей конфигурации всех сервисов в составе продукта (Administrator, Selector, Pull processing)#
Первый этап:
Заполнение custom_property.conf.yml. Содержит обязательные параметры настройки:
BAM_USE_SERVICE_TO_BALANCER
BAM_DB_CLUSTER
BAM_KAFKA_SERVERS
BAM_KAFKA_SOURCES
BAM_OTT_OSE_DEPLOY (перевести в false, если отсутствует ОТТ)
Каждая настройка описана в самом 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 SE, аутентификация, авторизация)
bam.ose.istio.egress.common.balancer.hostname=
Второй этап:
Настроить bam.common.all.conf ("!!!" - отмечены критические настройки)
### Параметры Abyss
# Сервис Abyss (не менять!!! используется динамическое формирование из переменных конф. файла: bam.istio.all.conf)
bam.ose.configmap.common.abyss.apiUrl=http://${bam.ose.istio.egress.common.abyss.host}:${bam.ose.istio.egress.common.abyss.gateway-port}/${bam.ose.istio.egress.common.abyss.endpoint}
### Аутентификация
# !!! URL KeyCloak, чьи JWT токены считаются валидными. Валидация проходит по полю ISSUER в JWT токене
bam.ose.configmap.common.auth.issuer-uri=https://st-keycloak-01.opsmon.example:8443/auth/realms/PlatformAuth
# Хранилище ключей jwks (не менять!!! используется динамическое формирование из переменных конф. файла: bam.istio.all.conf)
bam.ose.configmap.common.auth.jwk-set-uri=http://${bam.ose.istio.egress.common.authentication.host}:${bam.ose.istio.egress.common.authentication.gateway-port}/${bam.ose.istio.egress.common.authentication.endpoint}
### Авторизация через PVM сервис авторизации
# Сервис авторизации (не менять!!! используется динамическое формирование из переменных конф. файла: bam.istio.all.conf)
bam.ose.configmap.common.auth.pvm.url=http://${bam.ose.istio.egress.common.authorization.host}:${bam.ose.istio.egress.common.authorization.gateway-port}/${bam.ose.istio.egress.common.authorization.endpoint}
# !!! Логин-пароль для доступа к авторизации
bam.ose.configmap.common.auth.pvm.user=user
# auth.pvm.password пароль задается в _passwords.conf
# Namespace и тип ресурса, соответствующие ролевой модели BAM
bam.ose.configmap.common.auth.pvm.namespace=PVM_BASIC_NAMESPACE
bam.ose.configmap.common.auth.pvm.resource-type=PROJECT
# Параметры ролевой модели для определения суперадмина
bam.ose.configmap.common.auth.pvm.super-admin.namespace=PVM_ADMINS
bam.ose.configmap.common.auth.pvm.super-admin.resource-type=ADMIN_PRIVILEGES
bam.ose.configmap.common.auth.pvm.super-admin.resource-name=ADMIN_PRIVILEGES_RESOURCE_ID
# Включен ли маппинг проектов (rn) на их ID в Abyss
bam.ose.configmap.common.auth.pvm.abyss.id.mapping=true
# Время жизни кеша ответа от сервиса авторизации в секундах
bam.ose.configmap.common.auth.pvm.cache-live-time-in-seconds=10
### Параметры базы данных
# !!! Заполнить значениями из словаря BAM_DB_CLUSTER в custom_property.conf.yml
# заполнять в формате host:gateway_port, например для: 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}]
# описано четыре хоста 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}]
# И потому строка подключения будет содержать 4 хоста и каждому хосту соотвествует свой gateway_port (порт для маркировки трафика из pod на БД)
# bam.ose.configmap.common.datasource.db_hosts=psql-1.ca.345.ru:8101,psql-2.ca.345.ru:8102,psql-3.ca.345.ru:8103,psql-4.ca.345.ru:8104
bam.ose.configmap.common.datasource.db_hosts=
# !!! Имя БД
bam.ose.configmap.common.datasource.db_name=pvmadm
# Подключение к БД (!!! не менять, используется динамическое формирование из переменных bam.ose.configmap.common.datasource.db_hosts и bam.ose.configmap.common.datasource.db_name)
bam.ose.configmap.common.datasource.url=jdbc:postgresql://${bam.ose.configmap.common.datasource.db_hosts}/${bam.ose.configmap.common.datasource.db_name}?targetServerType=master&prepareThreshold=0
# !!! Админ пользователь БД
bam.ose.configmap.common.datasource.username=pvm_administrator
# !!! Пароль к БД. С включенным secman -- получение из него, с выключенным -- оставить пустым
bam.ose.configmap.common.datasource.password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:spring.datasource.password}
# !!! Схема БД
bam.ose.configmap.common.datasource.schema=bam
# Параметры подключения
bam.ose.configmap.common.datasource.hikari.maximumPoolSize=5
bam.ose.configmap.common.datasource.hikari.connectionTimeout=30000
bam.ose.configmap.common.datasource.hikari.idleTimeout=600000
# Включение клиентского пула соединений к БД
# параметр должен стоять в true, если подключение напрямую к БД (например, порт 5433) или через haproxy к pgbouncer (например, порт 5101)
# параметр должен стоять в false, если подключение к pgbouncer (например, порт 6544)
bam.ose.configmap.common.datasource.client.pool.enabled=false
### Настройки для подключения к БД через SSL
# Настройки для подключения к БД через SSL на pod
bam.ose.configmap.common.datasource.ssl=true
# https://jdbc.postgresql.org/documentation/head/ssl-client.html
# disable, allow, prefer, require, verify-ca, verify-full
bam.ose.configmap.common.datasource.sslmode=verify-full
# !!! Пути к PEM сертификатам в common репозитории для БД postgresql на их основе будет создан секрет bamn-secret-db-certs
# корневой (CA) сертификат в формате PEM
bam.ose.secret.datasource.ssl.ca.location=ansible/files/ssl/postgresql_ca.crt
# клиентский сертификат в формате PEM
bam.ose.secret.datasource.ssl.cert.location=ansible/files/ssl/postgresql.crt
# private key в формате PEM, должен содержать в себе клиентский сертификат (после private key)
bam.ose.secret.datasource.ssl.key.location=ansible/files/ssl/postgresql.key
# Путь к корневому сертификату БД в pod (!!! менять только в случае явных рекомендаций !!!)
bam.ose.configmap.common.ssl.rootcert=/etc/ssl/certs/caCertificates.pem
### Аудит
# Сервис аудита (не менять!!! используется динамическое формирование из переменных конф. файла: bam.istio.all.conf)
bam.ose.configmap.common.audit.proxy.url=http://${bam.ose.istio.egress.common.audit.host}:${bam.ose.istio.egress.common.audit.gateway-port}/${bam.ose.istio.egress.common.audit.endpoint}
# Включение/выключение аудита, можно выключать только на DEV-стендах!
bam.ose.configmap.common.audit.enabled=true
bam.ose.configmap.common.audit.nodeId=${projectName}.${appsDomain}
bam.ose.configmap.common.audit.module=bamn
# !!! Путь хранилищу сертификатов common.jks в common репозитории
# на их основе будет создан секрет bamn-secret-common-certs
bam.ose.configmap.common.keystore.location=ansible/files/ssl/st-abyss.keystore.jks
bam.ose.configmap.common.ssl.trust-all=false
# !!! Путь к корневому сертификату (root CA) в common-репозитории
bam.ose.secret.common.root.cert.location=ansible/files/ssl/root.crt
# Имя Image pull Secret для получения образов из registry
bam.ose.deployment.common.spec.template.spec.imagePullSecrets.name=nexus-bam
# Настройка Security Context: ID пользователя в контейнере
# Все процессы во всех контейнерах pod'а будут выполнятся с указанным ID пользователя
bam.ose.deployment.common.spec.template.spec.securityContext.runAsUser=1001930000
# Настройка Security Context: Group ID овнера файлов в Volume.
# Определяет группу, в которой Kubernetes будет изменять разрешения для всех файлов в томах, когда тома монтируются в Pod
bam.ose.deployment.common.spec.template.spec.securityContext.fsGroup=${bam.ose.deployment.common.spec.template.spec.securityContext.runAsUser}
# Путь до каталога с образами компонента PV в репозитории заказчика
bam.ose.deployment.spec.template.spec.containers.image.registryPath=/sbt/ci90000085_bam
# Ссылка на registry url образов
bam.ose.registry.url={{ registry }}
Настройки SSL#
# подключение с использованием SSL контекста PVM
bam.ose.configmap.common.ssl.enabled=true
Для выключенного Secman:
Для сертификатов указываем пути монтирования сертификатов на pod, пароли оставляем пустыми.
Формат сертификатов может быть JKS или PEM.
# Настройки common SSL контекста (для подключения к Abyss и сервису авторизации)
# формат сертификатов (JKS или PEM), по умолчанию PEM
bam.ose.configmap.common.ssl.common.certificates-format=PEM
# если формат PEM, заполнить следующие переменные, остальные оставить пустыми:
bam.ose.configmap.common.ssl.common.client-certificate=/vault/secrets/certs/db/clientCertificate.pem
bam.ose.configmap.common.ssl.common.private-key=/vault/secrets/certs/db/privateKey.pem
bam.ose.configmap.common.ssl.common.private-key-password=
# если формат JKS, заполнить следующие переменные, остальные оставить пустыми:
bam.ose.configmap.common.ssl.common.jks-keystore=/vault/secrets/certs/client/common.jks
bam.ose.configmap.common.ssl.common.jks-keystore-password=
bam.ose.configmap.common.ssl.common.jks-truststore=/vault/secrets/certs/client/common.jks
bam.ose.configmap.common.ssl.common.jks-truststore-password=
# Настройки common SSL контекста (для подключения к БД)
# формат сертификатов (JKS или PEM), по умолчанию PEM
bam.ose.configmap.common.ssl.database.certificates-format=
# если формат PEM, заполнить следующие переменные, остальные оставить пустыми:
bam.ose.configmap.common.ssl.database.client-certificate=/vault/secrets/certs/db/clientCertificate.pem
bam.ose.configmap.common.ssl.database.private-key=/vault/secrets/certs/db/privateKey.pem
bam.ose.configmap.common.ssl.database.private-key-password=
# если формат JKS, заполнить следующие переменные, остальные оставить пустыми:
bam.ose.configmap.common.ssl.database.jks-keystore=/vault/secrets/certs/client/common.jks
bam.ose.configmap.common.ssl.database.jks-keystore-password=
bam.ose.configmap.common.ssl.database.jks-truststore=/vault/secrets/certs/client/common.jks
bam.ose.configmap.common.ssl.database.jks-truststore-password=
Для включенного Secman:
Указываем пути до сертификатов и паролей в хранилище (KV или PKI).
Формат сертификатов может быть только PEM.
Настройки common SSL контекста (для подключения к Abyss и сервису авторизации)
bam.ose.configmap.common.ssl.common.certificates-format=PEM
# Заполнить следующие переменные, вариант для PKI:
bam.ose.configmap.common.ssl.common.client-certificate=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.client.cn}:certificate}
bam.ose.configmap.common.ssl.common.private-key=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.client.cn}:private_key}
bam.ose.configmap.common.ssl.common.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.common.sslpassword}
# Заполнить следующие переменные, вариант для KV:
bam.ose.configmap.common.ssl.common.client-certificate=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-common-certs::certificate}
bam.ose.configmap.common.ssl.common.private-key=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-common-certs:private-key}
bam.ose.configmap.common.ssl.common.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.common.sslpassword}
# Эти переменные оставить пустыми:
bam.ose.configmap.common.ssl.common.jks-keystore=
bam.ose.configmap.common.ssl.common.jks-keystore-password=
bam.ose.configmap.common.ssl.common.jks-truststore=
bam.ose.configmap.common.ssl.common.jks-truststore-password=
# Настройки common SSL контекста (для подключения к БД)
bam.ose.configmap.common.ssl.database.certificates-format=PEM
# Заполнить следующие переменные, вариант для PKI:
bam.ose.configmap.common.ssl.database.client-certificate=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.db.cn}:certificate}
bam.ose.configmap.common.ssl.database.private-key=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.db.cn}:private_key}
bam.ose.configmap.common.ssl.database.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.datasource.sslpassword}
# Заполнить следующие переменные, вариант для KV:
bam.ose.configmap.common.ssl.database.client-certificate=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-db-certs::certificate}
bam.ose.configmap.common.ssl.database.private-key=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-db-certs:private-key}
bam.ose.configmap.common.ssl.database.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.datasource.sslpassword}
# Эти переменные оставить пустыми:
bam.ose.configmap.common.ssl.database.jks-keystore=
bam.ose.configmap.common.ssl.database.jks-keystore-password=
bam.ose.configmap.common.ssl.database.jks-truststore=
bam.ose.configmap.common.ssl.database.jks-truststore-password=
Настроить bam.istio.all.conf
Указываем используемый образ для Istio. Для Openshift использовать:
# !!! Путь до образа Istio Envoy ({{ registry }}{{ registry path }}ci90000162_syigeg/istio/proxyv2:istio-release-1.6.14-se-release-1.2.2)
bam.ose.istio.envoy-image=${bam.ose.registry.url}${global.envoy.image.registry.path}/proxyv2@sha256:f9c01f40cb0ea0cf88a94ff21c1246491fdf42b935b40db7f619c71b1fe76587
Для Kubernetes использовать:
### Параметры istio
# Путь до образа Istio Envoy
bam.ose.istio.envoy-image={{ registry }}{{ registry path }}ci90000051_synai_dev/istio_se_dev/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
Дальнейшие настройки Istio см. в разделе «Настройка конфигурации Istio для подключаемых внешних сервисов».
Настроить bam.administrator.conf
Настроить bam.pull-processing.conf
Для выключенного Secman:
Для сертификатов указываем пути монтирования сертификатов на pod, пароли оставляем пустыми.
Формат сертификатов может быть JKS или PEM.
# Настройки SSL контекста для подключения к Kafka
pull-processing.ose.configmap.ssl.kafka.certificates-format=
# если формат PEM, заполнить следующие переменные, остальные оставить пустыми:
pull-processing.ose.configmap.ssl.kafka.client-certificate=/vault/secrets/certs/client/clientCertificate.pem
pull-processing.ose.configmap.ssl.kafka.private-key=/vault/secrets/certs/client/privateKey.pem
pull-processing.ose.configmap.ssl.kafka.private-key-password=
# если формат JKS, заполнить следующие переменные, остальные оставить пустыми:
pull-processing.ose.configmap.ssl.kafka.jks-keystore=/etc/config/ssl/common.jks
pull-processing.ose.configmap.ssl.kafka.jks-keystore-password=
pull-processing.ose.configmap.ssl.kafka.jks-truststore=/etc/config/ssl/common.jks
pull-processing.ose.configmap.ssl.kafka.jks-truststore-password=
Для включенного Secman:
Указываем пути до сертификатов и паролей в хранилище (KV или PKI).
Формат сертификатов может быть только PEM.
# Настройки SSL контекста для подключения к Kafka
pull-processing.ose.configmap.ssl.kafka.certificates-format=PEM
# Заполнить следующие переменные, вариант для PKI:
pull-processing.ose.configmap.ssl.kafka.client-certificate=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.client.cn}:certificate}
pull-processing.ose.configmap.ssl.kafka.private-key=$__vault{pki:${secman-sidecar.ose.configmap.pvm.vault.pki.path}:${secman-sidecar.ose.configmap.vault.config.auto_auth.method.config.role}:${secman-sidecar.ose.configmap.vault.secrets.certs.client.cn}:private_key}
pull-processing.ose.configmap.ssl.kafka.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.kafka.sslpassword}
# Заполнить следующие переменные, вариант для KV:
pull-processing.ose.configmap.ssl.kafka.client-certificate=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-common-certs::certificate}
pull-processing.ose.configmap.ssl.kafka.private-key=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-common-certs:private-key}
pull-processing.ose.configmap.ssl.kafka.private-key-password=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-st-secret-encrypted:bam.kafka.sslpassword}
# Эти переменные оставить пустыми:
pull-processing.ose.configmap.ssl.kafka.jks-keystore=
pull-processing.ose.configmap.ssl.kafka.jks-keystore-password=
pull-processing.ose.configmap.ssl.kafka.jks-truststore=
pull-processing.ose.configmap.ssl.kafka.jks-truststore-password=
Настроить bam.selector.conf
Настроить bam.fluent-bit-sidecar.all.conf и pvm.service.fluent-bit.all.conf (настройка журналирования)
Настроить bam.openjdk-init-container.all.conf (запускаемый контейнер для подготовки конфигурации журналирования)
Настроить bam.ott-sidecar.all.conf и pvm.service.ott.all.conf (опционально, при наличии)
Настроить bam.secman-sidecar.all.conf (опционально, при наличии)
Все вышеперечисленные файлы расположены в config/parameters. Все конфигурации в дистрибутиве сопровождаются комментариями и содержат примеры. Все обязательные для настройки параметры выделены отметкой «!!!»
Настройка конфигурации Istio для подключаемых внешних сервисов#
Для взаимодействия с внешними сервисами, BAMN использует ingress/egress Istio.
Для настройки интеграции с другими сервисами внести следующие обязательные ingress/egress параметры в файл bam.istio.all.conf:
компонент 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=[]
компонент 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 Audit SE (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 SE (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 брокеров kafka
bam.ose.istio.egress.se.spec.addresses.kafka=[IP адреса Kafka]
БД Platform V Pangolin SE (PSQ) или 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 - hostname сервера, gateway_port - порт для всех запросов из pod на сервер БД, internal_egress_port - внутренний порт на egress, destination_port - порт на сервере БД
# gateway_port и internal_egress_port должны быть уникальны и не пересекаться с уже используемыми портами на egress
BAM_DB_CLUSTER:
Настройка журналирования#
Установленные конфигурации для конфигурационных файлов: Administrator, Selector, Pull-processing - не требуют изменений или особой настройки. Настройка параметров журналирования осуществляется в конфигурационных файлах - bam.fluent-bit-sidecar.all.conf и pvm.service.fluent-bit.all.conf. Пример конфигурации ниже (!!! – отмечены обязательные для заполнения параметры):
pvm.service.fluent-bit.all.conf
# config file fluent-bit-sidecar
# !!! Путь до образа
pvm.fluent-bit-sidecar.image=${global.registry.url}${pvm.fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath}/fluent-bit@sha256:324eb1add54dd06bee70c0dd20c47b8ad328ded4c266ca7538088ba9a39a4a1d
pvm.fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath=/sbt/ci90000078_loga/loga
# Параметры fluent-controller
# Перечитывать конфигурацию fluent-bit
logger.fluentbit-sidecar.conf.reload.enabled=true
# Использовать механизм Secman Hotreload
logger.fluentbit-sidecar.vault.reload.enabled=true
# Аргументы запуска приложения через jvm переменную JAVA_OPTS
logger.fluentbit-sidecar.configmap.javaArguments=-XX:+UseContainerSupport -Xmx50m
# Secrets
#путь к клиентскому сертификату и приватному ключу (сюда будут сохраняться сертификат и ключ при интеграции с Secman)
logger.fluentbit-sidecar.certs.path=/vault/secrets/certs/fluent
#путь к корневому сертификату
logger.fluentbit-sidecar.root.path=/etc/ssl/certs/caCertificates.pem
# Параметры ресурсов для sidecar
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=400Mi
################# Configuration
# !!! Пути к хранилищам сертификатов Kafka Logger в common репозитории
# Используется при отсутствии интеграции с Secman
fluent-bit-sidecar.ose.secret.kafka.keystore.location=ansible/files/ssl/st-abyss.keystore.jks
# !!! Пароль к JKS (хранилищам сертификатов Kafka Logger)
# данный пароль должен быть заполнен в _passwords.conf среды. Используется для расшифровки JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location
fluent-bit-sidecar.ose.secret.kafka.keystore.password=pvm.ssl.logger.store.password
# !!! Alias клиентского сертификата (для JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location)
fluent-bit-sidecar.ose.secret.kafka.keystore.cert.alias=host
# !!! Alias root сертификата (для JKS указанного в fluent-bit-sidecar.ose.secret.kafka.keystore.location)
fluent-bit-sidecar.ose.secret.kafka.keystore.root.alias=root
fluent-bit-sidecar.ose.configmap.kafka.protocol=SSL
# размер буфера
fluent-bit-sidecar.ose.configmap.buffering.max.kbytes=5120
# Пути к сертификатам, используются в конфигурации fluentbit
fluent-bit-sidecar.ose.configmap.kafka.key=/vault/secrets/certs/fluent/private-key.pem
fluent-bit-sidecar.ose.configmap.kafka.cert=/vault/secrets/certs/fluent/cert.pem
fluent-bit-sidecar.ose.configmap.kafka.cacert=${logger.fluentbit-sidecar.root.path}
# Уровень логирования
fluent-bit-sidecar.ose.configmap.kafka.log.level=6
################# Configuration end
bam.fluent-bit-sidecar.all.conf
################# FluentBit Configuration
# !!! Параметры kafka журналирования
# fluent-bit-sidecar.ose.configmap.kafka.bootstrap.servers=kafka-7.ca.example.ru:9093,kafka-8.ca.example.ru:9093,kafka-7.ca.example.ru:9093
fluent-bit-sidecar.ose.configmap.kafka.bootstrap.servers=st-abyss-kafka-01.opsmon.example:9093,st-abyss-kafka-02.opsmon.example:9093,st-abyss-kafka-03.opsmon.example:9093
# !!! Топик kafka журналирования
fluent-bit-sidecar.ose.configmap.kafka.topic=uLogger.qwerty
fluent-bit-sidecar.ose.configmap.tenant.code=BAM
# Клиентский сертификат для pvm-common библиотеки в fluent-bit-sidecar, копируется в /vault/secrets/certs/fluent/cert.pem
# Указывать только в случае, если включена интеграция с Vault, иначе оставить пустой
fluent-bit-sidecar.ose.secret.cert.pem=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-logger-kafka-certs:certificate}
# Приватный ключ для pvm-common библиотеки в fluent-bit-sidecar, копируется в /vault/secrets/certs/fluent/private-key.pem
# Указывать только в случае, если включена интеграция с Vault, иначе оставить пустой
fluent-bit-sidecar.ose.secret.private-key.pem=$__vault{kv:DEV_EXAMPLE/A/DEV_EXAMPLE/OM/BAMN/KV:bamn-secret-logger-kafka-certs:private_key}
################# Configuration end
Журналирование опционально выключить нельзя, Sidecar поднимается всегда.
Настройка мониторинга#
Необходимо в пространстве BAMN реализовать шаги, прописанные в инструкции по установке компонента Объединенный мониторинг Unimon (MONA) (в составе дистрибутива UNIMON). В рамках BAMN реализуется следующий сценарий мониторинга:
BAMN выставляет метрики в формате Prometheus.
Unimon-agent собирает метрики.
Unimon-sender отправляет метрики в хранилище
Для передачи метрик в Объединенный мониторинг Unimon (MONA) на стороне 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).
Количество pods может меняться и задается в конфигурации сервисов параметром replicas.
После развертывания необходимо проверить наличие исключений в логах сервисов и sidecars, так как не все проблемы могут быть обнаружены через стандартный healthcheck kubernetes (liveness probe, Readiness probe).
Для проверки доступности сервисов через Istio выполнить запрос на базовый endpoint сервиса selector (адрес можно получить в разделе Networking > Routes в OSE или в манифесте kind:Ingress для k8s):
curl -sSvk https://<хост ingress>/selector/ --cert bam.cer --key bam.key
Необходимо иметь файлы сертификатов если Istio настроен в режиме mutual TLS.
Ожидаемый ответ – текстовое сообщение с приветствием пользователя.
В случае ошибок диагностировать по логам соответствующих сервисов.
Чек-лист по наличию файлов с ключами и сертификатами#
Необходимо проверить наличие нижеперечисленных файлов с сертификатами:
Запущены сервисные pods Istio и наличие в них сертификатов mTLS:
ls -l /etc/ssl/certs/caCertificates.pem
ls -l /vault/secrets/certs/server/privateKey.pem
ls -l /vault/secrets/certs/server/serverCertificate.pem
ls -l /vault/secrets/certs/client/clientCertificate.pem
ls -l /vault/secrets/certs/client/privateKey.pem
При выключенном SecMan: наличие в контейнерах сервисов BAMN (administrator, selector, pull-processing) файла с секретами:
sh-4.4$ ls -l /vault/secrets/properties/application.properties
-rw-r--r--. 1 1001930000 1001930000 519 Nov 30 08:20 /vault/secrets/properties/application.properties
При выключенном SecMan: наличие в контейнерах сервисов (administrator, selector, pull-processing) файлов сертификатов:
ls -l /vault/secrets/certs/client/clientCertificate.pem
ls -l /vault/secrets/certs/client/privateKey.pem
ls -l /vault/secrets/certs/db/clientCertificate.pem
ls -l /vault/secrets/certs/db/privateKey.pem
ls -l /vault/secrets/certs/db/caCertificates.pem
Запущен контейнер fluent-bit-sidecar в pods сервисов BAMN (Administrator, Pull Processing, Selector)
Конфигурация для георезервированной схемы подключения#
Необходимо развернуть дистрибутив на разных кластерах контейнеризированного средства оркестрации, при этом:
route сервиса:
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 сервисов