Руководство по установке#
В руководстве приведены инструкции по установке компонента Сервис управления справочными данными (NSIX) продукта Platform V Dictionaries (SDT).
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной ИС, выбираются при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований ИБ, предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного ПО, которые обязательны или опциональны для установки, настройки, контроля и функционирования NSIX. В каждой категории перечислены все поддерживаемые продукты/компоненты. Клиенту необходимо выбрать один из вариантов в каждой категории, исходя из условий использования конечной ИС.
Обязательность установки (Да/Нет) |
Наименование ПО и версия |
Описание |
|---|---|---|
Да |
Альт 8 СП 10.0 и выше или |
Операционная система |
Да |
Platform V DropApp (K8S) 2.0 и выше (K8S Core (K8SC)) или |
Среда контейнеризации |
Да |
Docker CE 1.23 и выше |
Средство контейнеризации |
Да |
Jenkins 2.361.4 и выше или |
Инструмент сборки, тестирования, развертывания контейнеризированных приложений |
Да |
AdoptOpenJDK (Adoptium) 11 и выше или |
Java-машина |
Да |
PostgreSQL 11.7 и выше или |
Система управления базами данных (СУБД) |
Да |
Apache Maven 3.5.4 и выше |
Инструмент управления проектом |
Да |
Nexus-Public 2.5.1 и выше или |
Сервис централизованного хранения репозиториев артефактов (хранилище артефактов) |
Да |
Сервис централизованного хранения репозиториев исходного кода |
|
Да |
Istio 2.0 и выше или |
Сервис интеграции и оркестрации микросервисов в облаке |
Нет |
Secret Management System (SecMan) 1.7.0 и выше или |
Система управления секретами |
Да |
Яндекс.Браузер 19 и выше |
Браузер |
Да |
Liquibase любая актуальная версия |
Система для управления изменениями баз данных |
Нет |
Platform V SynGX (SNX) 2.0 и выше (Веб-сервер и обратный прокси-сервер SynGX (SNGX)) |
Веб-сервер и обратный прокси-сервер |
Нет |
Platform V Audit SE (AUD) 4.2 и выше (Аудит (AUDT)) |
Регистрация и долговременное хранение событий информационной безопасности из автоматизированной системы (АС) |
Нет |
Kiali 1.24.3 и выше или |
Система визуализации данных |
Нет |
Elasticsearch 7.17 и выше или |
Система сбора и хранения логов |
Нет |
Platform V IAM SE (IAM) 1.6 и выше (IAM Proxy (AUTH), Объединенный сервис авторизации (ОСА) (AUTZ)) |
Сервис управления аутентификацией и авторизацией в бизнес-приложениях |
Нет |
Platform V Backend (#BD) 4.5.21.0 и выше (One-Time Password (OTP) / OTT (OTTS)) |
Сервис для аутентификации и авторизации межсервисных взаимодействий |
Нет |
VictoriaMetrics 1.52.0 |
Сервис хранения данных метрик |
Да |
Apache Kafka 2.7.0 и выше при условии сохранения обратной совместимости или |
Сервис хранения данных метрик |
Примечание
Примечание
*
Да — ПО, необходимое для функционирования сервиса, без установки которого не гарантирована работоспособность.
Нет — ПО, необязательное для функционирования сервиса, установка которого не влияет на работоспособность основных функций.
**Минимальная версии программного обеспечения, на которой гарантируется работоспособность. Использование версий выше заявленной возможно до потери обратной совместимости.
Аппаратные требования#
Для установки NSIX требуется следующая конфигурация аппаратного обеспечения:
Квота на проект: 16 CPU, 32 ГБ Mem;
Количество pods на один элемент развертывания (deployment unit): 1.
Подсказка
Подсказка
Расчет потребности в физическом оборудовании происходит на основе коэффициентов повторной подписки, применяемых к требованиям
по виртуальным ресурсам для каждого из стендов.
Для установки NSIX со всеми его модулями требуется нижеописанная конфигурация аппаратного обеспечения.
Название модуля |
ПО среды функционирования |
Количество |
CPU (ГБ) |
ОЗУ (ГБ) |
Внутренние диски |
Горизонтальное масштабирование |
|---|---|---|---|---|---|---|
mdc-ivs |
Kubernetes/DropApp (опционально Openshift) |
1 |
4,65 |
4,65 |
— |
Нет |
mdc-jobs |
Kubernetes/DropApp (опционально Openshift) |
3 |
2,69 |
6,65 |
— |
Да |
mdc-kmd |
Kubernetes/DropApp (опционально Openshift) |
1 |
2,65 |
2,65 |
— |
Нет |
mdc-api |
Kubernetes/DropApp (опционально Openshift) |
1 |
2,69 |
4,65 |
— |
Нет |
mdc-ui |
Kubernetes/DropApp (опционально Openshift) |
1 |
0,7 |
0,7 |
— |
Нет |
Предупреждение
Важно!
Для стабильной работы NSIX рекомендуется использовать Guaranteed Quality of Service (QoS). Именно этот класс QoS pods позволяет быстро и качественно обрабатывать большие справочники.
Параметры горизонтального масштабирования приведены в таблице ниже:
Параметр |
Значение |
Описание параметра |
|---|---|---|
|
3 |
Основной параметр репликации |
|
5 |
Максимально допустимое количество pods для модуля mdc-jobs |
|
30 |
Значение утилизации CPU pod, выше которого необходимо инициировать поднятие нового pod |
Примечание
Примечание
При горизонтальном масштабировании продукта рекомендуется предварительно провести нагрузочное тестирование на целевой конфигурации конкретной инсталляции.
Предупреждение
Важно!
Максимальное количество pods ограничено.
Состав дистрибутива#
Состав дистрибутивного комплекта при первоначальной установке компонента:
Элемент дистрибутива |
Описание элемента дистрибутива |
|---|---|
\package\bh |
Исполняемые JAR-файлы в среде JVM: |
\package\conf |
Конфигурационные файлы NSIX |
\package\conf\config\parameters |
Файлы конфигурационных параметров, общие для всех pods оркестратора среды контейнеризации mdc.all.conf (а также для каждого pod в частности) |
\package\conf\data |
Каталоги, содержащие файлы импорта данных для платформенных компонентов AUTH и LOGA |
\package\conf\k8s\base |
Каталог, содержащий общие файлы настроек Istio, Docker, ConfigMaps, Secrets для оркестраторов среды контейнеризации, а также Deployment configs для Kubernetes |
\package\conf\k8s\overrides\openshift |
Каталог, содержащий файлы настроек Deployment configs для оркестратора среды контейнеризации OpenShift (опционально) |
\package\conf\distrib.yml |
Файл, описывающий расположение и состав дистрибутива |
\package\conf\pipeline.yml |
Файлы с настройками для системы CI/CD по установке сервиса |
\package\db |
Скрипты Liquibase для инициализации объектов БД |
Выбор способа установки#
Целевым является способ установки NSIX с помощью компонента Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT).
Подготовка окружения#
Настройка системного ПО сервера приложений компонента NSIX#
Настройки из данного раздела выполняются системным администратором компонента. Действия осуществляются под учетной записью пользователя root, либо через sudo, если права позволяют редактировать текст системных файлов, владельцем которых является root.
Настройка сетевого взаимодействия#
Для настройки сетевого взаимодействия необходимо соблюсти следующие требования:
На двух серверах БД NSIX в файле /etc/hosts должна содержаться информация об именах серверов приложений NSIX.
На двух серверах БД NSIX должен быть обеспечен сетевой доступ к данным серверам.
Должен быть обеспечен сетевой доступ к БД серверу конфигуратора Платформы.
IP-адреса и порты серверов необходимо запросить у администраторов NSIX.
Настройка при развертывании в кластере#
Для настройки при развертывании в кластере необходимо соблюсти следующие требования:
На двух серверах приложений NSIX в файле /etc/hosts должна присутствовать следующая информация об именах серверов:
(IP) Кластерное имя сервера приложений компонента;
(IP) Кластерное имя сервера приложений компонента (на первом сервере);
(IP) Кластерное имя сервера приложений компонента (на втором сервере);
(IP) Внутреннее кластерное имя сервера приложений компонента;
(IP) Внутреннее кластерное имя сервера баз данных компонента.
Должен быть обеспечен сетевой доступ ко всем указанным выше серверам.
Подсказка
Подсказка
Внутреннее кластерное имя сервера приложений NSIX используется для организации прямого сетевого взаимодействия с сервером
баз данных NSIX. На сервере баз данных для этих целей используется внутреннее кластерное имя сервера баз данных NSIX.
Подсказка
Подсказка
В качестве примера внутреннего кластерного имени сервера приложений компонента используется имя mdmpapp.
/
В качестве примера внутреннего кластерного имени сервера баз данных компонента используется имя mdmpdb.
Требования к среде установки#
Для корректной работы функциональности NSIX необходимо проверить, работают ли следующие модули NSIX:
mdc-ivs;
mdc-jobs;
mdc-kmd;
mdc-api;
mdc-ui.
Подсказка
Подсказка
NSIX использует модули ядра Platform V. До установки модуля сервисов прикладного ядра следует развернуть и настроить
компоненты Platform V, указанные в разделе Системное программное обеспечение настоящего документа.
Для развертывания компонента NSIX также должен быть установлен сервер приложений DropApp, Kubernetes или Openshift (опционально).
Установка#
Примечание
Примечание
Здесь и далее поддерживаемой системой приложений-контейнеров является DropApp или Kubernetes (использование OpenShift — опционально).
В инструкциях по настройке, в именах переменных и параметрах системы могут встречаться названия систем контейнеризации (оркестрации),
одинаковые и применимые для всех перечисленных сред контейнеризации.
Автоматизированная установка сервиса с использованием Deploy Tools#
Настройка интеграции#
Перед установкой NSIX убедитесь, что выполнены все следующие условия:
У пользователя, производящего установку, должна быть возможность создания репозиториев в GitLab СЕ, Nexus Public и получения прав на чтение/запись, включая права на чтение/запись в ветке master.
Должна наличествовать техническая учетная запись для работы с репозиториями.
Должны быть созданы следующие pipeline-репозитории GitLab СЕ в проектной области, например:
pipeline — репозиторий с кодовой базой релизов pipeline (на каждый стенд — собственный репозиторий);
common — репозиторий с глобальными (одинаковыми для всех компонентов в рамках одного стенда) переменными среды (на каждый стенд — собственный репозиторий).
mdc с параметрами конфигурациями подсистемы MDC.
Должны быть прописаны доступы в репозитории по протоколам SSH+HTTP на чтение/запись во все ветки, в т.ч. в ветку master.
В Nexus Public должны быть размещены дистрибутивы разворачиваемых систем. К данным репозиториям должен быть доступ с правами на чтение для технической учетной записи.
В Nexus Public должны быть созданы репозитории, в которые загружены дистрибутивы всех компонентов pipeline (Installer.Base, Installer.Migration, Installer.Common). (К перечисленным репозиториям должен быть доступ с правами на чтение для технической учетной записи):
AS_EFS_Installer.Base — глобальные настройки и утилиты для pipeline;
AS_EFS_Installer.Migration — дистрибутив утилиты миграции;
AS_EFS_Installer.Common — базовый дистрибутив common (глобальные параметры по умолчанию для pipeline).
В GitLab СЕ должны быть созданы репозитории, в которые загружены дистрибутивы всех компонентов pipeline.
Подготовка инструментов развертывания#
Предусмотрены следующие инструменты развертывания:
JOB Service — job обновления (первичная загрузка кода JOB Deploy на стенд, обновление кода JOB Deploy при выпуске новых релизов JOB Deploy);
JOB Deploy — job развертывания дистрибутивов.
Используя Service job, выполните миграцию актуальных данных для репозиториев common и pipeline:
pipelineVersion=release/<distrib_version>
commonVersion=<distrib_version>
Настройка параметров конфигурации в common-репозитории#
После завершения миграции:
Добавьте подсистему MDC в common-репозиторий.
Заполните environment.json в блоке ENVIR: main.
Пример заполнения
{
"main": {
"credentials": {
"SshKeyCreds": "git_ssh_tech",
"UserPassCreds": "user_pass_tech",
"ansible_vault_id": "encrypt_secret",
"ansible_vault_id_ops": "encrypt_secret",
"jenkinsQAkitCred": "85618fbf-6aac-4c69-be1d-d1fd1895d189",
"openshiftOpsPasswordsCred": "encrypt_pass",
"gatewayClientCer": "gateway_client_cer",
"gatewayClientKey": "gateway_client_key",
"gatewayClientKeystore": "gateway_client_keystore"
},
"ticketID": "true",
"addMarker": "false",
"iag": "true",
"efsReleaseRepo": "",
"platformVersions": [
"R20.1"
],
"openshiftCluster": "https://api.mycompanydomain:6443",
"openshiftAppsDomain": "apps.ift-efs1-ds.mycompanydomain",
"openshiftRegistry": "mycompany/public_efs/v2/efs",
"openshiftInnerRegistry": "mycompany",
"openshiftInnerRegistryCommonNamespace": "devopsefs",
"openshiftInnerRegistryAlias": "mycompany",
"openshiftUseSkopeo": "true",
"openshiftOuterRegistryTLSVerify": "false",
"openshiftInnerRegistryTLSVerify": "false",
"openshiftWaitForDeploySeconds": "600",
"openShiftNewPasswords": "true",
"openshiftMultiClusters": "true",
"openshiftNginx": "true",
"openshiftDeploySteps": {
"deployProtocol": "true",
"archiveConfigs": "true",
"deployConfigMaps": "true",
"deployApps": "true",
"deployJKS": "true",
"deployHPA": "true",
"deployServices": "true",
"deployRoutes": "true",
"deploySecrets": "true"
},
"oseProjectMapping": {
"config": {
"sector": "conf"
}
},
"sector": "true",
"sectorFilter": [
"config"
],
"cleanupPattern": "**/conf/config/parameters/*.conf **/conf/data/**/parameters/*.conf"
}
}
Для авторегулирования числа pods для приложений mdc-jobs требуется развертывание объекта HorizontalPodAutoscaler. Для включения автоскейлинга в модуле jobs необходимо в environment.json в блоке openshiftDeploySteps установить для deployHPA значение true.
Пример заполнения
"openshiftDeploySteps": {
"deployHPA": "true"
}
Пример environment.json
{
"main": {
"credentials": {
"SshKeyCreds": "git_ssh_tech",
"UserPassCreds": "user_pass_tech",
"ansible_vault_id": "encrypt_secret",
"ansible_vault_id_ops": "encrypt_secret",
"jenkinsQAkitCred": "85618fbf-6aac-4c69-be1d-d1fd1895d189",
"openshiftOpsPasswordsCred": "encrypt_pass",
"gatewayClientCer": "gateway_client_cer",
"gatewayClientKey": "gateway_client_key",
"gatewayClientKeystore": "gateway_client_keystore"
},
"ticketID": "true",
"addMarker": "false",
"iag": "true",
"efsReleaseRepo": "",
"platformVersions": [
"R20.1"
],
"openshiftCluster": "https://api.mycompanydomain:6443",
"openshiftAppsDomain": "apps.ift-efs1-ds.mycompany.ru",
"openshiftRegistry": "mycompany/public_efs/v2/efs",
"openshiftInnerRegistry": "mycompany",
"openshiftInnerRegistryCommonNamespace": "devopsefs",
"openshiftInnerRegistryAlias": "mycompany",
"openshiftUseSkopeo": "true",
"openshiftOuterRegistryTLSVerify": "false",
"openshiftInnerRegistryTLSVerify": "false",
"openshiftWaitForDeploySeconds": "600",
"openShiftNewPasswords": "true",
"openshiftMultiClusters": "true",
"openshiftNginx": "true",
"openshiftDeploySteps": {
"deployProtocol": "true",
"archiveConfigs": "true",
"deployConfigMaps": "true",
"deployApps": "true",
"deployJKS": "true",
"deployHPA": "false",
"deployServices": "true",
"deployRoutes": "true",
"deploySecrets": "true"
},
"oseProjectMapping": {
"config": {
"sector": "conf"
}
},
"sector": "true",
"sectorFilter": [
"config"
],
"cleanupPattern": "**/conf/config/parameters/*.conf **/conf/data/**/parameters/*.conf"
}
}
Пример subsystem.json
{
"__default": {
"classifier": "distrib",
"groupId": "Nexus_PROD",
"packaging": "zip",
"strict": "false",
"sqlReport": "false",
"limit": 200,
"deployType": "manual",
"fpType": "p69",
"openshiftProject": "",
"at": {
"groupId": "Nexus_PROD",
"branch": "master",
"classifier": "distrib",
"packaging": "zip"
},
"at_ui": {
"groupId": "Nexus_PROD",
"branch": "master",
"classifier": "distrib",
"packaging": "zip"
}
},
"MDC": {
"app_name": [
"mdc-ivs",
"mdc-jobs",
"mdc-kmd",
"mdc-api",
"mdc-ui"
],
"groupId": "Nexus_PROD",
"artifactId": "CI02910046_MDC",
"fpType": "bts",
"fpi_name": "mdc",
"versionFilter": "4."
},
"MDC_mycompany": {
"app_name": [
"mdc-ivs",
"mdc-jobs",
"mdc-kmd",
"mdc-api",
"mdc-ui"
],
"groupId": "mycompany_PROD.CI90000122_pprbnsi",
"artifactId": "CI90000127_mdc_cloud",
"nexus_repo": "mycompany_PROD",
"fpType": "bts",
"fpi_name": "mdc",
"versionFilter": "4."
}
}
Подсказка
Подсказка
При добавлении нового сектора в subsystem.json добавьте запись о нем в environment.json:
openshiftProjectName — название проекта;
openshiftSATokenCred — credentials из Jenkins (Secret text c содержанием токена сервисного аккаунта с правами развертывания).
Пример multiclusters.json
{
"datacenters": {
"tribe-pf-dev-nsix-vdc16-01": {
"openshiftCluster": "https://api.mycompanydomain:6443",
"openshiftSATokenCred": "token-credential-name",
"openshiftProjectName": "namespace-name",
"openshiftNewRoute": "dummyNewRoute",
"openshiftControlPlane": "dummyIp",
"openshiftControlPlaneIstiodService": "istiod-common-install",
"openshiftRoutersFQDN": [
"dummyIp"
]
}
}
}
Предупреждение
Важно!
При использовании глобальных переменных отредактируйте их под требуемое окружение и добавьте переменные для NSIX,
как показано в примерах ниже.
Добавление глобальных переменных в common.conf.yml
# адрес БД продукта
global.jdbc.mdc_postgres.url=jdbc:postgresql://хост:порт/имя_бд?prepareThreshold=0
# Установка инициализационных скриптов + патчей метамодели. Проводится только 1 раз на чистую схему
isInstallDBInit: false
# Установка всех скриптов патчей (метамодель, модель и данные). Выбрать true только на схему с данными, иначе false
isInstallDBPatchesAll: true
# Установка скриптов патчей метамодели и модели без данных. Проводится, если предыдущий вариант выбран false
isInstallDBPatchesModel: false
# Если выбрать все варианты как "false", по умолчанию устанавливаются только скрипты патчей метамодели
# Имя дополнительного пользователя (не владельца схемы), под которым работает приложение. Если отдельного пользователя нет, параметр не задается
MDC_APPL_USER: mdc_cloud_appl
# Имя дополнительной роли, которую наследуют вспомогательные пользователи приложения. Если таковой нет, параметр не задается
MDC_APPL_ROLE: mdc_cloud_appl_role
Добавление глобальных переменных в _global.jdbc.conf
# адрес БД продукта
global.jdbc.mdc_postgres.url=jdbc:postgresql://хост:порт/имя_бд?prepareThreshold=0
В файл _global.resources.conf необходимо внести конечные хосты.
Примеры конечных хостов приведены в таблице ниже:
Хост |
Категория хоста |
|---|---|
global.platform.ingress.route.https=mdc-01.mdc-dev.apps.mycompanydomain |
Хосты Ingress Nsix |
global.platform.ingress.route.http=mdc-http-01.mdc-dev.apps.mycompanydomain |
|
global.platform.ingress.gateway.https=ingress-gw-mdc-unver |
|
global.platform.ingress.gateway.http=ingress-gw-mdc-unver |
|
global.platform.sgw.route.core.host=mdc-http-test-01.mdc-dev.apps.mycompanydomain |
|
global.platform.baseurl.mdc.ivs=mdc-http-01.mdc-dev.apps.mycompanydomain |
Хосты NSIX |
global.platform.baseurl.mdc.jobs=mdc-http-01.mdc-dev.apps.mycompanydomain |
|
global.platform.baseurl.mdc.kmd=mdc-http-01.mdc-dev.apps.mycompanydomain |
|
global.platform.baseurl.mdc.api=mdc-http-01.mdc-dev.apps.mycompanydomain |
|
global.platform.baseurl.rspit=rspit.dev.apps.mycompanydomain |
|
global.multiClusters.openshiftControlPlane=имя_контрольной_панели_istio |
Контрольная панель Istio |
Примечание
Примечание
Наименования хостов в таблице выше указаны схематично. При заполнении в промышленной среде необходимо указывать целевые
параметры.
Подсказка
Подсказка
При развертывании NSIX в среде контейнеризации OpenShift на данном этапе необходимо внести в список глобальных переменных
NAMESPACE=название_проектной_области_в_Openshift.
Подсказка
Подсказка
В файле ssl.conf необходимо закомментировать (с помощью символа #) значения параметров ssl.ose.keyStore.mq.keyStoreFromFile
и ssl.ose.keyStore.mq.CertAlias, связанных с сертификатами mq, так как на данный момент в NSIX они не используются.
Параметр ssl.ose.keyStore.mq.keyStoreFromFile принимает значение ansible/files/ssl/ukoflssl.jks.
Параметр ssl.ose.keyStore.mq.CertAlias принимает значение ${ssl.ose.istio.keyStore.egress.certAlias}
Добавление глобальных переменных в openshift.conf
Параметр |
Значения |
Комментарий |
|---|---|---|
global.ott.ose_deploy |
true/false |
true, если используется ОТТ, и false в противном случае |
ose.kind_route.deploy |
true/false |
true, если в качестве маршрута ingress развертывается объект типа маршрута, совместимый только с OpenShift. |
secman.secman_injector |
true/false |
true, если используется хранилище паролей и сертификатов Secret Management System вместо обычных secrets |
Образы#
В _global.resources.conf внесите образы.
Пример внесения образов
# Образ Istio
global.multiClusters.openshiftEnvoyImage=mycompany/registry_redhat_io/openshift-service-mesh/proxyv2-rhel8@sha256:320f5bd35c208e00005c01ce0e83c8f05276119f273e9f881da950fdfff59a13
Настройка интеграции с AUTH и AUTZ#
Для настройки интеграции с AUTZ необходимо указать его адрес для NSIX. Для этого необходимо в параметре mdc.configmap.spas.url
прописать URL-адрес сервиса авторизации, на который NSIX будет отправлять запросы на получение прав аутентифицированного пользователя.
AUTZ при получении запроса от NSIX по-указанному URL-адресу возвращает ответ, в котором содержатся права конкретного пользователя.
Специальной настройки для интеграции с AUTH не требуется. AUTH перехватывает запрос, выполняющийся через браузер, и проверяет наличие открытой сессии. Если сессия отсутствует, AUTH запрашивает данные авторизации пользователя (имя пользователя и пароль) и передает запрос в NSIX. NSIX проверяет входящий запрос от AUTH на предмет информации о пользователе.
Установка типа авторизации#
Для установки типа авторизации необходимо установить значение для параметра mdc.configmap.security.authorization.
Допустимы значения в зависимости от типа авторизации:
SPAS —
spas;AUTZ —
auth.
Также необходимо в параметре mdc.configmap.spas.url указать URL до сервиса авторизации и заполнить параметры группы mdc.istio.egress.common.spas.*
для подключения к сервису по egress.
Параметры настройки с сервисом авторизации приведены в таблице ниже:
Параметр |
Значение |
Комментарий |
|---|---|---|
|
|
Адрес сервера SPAS. Если не используется — задать произвольный |
|
|
В случае, если IAM не используется, указать none |
|
|
Тип авторизации IAM |
|
|
Канал IAM |
|
|
Режим IAM |
|
|
Тенант IAM |
|
|
Размер пула IAM |
|
|
Указать false, если необходимо использовать SSL в IAM |
|
|
Пусть к trust store IAM |
|
|
Пароль trust store IAM |
|
|
Путь к публичным ключам IAM |
Подготовка и создание secrets. Настройка серверного сертификата#
Для каждого кластера создайте secrets, которые нужно поместить либо в Secman, либо в хранилище job:
secret-mdc.unver;
secret-mdc-kafka-certs.unver;
ingress-secret-mdc-istio-gateway-ca-certs.unver;
ingress-secret-mdc-istio-gateway-certs.unver;
egress-secret-mdc-istio-gateway-ca-certs.unver;
egress-secret-mdc-istio-gateway-certs.unver;
egress-secret-mdc-ott-ca-certs.unver;
egress-secret-mdc-ott-certs.unver.
Подсказка
Подсказка Первый secret из списка содержит значения типа ключ-значение, такие, как логин и пароль базы данных приложения, S3 и пароли к хранилищам сертификатов. Остальные secrets содержат сертификаты Egress, Ingress, Kafka и ОТТ.
Создание сертификатов Egress, Ingress#
Пример. Создание secret входного шлюза#
Secret входного шлюза состоит из двух ресурсов типа secret. Создание ресурса выполняется с помощью утилиты командной строки — OC client с локальной машины.
Перед началом создания secrets получите следующие файлы:
приватный ключ;
серверный сертификат, подписанный удостоверяющим центром;
цепочка сертификатов.
Выпуск сертификата для создания secret входного шлюза
Подсказка
Подсказка Выдача сертификатов осуществляется удостоверяющим центром. Сертификаты требуется создать для Egress, Ingress и Kafka LOGA. В зависимости от требований, для них могут использоваться как одни и те же, так и разные сертификаты, в последнем случае требуется выполнить аналогичные последовательности шагов.
Для создания группы сертификатов выполните следующие шаги:
Создайте конфигурационный файл запроса на сертификат request.conf.
Пример конфигурационного файла с запросом на сертификат
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
C = RU
L = Moscow
ST = Moscow
O = my company
OU = 00CA
CN = 00CA0001TEST
[ req_ext ]
subjectAltName = @alt_names
extendedKeyUsage = serverAuth,clientAuth - указать нужный
[alt_names]
DNS. 1 = *.apps.mycompanydomain1
DNS. 2 = *.*.apps.mycompanydomain1
DNS. 3 = *.apps.ocp.geo.mycompanydomain1
DNS. 4 = *.apps.mycompanydomain2
DNS. 5 = *.*.apps.mycompanydomain2
DNS. 6 = *.apps.ocp.geo.mycompanydomain2
Подсказка
Подсказка
Необходимо подставить в поля OU и CN на целевые. Вместо mycompanydomain1, mycompanydomain2 и т.д. указывается
кластерное доменное имя DropApp/Openhift/Kunernetes целевого сервера, которое в адресе задается поле apps. В commonName
указывается один из полных адресов хостов сервиса или произвольная строка. В DNS.1, DNS.N указываются полные имена хостов
сервиса. Все адреса приведены в качестве примера и для реальной инсталляции могут отличаться.
Выполните генерацию запроса на сертификат и приватный ключ.
Пример генерации запроса на сертификат и приватный ключ
openssl req -out {НАЗВАНИЕ_ЗАПРОСА_НА_ПОДПИСЬ_В_УЦ}.csr -newkey rsa:2048 -nodes -keyout {НАЗВАНИЕ_КЛЮЧА}.key -config {НАЗВАНИЕ_КОНФИГ_ФАЙЛА}.conf
На основе файла запроса .csr выпустите сертификат .crt в удостоверяющем центре (далее — УЦ) для сервера. Результатом выполнения будут следующие файлы: приватный ключ, целевой сертификат и цепочка подписи (промежуточный УЦ, корневой УЦ):
osecer.key — приватный ключ
osecer.cer — целевой сертификат (может быть в формате pem)
middle.cer — сертификат промежуточного УЦ
root.cer — сертификат корневого УЦ
Подсказка
Подсказка
Названия файлов в реальных промышленных инсталляциях могут отличаться.
Примечание
Примечание
В NSIX с помощью KeyValue-механизма Secret Management System для наполнения TrustStore предусмотрена возможность использования множества удостоверяющих центров (УЦ).
Переведите все три сертификата в формат .pem, если они изначально не выпущены в нем.
Пример перевода сертификатов в формат .pem
openssl x509 -inform der -in osecer.cer -out osecer.pem
openssl x509 -inform der -in middle.cer -out middle.pem
openssl x509 -inform der -in root.cer -out root.pem
В текстовом редакторе создайте новый файл chain.pem. В файл chain.pem по очереди вставьте содержимое файлов с сертификатами middle.pem и root.pem.
В конец файла osecer.pem добавьте содержимое файла chain.pem.
Подсказка
Подсказка
Для Ingress и Kafka Logger используйте те же сертификаты либо при необходимости создайте отдельные аналогичным способом.
Создание хранилища сертификатов в SecMan#
При использовании SecMan, необходимо создать KeyValue-хранилище и поместить в него следующие secrets:
Необходимые secrets:
{
"jdbc.mdc_postgres.user": "имя_прикладного_пользователя_БД",
"jdbc.mdc_postgres.password": "пароль_прикладного_пользователя_БД",
"platform.spas.token": "токен для системы авторизации SPAS, если не применяется — оставить пустым",
"mdc.secret.s3.access_key": "имя_пользователя_для_доступа_к_S3",
"mdc.secret.s3.secret_key": "пароль_пользователя_для_доступа_к_S3",
"mdc.secret.s3.external.access_key": "имя_пользователя_БД_Standin",
"mdc.secret.s3.external.secret_key": "пароль_пользователя_БД_Standin"
}
{
"mdc-cloud.crt.pem": "клиентский сертификат приложения ОТТ в формате base64",
"mdc-cloud.key.pem": "ключ клиентского сертификата приложения ОТТ в формате base64",
"ott-service.crt.pem": "серверный сертификат ОТТ в формате base64",
}
{
"sber_root_ca.crt.pem": "корневой CA сертификат ОТТ в формате base64"
}
Сертификаты, необязательные для добавления в случае использования PKI-движка
{
"tls.crt": "сертификат egress в формате base64",
"tls.key": "ключ сертификата egress в формате base64"
}
{
"truststore_pem": "цепочка корневых + промежуточных CA сертификатов egress в незашифрованном виде"
}
{
"tls.crt": "сертификат ingress в формате base64",
"tls.key": "ключ сертификата ingress в формате base64"
}
{
"truststore_pem": "цепочка корневых + промежуточных CA сертификатов ingress в незашифрованном виде",
}
{
"truststore_pem": "цепочка корневых + промежуточных CA сертификатов ingress в незашифрованном виде"
"tls.crt": "сертификат Kafka egress в формате base64",
"tls.key": "ключ сертификата Kafka egress в формате base64"
}
Примечание
Примечание
Корневые сертификаты обычно используются общие для всей компании. Для logger Kafka могут использоваться отдельные сертификаты, отличные
от сертификатов egress.
Подсказка
Подсказка
Для сертификатов egress, ingress и egress kafka logger можно создать движок PKI, генерирующий сертификаты.
В этом случае при создании движка следует правильно указать commonName, имеющий в общем случае вид apps.mycompanydomain.
В случае использования PKI-движка (параметры ... .pki_engine.enabled=true) соответствующие сертификаты можно не генерировать
и не создавать secrets.
Создание хранилищ сертификатов для job Deploy Tools#
Если использование Secret Management System для хранения сертификатов не планируется, сертификаты следует поместить в хранилище JKS.
Для создания хранилища сертификатов Deploy Tools необходимо выполнить следующие действия:
Сгенерировать хранилище .p12 с помощью команды:
openssl pkcs12 -export -in osecer.pem -inkey osecer.key -out cert_and_key.p12 -name ingress -CAfile chain.pem -caname root
Использовать сгенерированное хранлище .p12 в .jks с помощью команды:
keytool -importkeystore -destkeystore test.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias ingress
# ingress — этот alias уйдет в ssl.conf в common-репозиторий
Импортировать сертификат корневого УЦ в .jks с помощью команды:
keytool -import -trustcacerts -alias root -file root.pem -keystore test.jks
# root — этот alias уйдет в ssl.conf в common репозиторий
Проверить созданное хранилище с помощью команды:
keytool -list -v -keystore test.jks
Импортировать сертификаты промежуточного и корневого УЦ в .jks с помощью команды:
keytool -import -trustcacerts -alias middle -file middle.pem -keystore mq.jks
keytool -import -trustcacerts -alias root -file root.pem -keystore mq.jks
Добавить One-Time Password (OTP) / OTT (OTTS) в egress.jks с помощью команды:
keytool -list -keystore egress_ui.jks
Сформировать .p12-хранилище для последующего импорта в jks с помощью команды:
openssl pkcs12 -export -in ci90000103_smgx_ui_st.pem -inkey ci90000103_smgx_ui_st.key -out ci90000103_smgx_ui_st.p12 -name ci90000103_smgx_ui_st -mycompany.pem -caname ott-ca
Импортировать полученное хранилище в основной nginx.jks с помощью команды:
keytool -importkeystore -destkeystore egress_ui.jks -srckeystore ci90000103_smgx_ui_st.p12 -srcstoretype PKCS12 -alias ci90000103_smgx_ui_st
Пароли необходимо зашифровать в _passwords.conf. Команды для шифрования и расшифровки приведены в таблице:
Команда shell |
Назначение команды |
Файл |
|---|---|---|
|
Шифрование |
_passwords.conf |
|
Расшифровка |
_passwords.conf |
|
Шифрование |
secret.yml |
|
Расшифровка |
secret.yml |
В шифруемый файл _passwords_d.conf необходимо поместить следующие пароли:
Параметр |
Описание |
|---|---|
|
Логин пользователя БД |
|
Пароль пользователя БД |
|
Токен сервиса авторизации |
|
Публичный ключ доступа к S3 |
|
Приватный ключ доступа к S3 |
|
Публичный ключ доступа к S3 для внешних сервисов |
|
Приватный ключ доступа к S3 для внешних сервисов |
|
Пароль от хранилища ingress |
|
Пароль от хранилища egress |
|
Пароль KeyStore для OTT |
|
Пароль TrustStore для OTT |
Подсказка
Подсказка
Пароль шифрования от _passwords.conf должен быть задан в качестве secret в Jenkins.
Настройка доступа к хранилищам сертификатов job Deploy Tools#
Если в качестве хранилища сертификатов используются локальных хранилища и не используется Secret Management System, необходимо в common-репозитории (в файле ssl.conf) задать значения параметров, связанных с сертификатами Istio egress/ingress, а также ОТТ (если используется).
Пример заполнения значений параметров приведен в таблице ниже.
Примечание
Примечание
В примере используется один общий сертификат.
Группа параметров |
Параметр |
Значение параметра |
|---|---|---|
Параметры egress/ingress |
||
|
ingress |
|
|
ansible/files/ssl/ingress.jks |
|
|
ingress |
|
|
ansible/files/ssl/ingress.jks |
|
|
root |
|
|
ssl.ose.istio.keyStore.ingress.password |
|
|
ssl.ose.istio.keyStore.egress.password |
|
Параметры One-Time Password (OTP) / OTT (OTTS) |
|
ansible/files/ssl/ott_store.jks |
|
ansible/files/ssl/ott_trust.jks |
|
|
ssl.ose.istio.keyStore.ott.password |
|
|
ssl.ose.istio.trustStore.ott.password |
Создание secrets One-Time Password (OTP) / OTT (OTTS)#
Для job нужно создать два jks-хранилища: основное и trust-хранилище.
Пароль от основного хранилища — значение параметра
ssl.ose.istio.keyStore.ott.password.Пароль от trust-хранилища —
ssl.ose.istio.trustStore.ott.password.
В основном хранилище необходимо разместить публичный сертификат сервера ОТТ с alias ott-service и подписанный сертификат приложения с alias mdc-cloud.
В trust-хранилище необходимо разместить trust-сертификат с alias sber_root_ca.
Оба файла хранилища следует разместить в репозитории common в папке ansible/files/ssl/ и указать относительный путь к ним в параметрах:
Пример
ssl.ose.istio.keyStore.ott.KeyStoreFromFile=ansible/files/ssl/ott_store.jks
ssl.ose.istio.trustStore.ott.TrustStoreFromFile=ansible/files/ssl/ott_trust.jks
После внесения изменений в common-репозитории, которые должны привести к изменению UI, запустите job без выбора параметров.
Настройка ФП репозитория#
Предупреждение
Важно!
Для всех развертываний NSIX необходимо выставить значения параметра -Djava.net.preferIPv4Stack=true в JAVA_OPTS.
В репозитории mdc должны содержаться все значения стендовых параметров NSIX.
Создайте в репозитории mdc корневую папку с именем, как в репозитории common. В ней создайте папку conf, куда
сохраните файл versions.conf, содержащий строку вида:scriptsVersion=#1d7e44fdf33.
Подсказка
Подсказка
Версии скриптов могут меняться.
Также в новой папке conf создайте подпапку /config/parameters и сохраните в нее conf-файлы, аналогичные тем, что находятся в дистрибутиве в папке parameters, и задайте нужные (целевые) значения.
Конфигурационные файлы с перечнем параметров текущей версии NSIX и их значений:
mdc.all.conf
mdc.fluentbit.sidecar.all.conf
mdc.istio.all.conf
mdc-api.conf
mdc-api.istio.conf
mdc-ivs.conf
mdc-jobs.conf
mdc-kmd.conf
mdc-ui.conf
Параметры для файла mdc.all.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|---|
Параметры Docker |
|
Адрес Docker Registry |
|
— |
|
Относительный путь к образам в Docker Registry |
|
— |
|
|
Относительный путь к образам в Docker Registry для Istio |
|
— |
|
|
Относительный путь к образам в Docker Registry для OTTS |
|
— |
|
|
Относительный путь к образам в Docker Registry для logger Kafka |
|
— |
|
Параметр развертывания |
|
Название класса приоритета для pods приложений NSIX |
Значение по умолчанию не задано, следует оставить пустым |
|
Параметр включения AntiAffinity |
|
Включение AntiAffinity |
|
— |
Параметры БД |
|
Класс диалекта СУБД |
|
Для PostgreSQL класс — org.hibernate.dialect |
|
Класс драйвера БД |
|
Для PostgreSQL драйвер — org.postgresql.Driver |
|
|
Название схемы БД |
|
— |
|
|
Ссылка на БД |
|
Обычно в формате jdbc:типБД://хостБД:портБД/имяБД?prepareThreshold=0 |
|
|
Начальный запрос для подключения к БД |
|
— |
|
|
Запрос проверки подключения к БД |
|
— |
|
Параметры безопасности |
|
Аутентификация |
|
Задается none — если не используется аутентификация, spas — если используется |
|
URL-адрес сервера авторизации |
|
Если не используется — задать произвольный |
|
|
Система аутентификации |
|
none — если не используется аутентификация, sudir, external или iam — если используется указанная система |
|
|
Тип авторизации |
|
none — если не используется, autz — если используется |
|
|
Канал IAM |
|
— |
|
|
Режим работы IAM, если используется |
|
DEV — тестовый, PROD — рабочий (по умолчанию) |
|
|
Тенант IAM |
|
— |
|
|
Размер пула IAM |
|
— |
|
|
Переключатель SSL в IAM |
|
Необходимо задать true, если используется SSL в IAM |
|
|
Путь к trust-хранилищу IAM |
<ссылка на TrustStore> |
— |
|
|
Пароль к trust-хранилищу IAM |
Пароль, соответствующий политике безопасности |
— |
|
|
Путь к публичным ключам IAM |
<ссылка> |
— |
|
|
DEV-режим IAM |
|
По умолчанию |
|
Параметры для logger Kafka LOGA |
|
Список серверов LOGA Kafka для отправки данных в формате хост1:порт1, … |
|
— |
|
Название topic Kafka, куда будут отправляться данные |
|
— |
|
|
Режим шифрования |
|
— |
|
|
Путь к файлу сертификатов Kafka |
|
— |
|
Параметры аудита |
|
Адрес сервиса аудита |
|
— |
|
Переключатель аудита |
|
— |
|
|
Включение аудита изменения записей |
|
— |
|
Параметры ссылок на приложения mdc |
|
Ссылка на хост приложения MDC IVS |
|
По умолчанию ссылается на внутренний сервис |
|
Ссылка на хост приложения MDC JOBS |
|
По умолчанию ссылается на внутренний сервис |
|
|
Ссылка на хост приложения MDC KMD |
|
По умолчанию ссылается на внутренний сервис |
|
|
Ссылка на хост приложения MDC API |
|
По умолчанию ссылается на внутренний сервис |
|
|
Ссылка на хост приложения RSPIT (Витрина данных) |
|
— |
|
Параметры S3 |
|
Установка временной блокировки на загрузку файла для устранения перезаписи файла в многопоточном режиме |
|
— |
|
Регион |
|
— |
|
|
Время ожидания ответа в миллисекундах |
|
— |
|
|
Адрес сервиса S3 |
|
— |
|
|
Имя bucket |
|
— |
|
|
Адрес внешнего хранилища S3 для потребителей |
|
— |
|
|
Имя внешнего bucket потребителя |
|
— |
|
|
Папка в bucket с данными для загрузки |
|
Папка во внешнем bucket потребителя, в который планируется выкладывать файлы для передачи в NSIX |
|
Параметры мониторинга |
|
Активация сервиса ротации |
|
Если true, то приложение отслеживает и реинициализирует secrets автоматически |
|
Ожидание перед реинициализацией подключений |
|
При обнаружении обновлений в secrets выжидает заданное время перед началом реинициализации подключений |
|
|
Количество повторов считывания secrets в случае невозможности считать secret |
|
— |
|
|
Количество повторов реинициализации подключения с новым secrets в случае неудачного подключения |
|
— |
|
|
Раздел на диске пода для метрик мониторинга |
|
— |
|
|
Регион метрик мониторинга |
|
— |
|
|
Аккаунт для метрик мониторинга |
|
— |
|
Параметры SRLS |
|
Специфичный параметр для SRLS |
|
— |
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
|
Специфичный параметр для SRLS |
|
— |
|
Прочие параметры приложений mdc |
|
Размер блока экспортируемых в данных в Витрину данных |
|
— |
|
Отображаемое имя сервера/стенда |
|
— |
|
|
Список документов, работа с которыми будет заблокирована |
|
— |
|
|
Producer_code, зарегистрированный в витрине данных |
|
— |
|
|
Тип хранилища при работе с файлами S3/DB |
|
— |
|
|
Лимит количества записей, возвращаемых в результатах отправленных запросов к Витрине данных |
|
— |
|
|
Размер буфера для чтения и записи файлов |
|
— |
|
|
Размер HTTP-заголовков |
|
— |
|
|
Параметр управляет включением/выключением механизма ротации secrets |
|
Если true — NSIX отслеживает и реинициализирует secrets автоматически. Если |
|
|
Выжидает время после изменения файла |
Значение по умолчанию — 5 |
— |
|
|
Количество попыток считывания файла в случае возникновения проблем доступа к нему |
Значение по умолчанию — 3 |
— |
|
|
Наименование системы, в которую происходит экспорт |
|
На данный момент DATA_MART — единственное доступное значение |
|
|
Название локальной папки |
|
— |
|
|
Время ожидания подключения |
|
— |
|
|
Время ожидания чтения |
|
— |
|
|
Параметр времязависимости |
|
— |
|
|
Параметр времязависимости |
|
— |
|
Параметры ingress/egress Secman |
|
Ссылка на корневой сертификат ingress/egress SecMan |
|
Может быть задан локально, а может ссылаться на глобальную переменную |
Параметры fail strategy |
|
Параметр переключения варианта fail strategy |
|
Переключение значения в |
Параметры Kafka |
|
Список хостов и портов |
|
— |
|
Активация движка |
|
— |
|
|
Активация движка |
|
— |
|
|
Топик событий |
|
— |
|
|
Producer событий |
|
— |
|
|
Топик версий |
|
— |
|
|
Producer событий |
|
— |
|
|
Топик job |
|
— |
|
|
Producer job |
|
— |
|
|
Активация топика |
|
— |
|
|
Активация job |
|
— |
Предупреждение
Важно!
Во время развертывания NSIX поддерживает выбор одной из двух стратегий реакции на ошибку с помощью указания соответствующего значения в конфигурационном параметре:
mdc.configmap.reload_strategy_fail_fast:
Стратегия fail safe. Во время выполнения NSIX использует старые secrets, если обновление secrets или объектов, которые зависят от secrets, завершилось с ошибкой.
Стратегия fail fast. Во время выполнения NSIX завершает работу, если обновление secrets или объектов, которые зависят от secrets, завершилось с ошибкой. При этом NSIX предоставляет возможность завершиться запросам, использующим старые варианты secrets.
Параметры для файла mdc-ivs.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|---|
Параметры репликации |
|
Количество pods модуля |
|
— |
Ресурсы, необходимые для работы модуля |
|
Количество CPU, необходимое для работы модуля |
|
— |
|
Максимальный лимит CPU для работы модуля |
|
— |
|
|
Количество памяти, необходимое для работы модуля |
|
— |
|
|
Максимальный лимит памяти для работы модуля |
|
— |
|
|
Задержка перед первым вызовом проверки готовности pod выполнять запросы |
|
— |
|
Ресурсы, выделяемые для контейнера Istio |
|
Подключение модуля к Istio |
|
— |
|
Количество CPU, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит CPU для контейнера Istio |
|
— |
|
|
Количество памяти, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит памяти для контейнера Istio |
|
— |
|
Ресурсы, выделяемые для контейнера FluentBit-sidecar |
|
Количество CPU, необходимое для контейнера FluentBit-sidecar |
|
— |
|
Максимальный лимит CPU для контейнера FluentBit-sidecar |
|
— |
|
|
Количество памяти, необходимое для контейнера FluentBit-sidecar |
|
— |
|
|
Максимальный лимит памяти для контейнера FluentBit-sidecar |
|
— |
|
Ресурсы, выделяемые для контейнера vault-agent |
|
Количество CPU, необходимое для контейнера vault |
|
— |
|
Максимальный лимит CPU для контейнера vault |
|
— |
|
|
Количество памяти, необходимое для контейнера vault |
|
— |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
— |
|
Параметры Secret Management System |
|
Добавление контейнера vault-agent |
|
— |
|
Имя роли |
|
— |
|
|
Имя тенанта |
|
— |
|
|
Путь к KV-хранилищу secrets |
|
— |
|
Параметры database engine |
|
Активация database-движка |
|
true — если использовать DBEngine, false — если использовать secret из KV-хранилища |
|
Путь к database-движку в SecMan |
|
— |
|
Параметры HikariCP |
|
Тайм-аут валидации соединения |
|
— |
|
Тайм-аут работы в простаивающем режиме |
|
— |
|
|
Тайм-аут соединения |
|
— |
|
|
Максимальное время существования соединения |
|
— |
|
|
Максимальный размер пула соединений |
|
— |
|
|
Минимальное количество простаивающих соединений |
|
— |
|
|
Время, в течение которого соединение может находиться вне пула до обнаружения утечки |
|
0 — если обнаружение отключено |
|
Прочие параметры |
|
Параметры запуска приложения JAVA |
|
— |
|
Пороговое значение размера загружаемого в приложение файла в байтах при многопоточной загрузке |
|
— |
|
|
Путь к локальной папке в pod приложения для хранения экспортируемых и импортируемых файлов |
|
— |
|
|
Путь к локальной папке в pod приложения для временного хранения файлов, полученных из S3 |
|
— |
Параметры для файла mdc-jobs.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|---|
Параметры репликации |
|
Количество pods модуля |
|
— |
|
Максимальное допустимое количество pods для модуля mdc-jobs |
|
— |
|
|
Значение утилизации CPU pod, выше которого необходимо инициировать поднятие нового pod |
|
Максимальное количество pods ограничено |
|
Ресурсы, необходимые для работы модуля |
|
Количество CPU, необходимое для работы модуля |
|
— |
|
Максимальный лимит CPU для работы модуля |
|
— |
|
|
Количество памяти, необходимое для работы модуля |
|
— |
|
|
Максимальный лимит памяти для работы модуля |
|
— |
|
|
Задержка перед первым вызовом проверки готовности pod выполнять запросы |
|
— |
|
Ресурсы, выделяемые для контейнера Istio |
|
Подключение модуля к Istio |
|
— |
|
Ресурсы, выделяемые для контейнера Istio |
|
— |
|
|
Максимальный лимит CPU для контейнера Istio |
|
— |
|
|
Количество памяти, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит памяти для контейнера Istio |
|
— |
|
Ресурсы, выделяемые для контейнера FluentBit-sidecar |
|
Количество CPU, необходимое для контейнера FluentBit-sidecar |
|
— |
|
Максимальный лимит CPU для контейнера FluentBit-sidecar |
|
— |
|
|
Количество памяти, необходимое для контейнера FluentBit-sidecar |
|
— |
|
|
Максимальный лимит памяти для контейнера FluentBit-sidecar |
|
— |
|
Ресурсы, выделяемые для контейнера vault-agent |
|
Количество CPU, необходимое для контейнера vault |
|
— |
|
Максимальный лимит CPU для контейнера vault |
|
— |
|
|
Количество памяти, необходимое для контейнера vault |
|
— |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
— |
|
Параметры Secret Management System |
|
Добавление контейнера vault-agent |
|
— |
|
Имя роли |
|
— |
|
|
Имя тенанта |
|
— |
|
|
Путь к KV-хранилищу secrets |
|
— |
|
Параметры DBEngine secrets SecMan |
|
Активация database-движка |
|
true — если использовать DBEngine, false — если использовать secret из KV-хранилища |
|
Путь к database-движку в SecMan |
|
— |
|
Параметры модуля jobs |
|
Cron-выражение для установки расписания запуска РЗ отправки данных по всем справочникам в Витрину данных |
|
— |
|
Cron-выражение для установки расписания запуска РЗ очистки временных файлов |
|
— |
|
|
Список справочников, которые будут исключены из общего перечня «Справочники», используемых в РЗ |
|
— |
|
|
Максимальное количество потоков |
|
— |
|
|
Время простоя потока, после которого поток будет удален |
|
— |
|
|
Размер основного пула |
|
— |
|
|
Уровень очереди |
|
— |
|
|
Cron-выражение для запуска логики подсчета |
|
— |
|
|
Параметры запуска приложения JAVA |
|
— |
|
|
Пороговое значение размера загружаемого в приложение файла в байтах при многопоточной загрузке |
|
— |
|
Параметры Quartz |
|
Количество потоков Quartz |
|
— |
|
Название инстанса Quartz |
|
— |
|
|
Ожидание завершения jobs Quartz |
|
— |
|
|
Количество повторов job Quartz в случае неуспешного выполнения |
|
— |
|
|
Путь к папке для временного хранения файлов |
|
— |
|
|
Директория в pod, используемая для импорта и экспорта файлов в jobs |
|
— |
|
|
Максимальное количество файлов |
|
— |
|
|
Количество дней архивации |
|
— |
|
|
Количество дней хранения в архиве |
|
— |
|
|
Количество дней хранения |
|
— |
|
|
Количество импортируемых записей за стадию job |
|
— |
|
|
Предельное количество импортируемых записей за стадию job |
|
— |
|
|
mdc-jobs.configmap.universal_export_rspit_chunk |
|
— |
|
|
mdc-jobs.configmap.universal_export_rspit_reader_beans |
|
— |
|
|
Наименование системы, в которую происходит экспорт |
|
На данный момент доступно только значение DATA_MART |
|
|
Путь к локальной папке в pod приложения для временного хранения файлов, полученных из S3 |
|
— |
|
|
Количество удаляемых устаревших записей при импорте справочников в mdc-jobs |
|
— |
|
|
mdc-jobs.configmap.processing_distribution_cron |
|
— |
|
|
mdc-jobs.configmap.refresh_distribution_cron |
|
— |
|
|
mdc-jobs.configmap.universal_export_force_enabled |
|
— |
|
|
mdc-jobs.configmap.universal_import_force_enabled |
|
— |
|
|
mdc-jobs.configmap.rebuild_hash_code_records_page_size |
„1000“ |
— |
|
|
mdc-jobs.configmap.find_record_by_business_key |
|
— |
|
|
mdc-jobs.configmap.common_import_default_is_strict |
|
— |
|
Параметры для гарантированного удаления справочников (DDIS) |
|
Количество повторных попыток для выполнения запроса в DDIS в случае неуспешного ответа |
|
— |
|
Временной интервал между проверками записей на отложенное удаление справочников в DDIS |
|
— |
|
|
Время после старта системы, начиная с которого начнется процесс отложенного удаления справочников в DDIS |
|
— |
|
Параметры HikariCP |
|
Тайм-аут валидации соединения |
|
— |
|
Тайм-аут работы в простаивающем режиме |
|
— |
|
|
Тайм-аут соединения |
|
— |
|
|
Максимальное время существования соединения |
|
— |
|
|
Максимальный размер пула соединений |
|
— |
|
|
Минимальное количество простаивающих соединений |
|
— |
|
|
Время, в течение которого соединение может находиться вне пула до обнаружения утечки |
|
0 — если обнаружение отключено |
Параметры для файла mdc-kmd.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|---|
Параметры репликации |
|
Количество pods модуля |
|
— |
Ресурсы, необходимые для работы модуля |
|
Количество CPU, необходимое для работы модуля |
|
— |
|
Максимальный лимит CPU для работы модуля |
|
— |
|
|
Количество памяти, необходимое для работы модуля |
|
— |
|
|
Максимальный лимит памяти для работы модуля |
|
— |
|
|
Задержка перед первым вызовом проверки готовности pod выполнять запросы |
|
— |
|
Ресурсы, выделяемые для контейнера Istio |
|
Подключить модуль к Istio |
|
— |
|
Количество CPU, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит CPU для контейнера Istio |
|
— |
|
|
Количество памяти, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит памяти для контейнера Istio |
|
— |
|
Ресурсы, выделяемые для контейнера FluentBit-sidecar |
|
Количество CPU, необходимое для контейнера FluentBit-sidecar |
|
— |
|
Максимальный лимит CPU для контейнера FluentBit-sidecar |
|
— |
|
|
Количество памяти, необходимое для контейнера FluentBit-sidecar |
|
— |
|
|
Максимальный лимит памяти для контейнера FluentBit-sidecar |
|
— |
|
Ресурсы, выделяемые для контейнера vault-agent |
|
Количество CPU, необходимое для контейнера vault |
|
— |
|
Максимальный лимит CPU для контейнера vault |
|
— |
|
|
Количество памяти, необходимое для контейнера vault |
|
— |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
— |
|
Параметры Secret Management System |
|
Добавление контейнера vault-agent |
|
— |
|
Имя роли |
|
— |
|
|
Имя тенанта |
|
— |
|
|
Путь к KV-хранилищу secrets |
|
— |
|
Параметры DBEngine для Secret Management System |
|
Активация DBEngine |
|
— |
|
Путь к database-движку в SecMan |
|
— |
|
Параметры HikariCP |
|
Тайм-аут валидации соединения |
|
— |
|
Тайм-аут работы в простаивающем режиме |
|
— |
|
|
Тайм-аут соединения |
|
— |
|
|
Максимальное время существования соединения |
|
— |
|
|
Максимальный размер пула соединений |
|
— |
|
|
Минимальное количество простаивающих соединений |
|
— |
|
|
Время, в течение которого соединение может находиться вне пула до обнаружения утечки |
|
0 — если обнаружение отключено |
|
Прочие параметры |
|
Параметры запуска приложения JAVA |
|
— |
|
Время, в течение которого соединение может находиться вне пула до обнаружения утечки |
|
0 — если обнаружение отключено |
|
|
Пороговое значение размера загружаемого в приложение файла в байтах при многопоточной загрузке |
|
— |
|
|
Путь к папке для временного хранения файлов |
|
— |
|
|
Путь к локальной папке в pod приложения для временно хранения файлов, полученных из S3 |
|
— |
|
|
Папка для хранения файлов обмена данными в pod mdc-jobs |
|
— |
Параметры для файла mdc-ui.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
|---|---|---|---|
Параметры модуля UI |
|
Параметры репликации |
|
Ресурсы, необходимые для работы модуля |
|
Количество CPU, необходимое для работы модуля |
|
|
Максимальный лимит CPU для работы модуля |
|
|
|
Количество памяти, необходимое для работы модуля |
|
|
|
Максимальный лимит памяти для работы модуля |
|
|
Ресурсы, выделяемые для контейнера Istio |
|
Подключения модуля к Istio |
|
|
Количество CPU, необходимое для контейнера Istio |
|
|
|
Максимальный лимит CPU для контейнера Istio |
|
|
|
Количество памяти, необходимое для контейнера Istio |
|
|
|
Максимальный лимит памяти для контейнера Istio |
|
|
|
Максимальный размер тела входящих HTTP-запросов |
|
Параметры для файла mdc-api.conf приведены в таблице ниже:
Группа параметров |
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|---|
Параметры репликации |
|
Количество pods модуля |
|
— |
Ресурсы, необходимые для работы модуля |
|
Количество CPU, необходимое для работы модуля |
|
— |
|
Максимальный лимит CPU для работы модуля |
|
— |
|
|
Количество памяти, необходимое для работы модуля |
|
— |
|
|
Максимальный лимит памяти для работы модуля |
|
— |
|
|
Задержка перед первым вызовом проверки готовности pod выполнять запросы |
|
— |
|
Ресурсы, выделяемые для контейнера Istio |
|
Подключение модуля к Istio |
|
— |
|
Количество CPU, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит CPU для контейнера Istio |
|
— |
|
|
Количество памяти, необходимое для контейнера Istio |
|
— |
|
|
Максимальный лимит памяти для контейнера Istio |
|
— |
|
Ресурсы, выделяемые для контейнера FluentBit-sidecar |
|
Количество CPU, необходимое для контейнера FluentBit-sidecar |
|
— |
|
Максимальный лимит CPU для контейнера FluentBit-sidecar |
|
— |
|
|
Количество памяти, необходимое для контейнера FluentBit-sidecar |
|
— |
|
|
Максимальный лимит памяти для контейнера FluentBit-sidecar |
|
— |
|
Ресурсы, выделяемые для контейнера vault-agent |
|
Количество CPU, необходимое для контейнера vault |
|
— |
|
Максимальный лимит CPU для контейнера vault |
|
— |
|
|
Количество памяти, необходимое для контейнера vault |
|
— |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
— |
|
Параметры Secret Management System |
|
Добавление контейнера vault-agent |
|
— |
|
Имя роли |
|
— |
|
|
Имя тенанта |
|
— |
|
|
Путь к KV-хранилищу secrets |
|
— |
|
Параметры DBEngine для Secret Management System |
|
Активация Database Engine |
|
— |
|
Путь к DBEngine |
|
— |
|
Параметры сервиса аутентификации mdc-api |
|
Система аутентификации для mdc-api |
|
none — если не используется аутентификация, sudir, external или iam — если используется указанная система |
|
URL системы аутентификации для mdc-api |
|
— |
|
Параметры аудита |
|
Хост аудита |
|
— |
|
Включение аудита |
|
— |
|
|
Включение аудита изменения записей |
|
— |
|
Параметры HikariCP |
|
Тайм-аут валидации соединения |
|
— |
|
Тайм-аут работы в простаивающем режиме |
|
— |
|
|
Тайм-аут соединения |
|
— |
|
|
Максимальное время существования соединения |
|
— |
|
|
Максимальный размер пула соединений |
|
— |
|
|
Минимальное количество простаивающих соединений |
|
— |
|
|
Время, в течение которого соединение может находиться вне pool до обнаружения утечки |
|
0 — если обнаружение отключено |
|
Прочие параметры модуля mdc-api |
|
Отображаемое имя сервера/стенда |
|
— |
|
Включить/выключить endpoint удаления справочников |
|
— |
|
|
Максимальное количество потоков |
|
— |
|
|
Время простоя потока, после которого поток будет удален |
|
— |
|
|
Размер основного пула |
|
— |
|
|
Уровень очереди |
|
— |
|
|
Отключить отправку файлов в DDIS |
|
— |
|
|
Параметры запуска JAVA-приложения |
|
— |
|
|
Пороговое значение размера загружаемого в приложение файла в байтах при многопоточной загрузке |
|
— |
|
|
Количество потоков Quartz |
|
— |
|
|
Название сервисной стадии NSIX |
|
— |
|
|
Название инстанса Quartz |
|
— |
|
|
Ожидание завершения jobs Quartz |
|
— |
|
|
Путь к папке для временного хранения файлов |
|
— |
|
|
Путь к локальной папке в pod приложения для временного хранения файлов, полученных из S3 |
|
— |
|
|
Максимально допустимое число файлов, находящихся в папке файлового сервиса, которые будут отображены в списке параметра загрузки файлов при запуске РЗ импорта справочников |
|
— |
|
|
Путь к папке в файловом хранилище, файлы которого отобразить в списке парамера загрузки файлов при запуске РЗ импорта справочников |
|
— |
|
|
mdc-api.configmap.tenant.api.delete.enable |
|
— |
|
|
mdc-api.configmap.distribution.exclude_supressed_errors_enabled |
|
— |
|
|
mdc-api.configmap.distribution.exclude_supressed_errors_names |
|
— |
|
|
mdc-api.configmap.distribution.exclude_supressed_errors_dictionarynames |
|
— |
Параметры для файла mdc.istio.all.conf приведены в таблицах ниже:
Параметры Istio Docker и DropApp/K8s/Openshift
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Ссылка на образ Istio в Docker registry |
|
|
Название контрольной панели |
|
|
Название сервера на контрольной панели |
|
Параметры Istio FQDN
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
FQDN имя хоста для HTTPS (mTLS), содержащееся в route |
|
Например, mdc-01.mdc-dev.apps.mycompanydomain |
|
FQDN имя хоста для HTTP |
|
Например mdc-01.apps.mycompanydomain |
Параметры Istio FluentBit
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост Fluent Bit |
|
Параметры ресурсов Istio Egress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Параметры ресурсов Istio Egress |
|
|
Количество CPU, необходимое для работы модуля |
|
|
Максимальный лимит CPU для работы модуля |
|
|
Количество памяти, необходимое для работы модуля |
|
|
Максимальный лимит памяти для работы модуля |
|
|
Максимальный размер эфемерного хранилища egress |
|
|
Задаваемый по умолчанию размер эфемерного хранилища egress |
|
|
Ссылка на корневой сертификат egress SecMan |
|
Параметры ресурсов Istio Ingress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Параметры ресурсов Istio Ingress |
|
|
Количество CPU, необходимое для работы модуля |
|
|
Максимальный лимит CPU для работы модуля |
|
|
Количество памяти, необходимое для работы модуля |
|
|
Максимальный лимит памяти для работы модуля |
|
|
Максимальный размер эфемерного хранилища ingress |
|
|
Задаваемый по умолчанию размер эфемерного хранилища ingress |
|
|
Ссылка на корневой сертификат ingress SecMan |
` |
|
Параметр Istio Ingress |
|
|
Параметр Istio Ingress |
|
|
Параметр Istio Ingress |
|
|
Параметр Istio Egress |
|
|
Параметр Istio Egress |
|
|
Параметр OTTS Egress |
|
Параметры хостов приложений MDC в Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост приложения RSPIT (витрина данных) |
|
|
Хост приложения MDC-IVS |
|
|
Хост приложения MDC-API |
|
|
Хост приложения MDC-IVS для протокола HTTP |
|
|
Хост приложения MDC-IVS для протокола HTTPS (mTLS) |
|
|
Список хостов georouts, перечисляемых через «;» |
|
Параметры timeouts Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Количество повторных попыток подключения |
|
|
Тайм-аут повторной попытки подключения |
|
|
Тайм-аут установления соединения |
|
Параметры routs Istio
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Имя класса входящих запросов используемых в кластере, допустимые значения nginx и haproxy |
|
Значение устанавливается в аннотацию kubernetes.io/ingress.class сущности Ingress |
|
Тайм-аут подключения для маршрута класса haproxy |
|
— |
Параметры для logger Kafka LOGA (FluentBit)
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Список серверов LOGA для отправки данных logger в Kafka |
|
Формат: <доменное_имя:ip_адрес:порт_сервера_порт_egress:протокол_соединения> |
Параметры аудита Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост аудита |
|
Параметры БД Istio
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Доменное имя хоста БД |
|
— |
|
IP хоста БД |
|
— |
|
Порт БД |
|
Обычно 5432 при прямом подключении или 6544 при использовании pgbouncer |
|
Доменное имя хоста резервной БД |
|
Если таковой нет, указать localhost |
|
IP-адрес резервной БД |
|
— |
|
Порт резервной БД |
|
Обычно 5432 при прямом подключении или 6544 при использовании pgbouncer |
Параметры внешнего валидатора Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост внешнего валидатора Istio |
|
|
Порт внешнего валидатора Istio |
|
|
Порт внешнего валидатора для HTTP |
|
|
Порт внешнего валидатора для HTTPS |
|
Параметры S3 Istio
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Адрес сервиса s3 |
|
Значение должно задаваться такое же, как в |
|
Хост сервиса S3 |
|
Значение является частью |
|
Порт сервиса S3 |
|
— |
|
Адрес внешнего сервиса S3 для потребителей, который используется в DDIS |
|
Значение должно задаваться такое же как в |
|
Хост сервиса S3, который используется в DDIS, |
|
Если значение параметра совпадает с |
|
Порт внешнего сервиса S3 для потребителей, который используется в DDIS |
|
— |
Параметры SPAS Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
IP-адрес SPAS |
|
|
Доменное мя хоста SPAS |
|
|
Порт SPAS по умолчанию |
|
|
Порт SPAS для HTTP |
|
|
Порт spas для HTTPS |
|
|
Common-name для СУДИР |
|
|
Common-name для DDIS (RSPIT) |
|
|
Доменное имя NSIX для автоматической проверки |
|
Параметры IAM Istio
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост IAM |
|
|
Порт IAM по умолчанию |
|
|
Порт IAM для HTTP-соединения |
|
|
Порт IAM для HTTPS-соединения |
|
|
Алгоритм шифрования, который используется в EF при подключении к сервису IAM |
|
Параметры Traffic policy outlierDetection для Ingress (механизм circuitBreaker)
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Временной интервал |
|
|
Количество последовательных ошибок |
|
|
Временной интервал |
|
|
Максимальный процент TLS |
|
Параметры OTTS Istio
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Путь к образу ОТТ-sidecar в системе хранения образов |
|
— |
|
Список хостов, портов и внутренних портов сервиса OTTS для балансировки нагрузки |
|
Формат: <хост1:внешний_порт1:внутренний_порт1,…,хостN:внешний_портN:внутренний_портN> |
|
Список серверов:портов сервиса OTTS для балансировки нагрузки, или аналогичный список NGINX OTTS |
|
— |
|
Шаблон URL сервиса OTTS |
|
При балансировке значения будут подставляться из |
|
Формат сертификатов ОТТ |
|
PEM или PCKS12, по умолчанию PEM |
|
Путь к серверному сертификату сервиса OTTS для проверки токенов |
|
Используется если выбран формат PEM |
|
Путь к корневому сертификату для ОТТ |
|
Используется если выбран формат PEM |
|
Путь к клиентскому сертификату NSIX для ОТТ |
|
Используется если выбран формат PEM |
|
Путь к приватному ключу клиентского сертификата NSIX для ОТТ |
|
Используется если выбран формат PEM |
|
Путь к хранилищу клиентских сертификатов ОТТ |
|
Используется если выбран формат PCKS12, иначе можно задать значение-заглушку |
|
Alias сертификатов NSIX в хранилище клиентских сертификатов ОТТ |
|
Используется если выбран формат PCKS12, иначе можно задать значение-заглушку |
|
Путь к хранилищу trust-сертификатов ОТТ |
|
Используется если выбран формат PCKS12 |
|
Идентификатор приложений NSIX в системе ОТТ |
|
— |
|
Порт OTT-sidecar для readiness-probe |
|
При необходимости можно выбрать любой другой свободный порт |
|
Идентификатор инсталляции платформы |
|
— |
|
Параметр включения hotReload |
|
Включен изначально со значением по умолчания — true |
|
Период обновления кеша сертификатов серверов OTT в секундах |
|
— |
|
Время после включения прерывателя, спустя которое инициализируется новый запрос к экземпляру сервиса OTT, на котором сработал прерыватель |
|
— |
|
Анонимный режим ОТТ без авторизации для ingress |
|
true — если включен и false — если выключен. В целевом варианте должен быть отключен |
|
Ссылка на серверный TLS-сертификат ОТТ в pod |
|
— |
|
Анонимный режим ОТТ без авторизации для egress |
|
true — если включен и false — если выключен. В целевом варианте должен быть отключен |
|
Версия компонента авторизации |
|
— |
Ресурсы, выделяемые для контейнера OTT в ingress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Количество CPU, необходимое для контейнера OTT |
|
|
Максимальный лимит CPU для контейнера OTT |
|
|
Количество памяти, необходимое для контейнера OTT |
|
|
Максимальный лимит памяти для контейнера OTT |
|
|
Порт для readiness-probe контейнера OTT |
|
|
Количество CPU, необходимое для контейнера OTT |
|
|
Максимальный лимит CPU для контейнера OTT |
|
|
Количество памяти, необходимое для контейнера OTT |
|
|
Максимальный лимит памяти для контейнера OTT |
|
|
Порт для readiness-probe контейнера OTT |
|
Параметры аудита OTT в Ingress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Включение аудита OTT ingress |
|
|
Идентификатор модуля в системе аудита OTT Ingress |
|
|
Версия метамодели аудита OTT Ingress |
|
|
URL-адрес аудита OTT Ingress |
По умолчанию |
Параметры аудита OTT в Egress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Включение аудита OTT Egress |
|
|
Идентификатор модуля в системе аудита OTT Egress |
|
|
Версия метамодели аудита OTT Egress |
|
|
URL-адрес аудита OTT Egress |
По умолчанию |
Параметры Kubernetes
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
IP-адрес сервиса Kubernetes |
|
Параметры Secret Management System
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост сервиса Secret Management System |
|
|
Порт HTTPS-соединения Secret Management System |
|
Ресурсы, выделяемые для контейнера vault-agent в Ingress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Количество CPU, необходимое для контейнера vault |
|
|
Максимальный лимит CPU для контейнера vault |
|
|
Количество памяти, необходимое для контейнера vault |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
Параметры Secret Management System для Ingress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Добавить контейнер vault-agent |
|
|
Имя роли |
|
|
Имя тенанта |
|
|
Путь к KV-хранилищу secret |
|
Ресурсы, выделяемые для контейнера vault-agent в Egress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Количество CPU, необходимое для контейнера vault |
|
|
Максимальный лимит CPU для контейнера vault |
|
|
Количество памяти, необходимое для контейнера vault |
|
|
Максимальный лимит памяти CPU для контейнера vault |
|
Параметры Secret Management System для Egress
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Добавить контейнер vault-agent |
|
|
Имя роли |
|
|
Имя тенанта |
|
|
Путь к KV-хранилищу secret |
|
Параметры подключения PKI Secrets Engine сертификатов для Egress
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Использование PKI-движка вместо KV для сертификатов TLS Istio Egress |
|
— |
|
Common-name для PKI-движка |
|
— |
|
Путь к PKI-движку Egress в SecMan |
|
— |
|
Формат сертификатов в PKI-движке Egress в SecMan |
|
По умолчанию pem |
|
TTL PKI-движка Egress в SecMan |
|
— |
|
Параметр для добавления цепочки сертификатов |
|
— |
|
Альтернативные имена для PKI-движка |
— |
Параметры подключения PKI Secrets Engine сертификатов для OTTS Egress
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Использование PKI-движка вместо KV для сертификатов TLS Istio Egress OTTS |
|
— |
|
Common-name для PKI-движка |
|
— |
|
Путь к PKI-движку клиента Egress OTTS в SecMan |
|
— |
|
Формат сертификатов в PKI-движке OTTS Egress в SecMan |
|
По умолчанию pem |
|
TTL PKI-движка OTTS Egress в SecMan |
|
— |
|
Альтернативные имена для PKI-движка |
— |
— |
Параметры подключения PKI Secrets Engine сертификатов для Ingress
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Использование PKI-движка вместо KV для сертификатов TLS Istio Ingress OTTS |
|
— |
|
Common-name для PKI-движка |
|
— |
|
Путь к PKI-движку клиента Ingress OTTS в SecMan |
|
— |
|
Формат сертификатов в PKI-движке OTTS Ingress в SecMan |
|
По умолчанию pem |
|
TTL PKI-движка OTTS Ingress в SecMan |
|
— |
|
Параметр для добавления цепочки сертификатов |
|
— |
|
Альтернативные имена для PKI-движка |
— |
— |
Параметры подключения PKI Secrets Engine сертификатов для OTTS в Ingress
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Использование PKI-движка вместо KV для сертификатов TLS Istio Ingress OTTS |
|
— |
|
Common-name для PKI-движка |
|
— |
|
Путь к PKI-движку клиента Ingress OTTS в SecMan |
|
— |
|
Формат сертификатов в PKI-движке OTTS Ingress в SecMan |
|
По умолчанию pem |
|
TTL PKI-движка OTTS Ingress в SecMan |
|
— |
Параметры timeouts Envoy-фильтров
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Tайм-аут envoy-фильтра FluentBit |
|
|
Тайм-аут envoy-фильтра Audit |
|
|
Тайм-аут envoy-фильтра Rspit |
|
Параметры Rate Limiter
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Хост |
|
|
Порт |
|
|
Selector приложения Ingress |
|
|
Selector Istio Ingress |
|
|
Selector приложения Egress |
|
|
Selector Istio Egress |
|
Параметры для файла mdc.fluentbit.sidecar.all.conf приведены в таблице ниже:
Параметр |
Описание |
Допустимые значения |
|---|---|---|
|
Аргументы запуска приложения через JVM-переменную JAVA_OPTS |
|
Кроме того, в папке /conf в ФП-репозитории необходимо создать (либо мигрировать) файл custom_property.conf.yml, в котором также необходимо указать параметры.
Параметры для файла custom_property.conf.yml приведены в таблице ниже:
Параметр |
Описание |
Допустимые значения |
Комментарий |
|---|---|---|---|
|
Тип БД |
|
По умолчанию postgresql_1 |
|
Тип logger |
|
Указывается LOGA — если планируется использовать logger Kafka LOGA, и любое другое значение — если нет |
|
Тип SSM контрольной панели |
|
Указывается synapse3 — если используется контрольная панель с SSM-версии Synapse 3.x, и любое другое значение — в противном случае |
|
Тип SecurityContext для развертывания |
|
Указывается false — если используется Openshift, и true — если чистый Kubernetes/DropApp |
|
Тип маршрута |
|
Указывается true — если требуется развертывать тип маршрута «Route» вместо Ingress (Маршрут совместим только с Openshift), и false — если развертывать Ingress |
|
Версия API для VirtualService |
|
Допустимые значения alpha3 и beta1 |
|
Версия API для Gateway |
|
Допустимые значения alpha3 и beta1 |
|
Версия API для ServiceEntry |
|
Допустимые значения alpha3 и beta1 |
|
Версия API для DestinationRule |
|
Допустимые значения alpha3 и beta1 |
|
Переключатель на движок KeyValue v.2 для Secret Management System |
|
Указывается true — если в Secman используются хранилища типа KV-V2, по умолчанию — false |
|
Использование шифрованного TLS-соединения для БД postgresql |
|
— |
|
Использование шифрованного TLS-соединения для Аудита |
|
— |
|
Использование шифрованного TLS-соединения для журналирования FluentBit |
|
— |
|
Использование шифрованного TLS-соединения для RSPIT |
|
— |
|
Использование шифрованного TLS-соединения для S3 |
|
— |
|
Использование шифрованного TLS-соединения для SPAS |
|
— |
|
Использование шифрованного TLS-соединения для logger Kafka |
|
— |
|
Использование шифрованного TLS-соединения для получения secrets из SecMan |
|
— |
|
Использование шифрованного TLS-соединения для ОТТS |
|
— |
|
Использование шифрованного TLS-соединения для IAM |
|
— |
|
Использование шифрованного TLS-соединения для валидации |
|
— |
|
Использование шифрованного TLS-соединения для Kafka |
|
— |
|
Переключатель развертывания RateLimiter из дистрибутива |
|
Используются только при централизованном варианте |
|
Переключатель развертывания RateLimiter из SRLS-агента |
|
Если выбран этот вариант развертывания |
|
Переключатель развертывания компонентов централизованного RateLimiter из SRLS-агента |
|
Если выбран этот вариант развертывания |
|
Переключатель развертывания компонентов децентрализованного RateLimiter из SRLS-агента |
|
Если выбран этот вариант развертывания |
Для настроек среды контейнеризации необходимо задать параметры из таблицы ниже:
Параметр |
Значение |
Комментарий |
|---|---|---|
|
|
В случае, если используется Openshift |
|
|
В случае, если используется Openshift |
|
|
Если и используется Kubernetes или его вариация |
|
|
Если и используется Kubernetes или его вариация |
|
|
Если используется контрольная панель Synapse 3 |
Параметр для задания произвольного имени схемы БД:
Параметр |
Значение |
Комментарий |
|---|---|---|
|
|
Задается в файле mdmp/oc-deployment/distrib.yml |
Подсказка
Подсказка
Для синхронизации списка в job DEPLOY запустите playbook MIGRATION_FP и затем после выполнения измените значения по умолчанию на необходимые.
Параметры приложений в ConfigMaps для сред контейнеризации:
Наименование параметра |
Допустимые значения |
Принадлежность |
Описание |
|---|---|---|---|
FIND_RECORD_BY_BUSINESS_KEY |
false / true |
nsix-cm-mdc-jobs.unver |
Параметр включает (true) и отключает (false) функционал поиска записей по новой колонке bk таблицы apikeyvalue_record. Для каждого способа необходимо предусмотреть сохранение значений атрибутов, помеченных как бизнес ключи, в колонку bk таблицы apikeyvalue_record в формате |
NSIX_TENANT_API_DELETE_ENABLE |
false / true |
nsix-cm-mdc-api.unver |
Параметр управляет ограничением удаления тенанта. Если true — API удаление теннанта работает, если false — API возвращает ошибку с текстом Удаление тенанта выключено |
FIX_MIN_MAX_STRING_VALUE |
false / true |
nsix-cm-mdc-jobs.unver |
Параметр управляет валидацией — отключает строгие проверки минимальной и максимальной длины строчного атрибута. Если данный параметр включен (значение true по умолчанию), то осуществляется обрезание строки до допустимого максимального значения или записывается значение в том виде, в котором пришло (в случае если значение меньше минимального). Если параметр выключен (значение false), то осуществляется строгая загрузка, и несоответствие значения строкового параметра по длине инициирует критическую ошибку |
DISTRIBUTION_EXCLUDE_SUPRESSED_ERRORS_NAMES |
Допустимые значения приведены в отдельной таблице ниже |
nsix-cm-mdc-api.unver |
Параметр содержит список типов ошибок, по которым не допустимо отправление |
DISTRIBUTION_EXCLUDE_SUPRESSED_ERRORS_DICTIONARYNAMES |
Перечень справочников, например: Holidays,Terbnkns |
nsix-cm-mdc-api.unver |
Параметр содержит список справочников, по которым требуется отключение отправки подавленных ошибок |
DISTRIBUTION_EXCLUDE_SUPRESSED_ERRORS_ENABLED |
false / true |
nsix-cm-mdc-api.unver |
Параметр включает отправку подавленных ошибок |
COMMON_IMPORT_DEFAULT_IS_STRICT |
false / true |
nsix-cm-mdc-jobs.unver |
Параметр активирует строгий режим, учитывающий некритичные ошибки, для регламентного задания Импорт справочников в формате CSV (значение false по умолчанию). Если значение параметра true, то в регламентном задании Импорт справочников в формате CSV активирован строгий режим загрузки по проверке критических и некритических ошибок, и пользователю недоступно его отключение |
OTHER_TIMEDEPENDENT_IS_BK_USED_AS_TK |
false / true |
nsix-cm-mdc.unver |
Параметр позволяет автоматически проставлять признак Временной ключ для атрибутов с признаком Бизнес-ключ во времязависимых справочниках (значение true по умолчанию) |
OTHER_TIMEDEPENDENT_IS_END_CREATED_WITH_BK |
false / true |
nsix-cm-mdc.unver |
Параметр позволяет автоматически проставлять признак Бизнес-ключ для атрибута конца периода (значение true по умолчанию) |
RELOAD_STRATEGY_FAIL_FAST |
false / true |
nsix-cm-mdc.unver |
Параметр отвечает за стратегию рестарта приложения. Если false — стратегия fail safe, если true — стратегия fail fast |
MDC_KAFKA_ENABLED |
false / true |
nsix-cm-mdc-jobs.unver |
Параметр включает (true) и отключает (false) конфигурации Kafka и параметров bean-компонентов в модуле |
MDC_KAFKA_BOOTSTRAP_SERVERS |
<список брокеров Kafka> |
nsix-cm-mdc-jobs.unver |
Параметр содержит список брокеров Kafka и порты в кластере |
MDC_KAFKA_RELEASE_TOPIC |
Значение по умолчанию «nsix.release.out» |
nsix-cm-mdc-jobs.unver |
Параметры конфигурации для потока публикации релизных изменений справочника |
MDC_KAFKA_RELEASE_PRODUCER |
Значение по умолчанию «producer.nsix.release.out» |
nsix-cm-mdc-jobs.unver |
Параметр наименования продюсера темы |
MDC_KAFKA_JOBS_TOPIC |
Значение по умолчанию «nsix.jobs.out» |
nsix-cm-mdc-jobs.unver |
Параметр наименования темы Kafka для хранение записей, которые выгружаются регламентным заданием при публикации версии справочника |
MDC_KAFKA_JOBS_PRODUCER |
Значение по умолчанию «producer.nsix.jobs.out» |
nsix-cm-mdc-jobs.unver |
Параметр наименования продюсера темы |
MDC_KAFKA_STUB_ENABLED |
false / true |
nsix-cm-mdc-jobs.unver |
Параметр включает (true) и отключает (false) конфигурации Kafka и параметров bean-компонентов в модуле в stub-режиме |
*:
Наименование ошибки |
Описание ошибки |
|---|---|
DELETE_FILE_ERROR |
При удалении входного файла возникла ошибка |
DICTIONARIES_NOT_FOUND_IN_FILE |
В файле не найдено ни одного справочника для загрузки |
DICTIONARY_NOT_FOUND |
В файле не найден справочник, его загрузка проводиться не будет |
DICTIONARY_NOT_LOADED |
Во входном файле обнаружен справочник, который уже загружается в другом файле. Справочник исключен из загрузки во входном файле |
DICTIONARY_NOT_LOADED |
В файле есть справочники, отсутствующие в системе, они будут проигнорированы |
DICTIONARY_NOT_LOADED |
В файле есть справочники, загрузка которых не востребована, они будут проигнорированы |
FILE_NOT_DELETED |
Не удалось удалить существующий файл назначения |
NO_INPUT |
Подходящие по маске файлы отсутствуют, либо все они уже были загружены ранее |
NOT_FOUND_DICTS |
Нет данных для загрузки, задача будет завершена |
PACK_TO_ARCHIVE_ERROR |
Ошибка во время архивирования ресурса |
UNKNOWN_ATTRIBUTE |
Неизвестный атрибут, исключен из загрузки |
**:
Приложение во время развертывания должно поддерживать выбор одной из двух стратегий реакции на ошибку с помощью указания соответствующего значения в конфигурационном параметре.
Стратегия fail safe
Приложение во время выполнения должно использовать старые секреты, если обновление секретов или объектов, которые зависят от секретов, завершилось с ошибкой.
Стратегия fail fast
Приложение во время выполнения должно завершать свою работу, если обновление секретов или объектов, которые зависят от секретов, завершилось с ошибкой. При этом приложение должно предоставлять возможность завершиться запросам, использующим старые варианты секретов.
Глобальные параметры, используемые для настройки NSIX, приведены в таблице ниже:
Параметр |
Описание |
Значение |
Комментарий |
|---|---|---|---|
|
Список хостов и портов logger в common-репозитории |
|
По умолчанию на данный параметр ссылается параметр |
|
Список хостов и портов logger в common-репозитории |
|
По умолчанию на данный параметр ссылается параметр |
|
Глобальное название topic Kafka для logger в common-репозитории |
|
По умолчанию на данный параметр ссылается параметр |
|
Ранее — глобальное название протокола logger |
|
Не используется в NSIX |
|
Глобальное название драйвера JDBC |
|
По умолчанию на данный параметр ссылается параметр |
|
Глобальное значение тестового запроса JDBC |
|
По умолчанию на данный параметр ссылается параметр |
|
Глобальное значение запроса инициализации JDBC |
|
По умолчанию на данный параметр ссылается параметр |
|
Глобальное значение хоста аудита (без порта и протокола) |
|
По умолчанию на данный параметр ссылается параметр |
|
Глобальное значение максимального размера заголовка HTTP-запроса в байтах |
|
По умолчанию на данный параметр ссылается параметр |
|
Путь к secret к корневым сертификатом |
|
Используется дляя указагния пути к корневому сертификату SecMan |
Список более не используемых (устаревших) параметров приведен в таблице ниже:
Параметр |
Комментарий |
|---|---|
|
Имя пользователя схемы БД. Заменен на secret |
|
Заменен общим параметром без -api в имени |
|
Заменен общим параметром без -api в имени |
|
Заменен общим параметром без -api в имени |
|
Заменен общим параметром без -api в имени |
|
Заменен общим параметром без -api в имени |
|
Заменен на глобальную переменную |
|
Заменен общим параметром без -api в имени |
Подсказка
Подсказка:
Данная таблица может потребоваться специалистам сопровождения при настройке NSIX и при установке новых версий.
Параметры конфигурации для Kafka приведены в таблице ниже
Параметр |
Значение |
Модуль NSIX |
Описание |
|---|---|---|---|
|
true — по умолчанию |
nsix-cm-mdc.unver |
Включение или отключение конфигурации Kafka и параметров bean-компонентов в модуле |
|
По умолчанию «{IP}:{PORT},{IP}:{PORT},{IP}:{PORT}» |
nsix-cm-mdc.unver |
Все брокеры Kafka имя_домена/ips и порты в кластере |
|
По умолчанию «nsix.release.out» |
nsix-cm-mdc.unver |
Параметры конфигурации для потока публикации релизных изменений справочника. |
|
По умолчанию «producer.nsix.release.out» |
nsix-cm-mdc.unver |
Название продюсера темы |
|
По умолчанию «producer.nsix.events.out» |
nsix-cm-mdc.unver |
Название продюсера темы (сейчас не используется) |
|
По умолчанию «nsix.events.out» |
nsix-cm-mdc.unver |
Параметры конфигурации для потока отправки событий изменения данных справочника. Название темы Kafka для отправки сообщений. Сейчас не используется |
|
По умолчанию «nsix.jobs.out» |
nsix-cm-mdc.unver |
Название темы Kafka для хранение записей, которые выгружаются РЗ при публикации версии справочника. Название темы Kafka для отправки сообщений |
|
По умолчанию «producer.nsix.jobs.out» |
nsix-cm-mdc.unver |
Название продюсера темы |
|
false — по умолчанию |
nsix-cm-mdc.unver |
Включение или отключение конфигурации Kafka и параметров bean-компонентов в модуле в stub-режиме |
|
false — по умолчанию |
nsix-cm-mdc.unver |
Параметр запуска РЗ nsix.events.prwvc (prwvc — publish records when version changed), который позволит включать/отключать выгрузку записей РЗ при событии публикации справочника |
|
false — по умолчанию |
nsix-cm-mdc.unver |
Возможность конфигурации отправки событий по топикам при публикации справочника. |
|
По умолчанию 50 |
nsix-cm-mdc.unver |
Выгрузка событий изменения справочника и его релизных записей в топик Kafka в блоки по определенному числу событий |
Описание настроек подсистемы доступа#
Создание пользователей и присвоение им ролей выполняется в AUTH. Подробнее можно ознакомиться с эксплуатационной документацией IAM Proxy (AUTH).
Создание и обновление ролей и полномочий выполняется в AUTZ. Подробнее можно ознакомиться в документе Руководстве оператора AUTZ.
Описание настроек среды контейнеризации#
Подключение к Istio, настройка сертификатов и создание secrets — выполняются индивидуально для каждой именованной области среды контейнеризации в пределах каждого стенда. Производить эти действия необязательно, если в целевой проектной области среды контейнеризации не планируется использовать Istio.
Для корректной работы приложений необходимо создать в меню Workloads — Secrets — secret для скачивания образа типа Image pull Secret и два secret с приложениями — secret-mdc-db и secret-mdc-spas.
Подсказка
Подсказка
Значение переменных следует редактировать не напрямую в YAML (здесь оно отображается в зашифрованном виде), а через меню Edit secret.
Secret для скачивания образов (в примере названа mdc-pull) должен иметь тип kubernetes.io/dockerconfigjson, в котором содержится параметр вида .dockerconfigjson и содержанием:
{"auths":{"https://ссылка_на_хранилище_образов":{"username":"имя_пользователя","password":"пароль","auth":"код_аутентификации","email":""}}}
Пример Secret
kind: Secret
apiVersion: v1
metadata:
name: mdc-pull
data:
.dockerconfigjson: >-
зашифрованный_блок_json
type: kubernetes.io/dockerconfigjson
Имя этого secret может быть произвольным, состоящим из латинских букв, цифр и символа -.
В дальнейшем будет задаваться при настройке стендозависимых параметров.
Установка приложений#
Автоматическая установка#
Установка проводится в автоматическом режиме с помощью Deploy Tools.
При установке через Deploy Tools для DropApp/K8S/Openshift выберите директорию конфигурации, SUBSYSTEM = MDC, версию дистрибутива и namespace.
Далее выберите playbooks в зависимости от потребностей:
MIGRATION_FP_CONF — миграция параметров дистрибутива в репозиторий. Рекомендуется выполнять отдельным шагом и затем править дефолтные значения стендозависимых параметров на действительные;
DB_UPDATE — обновление БД OPENSHIFT_DEPLOY;
OPENSHIFT_DEPLOY — установка приложений MDC без Istio;
OPENSHIFT_INGRESS_EGRESS_DEPLOY — установка приложений Ingress и Egress.
Перед выполнением установки следует уточнить и скорректировать значения параметров в common репозитории:
global.ott.ose_deploy;ose.kind_route.deploy;secman.secman_injector.
Подсказка
Подсказка
В зависимости от того, используется ли ОТТ, маршруты типа Route и Secret Management System, требуется уточнить и при необходимости
скорректировать параметры в репозитории, связанные с использованием PKI Secrets Engine для Ingress/Egress и Database Secrets Engine для приложений.
Интеграция с платформенными зависимостями#
Для исходящего трафика используется сервис Egress-istio.
egress-svc-mdc — используется для сервисного трафика, предназначен для балансирования и терминации трафика на границе сети, для служб и сервисов аудита, логирования, мониторинга.
Шаблон установки для egress-svc-mdc — k8s/base/istio/deployments/egress/*.yaml. Каждый из этих шаблонов разворачивает egress-envoy и One-Time Password (OTP) / OTT (OTTS) сервис, подключенный как sidecar.
Для активации авторизации на envoy с применением One-Time Password (OTP) / OTT (OTTS) используется настройка envoy-фильтра:
Настройка envoy-фильтра
kind: EnvoyFilter
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-ef-mdc-audit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.http_connection_manager
portNumber: 8091 # порт из gateway. при запросах на данный порт будет вызываться ott-sidecar для проставления токена
patch:
operation: INSERT_BEFORE
value:
name: envoy.ext_authz
config:
failure_mode_allow: false # запрещает трафик при недоступности сервиса авторизации
grpc_service:
google_grpc:
stat_prefix: ext_authz
target_uri: unix:/mnt/ott-uds-socket/ott.socket # используется для взаимодействия с ott-sidecar
timeout: 4s # на фактическую производительность влияние не оказывает, но необходимо для корректного запуска
with_request_body:
allow_partial_message: true
max_request_bytes: 65536
workloadSelector:
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
egress-svc-mdc использует порт 5443 (mTLS + OTTS) в качестве выходного шлюза. Все остальные порты используются для mapping портов.
Настройка egress-svc-mdc
kind: Service
apiVersion: v1
metadata:
name: egress-svc-mdc-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
ports:
- name: status-port
protocol: TCP
port: 15020
targetPort: 15020
- name: tcp-9001 # DB_1 main
protocol: TCP
port: 9001
targetPort: 9001
- name: tcp-9002 # DB_2 second
protocol: TCP
port: 9002
targetPort: 9002
- name: http-8089 # fluent-bit
protocol: TCP
port: 8089
targetPort: 8089
- name: http-8091 # Audit
protocol: TCP
port: 8091
targetPort: 8091
- name: http-8092 # DataMart
protocol: TCP
port: 8092
targetPort: 8092
- name: tcp-8093 # AUTH
protocol: TCP
port: 8093
targetPort: 8093
- name: http-8095 # ceph
protocol: TCP
port: 8095
targetPort: 8095
selector:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
type: ClusterIP
sessionAffinity: None
Компонент Журналирование (LOGA), взаимодействие mTLS + One-Time Password (OTP) / OTT (OTTS).
Настройка интеграции с LOGA
ServiceEntry:
kind: ServiceEntry
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-se-mdc-fluent-bit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.fluent-bit-forwarder-sidecar.istio.egress.common.host}
ports:
- name: http-80
number: 80
protocol: HTTP
- name: https-443
number: 443
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNS
exportTo:
- .
Gateway:
kind: Gateway
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-gw-mdc-fluent-bit-${distrib.release.version}
labels:
product: mdc
type: resource
spec:
servers:
- hosts:
- ${mdc.fluent-bit-forwarder-sidecar.istio.egress.common.host}
port:
name: http-8089
number: 8089
protocol: HTTP
selector:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
VirtualService:
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-vs-mdc-fluent-bit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.fluent-bit-forwarder-sidecar.istio.egress.common.host}
gateways:
- mesh
- egress-gw-mdc-fluent-bit-${distrib.release.version}
http:
- match:
- gateways:
- mesh
port: 80
rewrite:
authority: ${mdc.fluent-bit-forwarder-sidecar.istio.egress.common.host}
route:
- destination:
host: egress-svc-mdc-${distrib.release.version}
port:
number: 8089
retries:
attempts: ${mdc.istio.egress.common.http.retries.attempts}
perTryTimeout: ${mdc.istio.egress.common.http.retries.timeout}
retryOn: gateway-error,connect-failure,refused-stream
timeout: ${mdc.istio.egress.common.http.request.timeout}
- match:
- gateways:
- egress-gw-mdc-fluent-bit-${distrib.release.version}
port: 8089
route:
- destination:
host: ${mdc.fluent-bit-forwarder-sidecar.istio.egress.common.host}
port:
number: 443
exportTo:
- .
EnvoyFilter:
kind: EnvoyFilter
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-ef-mdc-fluent-bit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.http_connection_manager
portNumber: 8089 # порт из gateway. при запросах на данный порт будет вызываться ott-sidecar для проставления токена
patch:
operation: INSERT_BEFORE
value:
name: envoy.ext_authz
config:
failure_mode_allow: false # запрещает трафик при недоступности сервиса авторизации
grpc_service:
google_grpc:
stat_prefix: ext_authz
target_uri: unix:/mnt/ott-uds-socket/ott.socket # используется для взаимодействия с ott-sidecar
timeout: 2s # на фактическую производительность влияние не оказывает, но необходимо для корректного запуска
with_request_body:
allow_partial_message: true
max_request_bytes: 65536
workloadSelector:
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
Компонент Аудит AUDT, взаимодействие mTLS + One-Time Password (OTP) / OTT (OTTS).
Настройка интеграции с AUDT
ServiceEntry:
kind: ServiceEntry
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-se-mdc-audit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.istio.egress.common.audit.host}
ports:
- name: https-443
number: 443
protocol: HTTPS
- name: http-80
number: 80
protocol: HTTP
location: MESH_EXTERNAL
resolution: DNS
exportTo:
- .
Gateway:
kind: Gateway
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-gw-mdc-audit-${distrib.release.version}
labels:
product: mdc
type: resource
spec:
servers:
- hosts:
- ${mdc.istio.egress.common.audit.host}
port:
name: http-8091
number: 8091
protocol: HTTP
selector:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
VirtualService:
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-vs-mdc-audit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.istio.egress.common.audit.host}
gateways:
- mesh
- egress-gw-mdc-audit-${distrib.release.version}
http:
- match:
- gateways:
- mesh
port: 80
rewrite:
authority: ${mdc.istio.egress.common.audit.host}
route:
- destination:
host: egress-svc-mdc-${distrib.release.version}
port:
number: 8091
- match:
- gateways:
- egress-gw-mdc-audit-${distrib.release.version}
port: 8091
route:
- destination:
host: ${mdc.istio.egress.common.audit.host}
port:
number: 443
exportTo:
- .
DestinationRule:
kind: DestinationRule
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-dr-mdc-audit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
exportTo:
- .
host: ${mdc.istio.egress.common.audit.host}
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: 443
tls:
caCertificates: /etc/istio/egressgateway-ca-certs/CA.crt
clientCertificate: /etc/istio/egressgateway-certs/tls.crt
mode: MUTUAL
privateKey: /etc/istio/egressgateway-certs/tls.key
sni: ${mdc.istio.egress.common.audit.host}
Компонент Corax (KFKA), взаимодействие mTLS + TCP/kafka.
Настройка интеграции с KFKA
egress-dr-mdc-kafka.yaml:
{% if lookup('custom_vars', 'tls_kafka_connection') | default(false) | bool == true %}
{% for custom_url in (vars['mdc.ose.istio.egress.kafka.bootservers'] | string).split(';') %}
{% set custom_url_list = custom_url.split(':') %}
{% set kafka_host = custom_url_list[0] %}
{% set port = custom_url_list[2] %}
---
kind: DestinationRule
{% if ('beta1' in lookup('custom_vars', 'apiVersion_dr')|lower)|bool %}
apiVersion: networking.istio.io/v1beta1
{% else %}
apiVersion: networking.istio.io/v1alpha3
{% endif %}
metadata:
name: egress-dr-mdc-kafka-{{ loop.index }}-{{lookup('custom_vars', 'distrib.release.version')}}
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
type: resource
spec:
exportTo:
- .
host: {{ kafka_host }}
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: {{ port }}
tls:
caCertificates: /vault/secrets/certs/egressgateway-ca-certs/CA.crt
clientCertificate: /vault/secrets/certs/egressgateway-certs/tls.crt
privateKey: /vault/secrets/certs/egressgateway-certs/tls.key
mode: MUTUAL
{% if ('synapse3' in lookup('custom_vars', 'service_mesh_type')|lower)|bool %}
workloadSelector:
matchLabels:
app: mdc-egress-${NAMESPACE}
{% endif %}
{% endfor %}
{% endif %}
egress-gw-mdc-kafka.yaml:
{% if ('beta1' in lookup('custom_vars', 'apiVersion_gw')|lower)|bool %}
apiVersion: networking.istio.io/v1beta1
{% else %}
apiVersion: networking.istio.io/v1alpha3
{% endif %}
kind: Gateway
metadata:
name: egress-gw-mdc-kafka-{{lookup('custom_vars', 'distrib.release.version')}}
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
spec:
selector:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
servers:
{%- for custom_url in (vars['mdc.ose.istio.egress.kafka.bootservers'] | string).split(';') %}
{%- set custom_url_list = custom_url.split(':') %}
{%- set kafka_host = custom_url_list[0] %}
{%- set ip = custom_url_list[1] %}
{%- set port = custom_url_list[2] %}
{%- set internal_port = custom_url_list[3] %}
- hosts:
- {{ kafka_host }}
port:
name: tcp-{{ internal_port }}
number: {{ internal_port }}
{% if lookup('custom_vars', 'tls_kafka_connection') | default(false) | bool == true %}
protocol: TLS
{% else %}
protocol: TCP
{% endif %}
{% if lookup('custom_vars', 'tls_kafka_connection') | default(false) | bool == true %}
tls:
mode: ISTIO_MUTUAL
{% endif %}
{%- endfor %}
egress-se-mdc-kafka.yaml:
{% for custom_url in (vars['mdc.ose.istio.egress.kafka.bootservers'] | string).split(';') %}
{% set custom_url_list = custom_url.split(':') %}
{% set kafka_host = custom_url_list[0] %}
{% set ip = custom_url_list[1] %}
{% set port = custom_url_list[2] %}
{% set internal_port = custom_url_list[3] %}
---
kind: ServiceEntry
{% if ('beta1' in lookup('custom_vars', 'apiVersion_se')|lower)|bool %}
apiVersion: networking.istio.io/v1beta1
{% else %}
apiVersion: networking.istio.io/v1alpha3
{% endif %}
metadata:
name: egress-se-mdc-kafka-{{ loop.index }}-{{lookup('custom_vars', 'distrib.release.version')}}
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
spec:
addresses:
- {{ ip }}
exportTo:
- .
hosts:
- {{ kafka_host }}
location: MESH_EXTERNAL
ports:
- name: tcp-{{ port }}
number: {{ port }}
protocol: TCP
- name: tcp-{{ internal_port }}
number: {{ internal_port }}
protocol: TCP
resolution: DNS
{% endfor %}
egress-vs-mdc-kafka.yaml:
{% for custom_url in (vars['mdc.ose.istio.egress.kafka.bootservers'] | string).split(';') %}
{% set custom_url_list = custom_url.split(':') %}
{% set kafka_host = custom_url_list[0] %}
{% set ip = custom_url_list[1] %}
{% set port = custom_url_list[2] %}
{% set internal_port = custom_url_list[3] %}
---
kind: VirtualService
{% if ('beta1' in lookup('custom_vars', 'apiVersion_vs')|lower)|bool %}
apiVersion: networking.istio.io/v1beta1
{% else %}
apiVersion: networking.istio.io/v1alpha3
{% endif %}
metadata:
name: egress-vs-mdc-kafka-{{ loop.index }}-{{lookup('custom_vars', 'distrib.release.version')}}
labels:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
spec:
exportTo:
- .
gateways:
- mesh
- egress-gw-mdc-kafka-{{lookup('custom_vars', 'distrib.release.version')}}
hosts:
- {{ kafka_host }}
tcp:
- match:
- destinationSubnets:
- {{ ip }}
gateways:
- mesh
port: {{ port }}
route:
- destination:
host: egress-svc-mdc-{{lookup('custom_vars', 'distrib.release.version')}}
port:
number: {{ internal_port }}
{% if lookup('custom_vars', 'tls_kafka_connection') | default(false) | bool == true %}
subset: egresstls
{% endif %}
- match:
- destinationSubnets:
- {{ ip }}
gateways:
- egress-gw-mdc-kafka-{{lookup('custom_vars', 'distrib.release.version')}}
port: {{ internal_port }}
route:
- destination:
host: {{ kafka_host }}
port:
number: {{ port }}
{% endfor %}
Сервис витрины, взаимодействие mTLS 1.2.
Настройка интеграции с витриной
ServiceEntry:
kind: ServiceEntry
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-se-mdc-rspit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.istio.egress.common.host.rspit_host}
ports:
- name: http-80
number: 80
protocol: HTTP
- name: https-443
number: 443
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNS
exportTo:
- .
Gateway:
kind: Gateway
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-gw-mdc-rspit-${distrib.release.version}
labels:
product: mdc
type: resource
spec:
servers:
- hosts:
- ${mdc.istio.egress.common.host.rspit_host}
port:
name: http-8092
number: 8092
protocol: HTTP
selector:
app: mdc-egress-${NAMESPACE}
istio: mdc-egress-${NAMESPACE}
VirtualService:
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-vs-mdc-rspit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
hosts:
- ${mdc.istio.egress.common.host.rspit_host}
gateways:
- mesh
- egress-gw-mdc-rspit-${distrib.release.version}
http:
- match:
- gateways:
- mesh
port: 80
rewrite:
authority: ${mdc.istio.egress.common.host.rspit_host}
route:
- destination:
host: egress-svc-mdc-${distrib.release.version}
port:
number: 8092
retries:
attempts: ${mdc.istio.egress.common.http.retries.attempts}
perTryTimeout: ${mdc.istio.egress.common.http.retries.timeout}
retryOn: gateway-error,connect-failure,refused-stream
timeout: ${mdc.istio.egress.common.http.request.timeout}
- match:
- gateways:
- egress-gw-mdc-rspit-${distrib.release.version}
port: 8092
route:
- destination:
host: ${mdc.istio.egress.common.host.rspit_host}
port:
number: 443
exportTo:
- .
DestinationRule:
kind: DestinationRule
apiVersion: networking.istio.io/v1alpha3
metadata:
name: egress-dr-mdc-rspit-${distrib.release.version}
labels:
app: mdc-egress
type: resource
spec:
exportTo:
- .
host: ${mdc.istio.egress.common.host.rspit_host}
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: 443
tls:
caCertificates: /etc/istio/egressgateway-ca-certs/CA.crt
clientCertificate: /etc/istio/egressgateway-certs/tls.crt
mode: MUTUAL
privateKey: /etc/istio/egressgateway-certs/tls.key
sni: ${mdc.istio.egress.common.host.rspit_host}
Примечание
Примечание
Настройка интеграции с компонентами AUTH и MONA осуществляется на стороне данных компонентов в соответствии с их эксплуатационной документацией.
Настройки приведены в Руководстве по установке AUTH и Руководстве по установке MONA.
Подготовка дистрибутива потребителя для загрузки справочников в NSIX#
Файлы моделей справочников для импорта необходимо размещать в каталоге package/conf/data/nsix.
Настройка стенда потребителя#
Для добавления нового универсального загрузчика необходимо выполнить следующие этапы (через обновление common-сегмента):
Добавить в environment.json сценарий для запуска сервиса в environment.json:
"playbooks_import": {
...
"IMPORT_NSIX_PARAMS": {
"id": 16,
"description": "Импорт параметров приложения МВ НСИ",
"dataDir": "nsix"
}
...
Внести в _global.resources.conf адрес нового загрузчика в формате (через обновление common-сегмента):
global.import.service.nsix.url=http://<INGRESS ХОСТ СЕРВИСА NSIX>/mdc-api/dictionary/model
Подсказка
Подсказка
Параметр INGRESS ХОСТ СЕРВИСА NSIX необходимо запросить у сопровождения инсталляции NSIX.
Если необходимо выполнить настройка аутентификации, обратитесь к руководству «Универсальный загрузчик» компонента CDJE (раздел «Настройка аутентификации загрузчика на стороне сервиса (или шлюза)»).
Обновление#
Перед обновлением компонента необходимо проверить, что образы с новой версией модуля были размещены в Docker-репозитории, и далее выполнить следующие шаги:
Создать резервную копию основной базы данных NSIX.
В консоли среды контейнеризации открыть раздел Workloads — Deployments — <имя модуля> — YAML.
В указанном в пункте 2 разделе найти строку image: и изменить значение хеш-кода на значение, указанное в конфигурационном релизе для нужного модуля.
Сохранить изменения. Если рестарт не начался автоматически, удалить Replication Controller у конфигурации развертывания. Новый Replication Controller начнет старт модуля.
В общем случае могут быть изменены значения переменных. В этом случае необходимо скорректировать их список на основе шаблонов в конфигурационном релизе (Parameters) и заполнить значения в Workloads — Config Maps — <имя модуля> — YAML, а также подставить в Deployments строки, где используются новые переменные, если они есть.
Перезапустить установку в соответствии с правилами автоматизированной установки с использованием Deploy Tools, приведенной в настоящем документе.
Подсказка
Подсказка
При обновлении компонента до новой версии удаление предыдущей версии не требуется.
Удаление#
Для удаления NSIX необходимо удалить все ресурсы его компонентов:
ConfigMaps;
Secrets;
Deployments;
Deployment Configs (только в OpenShift);
Services;
PODs;
Routes (только в OpenShift);
Схему базы данных.
Для удаления ресурса необходимо подключиться к Kubernetes (или опционально OpenShift) через терминал и выполнить команду:
kubectl -n <имя namespace> delete <тип компонента Kubernetes (или опционально Openshift)> <имя компонента Kubernetes (или опционально Openshift)>
Подсказка
Подсказка
Для подключения рекомендуется использовать Kubectl версии, соответствующей версии Kubernetes. Kubectl является составной частью Kubernetes,
устанавливается на рабочей станции.
Для удаления схемы базы данных необходимо открыть клиент для работы с БД, подключиться к серверу БД и выполнить команду:
DROP SCHEMA <имя схемы> CASCADE;
Проверка работоспособности#
При установке с помощью DeployTools задание в Jenkins должно завершиться без ошибок. При наличии ошибки нужно посмотреть лог-файлы и выявлять проблему.
Необходимо убедиться, что в консоли среды контейнеризации в разделе Workloads — Pods все Pods egress/ingress (если он используется) запущены (находятся в статусе Running) и не содержат ошибок.
Необходимо убедиться, что Pods модулей mdc-api, mdc-jobs, mdc-ivs, mdc-kmd, mdc-ui запущены (находятся в статусе Running) и не содержат ошибок, а Pods с таким же именем и названием deploy завершены.
Если Pod содержит ошибку вида CrashLoppBackOff или другую, горящую красным, нужно перейти в лог-файлы этого Pod и выяснить причину ошибки. Работа с данной ошибкой описана в разделе Часто встречающиеся проблемы и пути их устранения настоящего документа.
Успехом развертывания является то, что все сервисы запущены (поднялись все pod).
В случае, если не хватает какой-либо смежной системы, pods начнут писать внутри себя логи, либо перезагружаться, указывая на ошибку. Если такого поведения в процессе не наблюдается, то установка выполнена успешно.
Успешным результатом проверки корректной конфигурации механизмов безопасности является успешный запуск приложения, без применения корректной конфигурации механизмов безопасности приложение не запустится.
Для того что бы удостовериться, что выполненные действия по установке произведены верно, необходимо зайти в UI и перейти на главную страницу NSIX. Если главная страница и наименование логина пользователя на главной странице отображаются, то все действия произведены верно.
Откат#
Процедура отката предполагает откат максимум до предыдущей версии. Обязательные интеграции осуществляются в соответствии с разделами настоящего документа.
Примечание
Примечание
При откате на предыдущую версию обязательные интеграции с компонентами Платформы поддерживают обратную совместимость.
Откат производится путем установки дистрибутива компонента предыдущей версии. Детальное описание приведено в разделе Установка.
Откат системного ПО#
Для отката системного ПО необходимо:
обновить настройки файла конфигурации (в соответствии с разделом Настройка параметров конфигурации в common-репозитории);
обновить ролевую модель из AUTZ;
выполнить установку предыдущей версии модулей (в соответствии с разделом Автоматическая установка).
Откат ролевой модели AUTZ#
Для отката ролевой модели AUTZ необходимо следующее:
В разделе «Модули» для модулей ivs-rest, kmd-rest и version-rest загрузить ролевую модель из файлов старой версии (процедура производится аналогично установке новой ролевой модели).
В разделе «Пользователи» перейти в меню и удалить неиспользуемые роли, а также, при необходимости, добавить старые роли, которые в откатываемой версии были удалены.
Откат БД#
Для отката системы к БД более ранней версии компонента необходимо восстановить БД из созданной ранее резервной копии. Создание резервной копии данных и восстановление данных из резервной копии выполняется штатными утилитами (средствами) администрирования БД, такими как pg_dump и pg_restore соответственно. Информация приведена в Руководстве по системному администрированию компонента NSIX.
Часто встречающиеся проблемы и пути их устранения#
Проблемы с кодировкой на стенде#
Для установки кодировки по умолчанию в JVM необходимо добавить в CM nsix-cm-mdc-jobs.unver в параметре JAVA_OPTS значение
-Dfile.encoding=UTF-8.
Ошибка CrashLoppBackOff при установке#
Если Pod содержит ошибку вида CrashLoppBackOff или другую, горящую красным, нужно перейти в лог-файлы этого Pod и выяснить причину ошибки.
Причиной ошибки может быть:
некорректная ссылка на Docker-образ image;
ошибка jdbc-соединения;
некорректная модель БД;
отсутствие параметра конфигурации;
ошибка соединения с AUTZ.
Если Pod нет вовсе, нужно убедиться, что создана конфигурация развертывания (Workloads — Deployments), и в его настройках нажать кнопку Start Rollout.
Затем перейти в раздел Pods и следить за появлением Pods <имя-модуля-deploy> и <имя-модуля>. При появлении ошибки перейти в лог в течение минуты (далее Pod автоматически удаляется) и, скопировав сообщение из лога, проанализировать ошибку.
Если Pods работают, нужно посмотреть логи pod соответствующего компонента на наличие сообщений об ошибках.
Чек-лист валидации установки#
Чек лист валидации установки:
проверить в Deployments соответствие количества Pods, также значение метки version должно соответствовать версии системы;
статус ReplicationController соответствует статусу Complete;
статус Pods соответствует статусу Running;
в БД проверить таблицу databasechangelog на соответствие списка изменений схемы;
проверить корректность заполнения параметров безопасности, приведенных в разделе Настройка интеграции;
проверить корректность заполнения остальных параметров настройки интеграций, приведенных в разделе Настройка интеграции.