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

О документе#

В руководстве приведены инструкции по установке компонента Сервис интеграции справочных данных (DDIS).

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

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

Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней. Особых требований к настройкам безопасности окружения не предъявляется.

Системное программное обеспечение#

Ниже представлены категории системного программного обеспечения, которые обязательны или опциональны для установки, настройки, контроля и функционирования DDIS. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.

Категория ПО

Обязательность установки*

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

Версия

Продукт, функциональная совместимость с которым подтверждена **

Описание

Операционная система

Да

Альт 8 СП

10.0 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендована ОС – Platform V SberLinux OS Core (SLC) или Platform V SberLinux OS Server (SLO), см. раздел Платформенные зависимости

ОС контейнеров для запуска модулей компонента

Операционная система

Red Hat Enterprise Linux

8.8.1 и выше

Опционально. Правообладателем АО «СберТех» рекомендована ОС – Platform V SberLinux OS Server (SLO), см. раздел Платформенные зависимости

ОС контейнеров для запуска модулей компонента

Среда контейнеризации

Да

Kubernetes

1.21.6 и выше при условии сохранения обратной совместимости

Опционально. Правообладателем АО «СберТех» рекомендована среда контейнеризации – Platform V DropApp (K8S), см. раздел Платформенные зависимости

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

Среда контейнеризации

Red Hat OpenShift Container Platform

4.8 и выше

Опционально. Правообладателем АО «СберТех» рекомендована среда контейнеризации – Platform V DropApp (K8S), см. раздел Платформенные зависимости

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

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

Да

Docker CE

1.23 и выше

Рекомендовано

Инструмент для автоматизации работы с контейнерами

Инструмент сборки, тестирования, развертывания контейнеризированных приложений

Да

Jenkins

2.361.4 и выше

Рекомендовано

Сервер автоматизации, используемый для внедрения непрерывной интеграции и непрерывной доставки (CI/CD) для проектов программного обеспечения

Java-машина

Да

OpenJDK

1.8 и выше

Рекомендовано

Окружение для работы модулей компонента

Java-машина

OracleJDK

18.9 и выше

Опционально

Окружение для работы модулей компонента

Система управления базами данных

Да

PostgreSQL

13.8 и выше при условии сохранения обратной совместимости

Рекомендовано. Правообладателем АО «СберТех» также рекомендована СУБД, основанная на PostgreSQL, – Platform V Pangolin SE, см. раздел Платформенные зависимости

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

Драйвер

Нет

PostgreSQL JDBC

42.3.8 и выше

Рекомендовано

Набор классов и методов, используемых в языке программирования Java для работы с базами данных

Сервер приложений

Да

Apache Tomcat

9.0.41 и выше

Рекомендовано

СПО для тестирования, отладки и исполнения веб-приложений на основе Java

Браузер

Нет

Сбербраузер

9.2.60.1

Опционально

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

Браузер

Нет

Microsoft Edge

123.0.2420.81 и выше

Опционально

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

Брокер сообщений

Да

Kafka

2.7.0 и выше при условии сохранения обратной совместимости

Рекомендовано. Правообладателем АО «СберТех» также рекомендован брокер сообщений, основанный на Kafka, – Platform V Corax, см. раздел Платформенные зависимости

Событийный обмен сообщениями между модулями компонента, между смежными компонентами

Инструмент управления проектом

Да

Apache Maven

3.9 и выше

Рекомендовано

Фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Да

Nexus-Public

2.5.1 и выше

Рекомендовано

Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Nexus Repository Manager PRO

2 и выше

Опционально

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Nexus Repository Manager OSS

2 и выше

Опционально

Сервис централизованного хранения репозиториев исходного кода

Да

GitLab Community Edition

15.0 и выше

Рекомендовано

Хранение конфигураций при автоматизированной установке

Сервис централизованного хранения репозиториев исходного кода

Bitbucket

7.6 и выше

Опционально

Хранение конфигураций при автоматизированной установке

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

Да

Istio

1.12 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio, – Platform V Synapse Service Mesh, см. раздел Платформенные зависимости

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

Система мониторинга (сбор и хранение метрик)

Нет

Prometheus

2.37 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения – Объединенный мониторинг Unimon Platform V Monitor, см. раздел Платформенные зависимости

Система для сбора и хранения численных метрик

Система мониторинга (визуализация численных метрик)

Нет

Grafana

9.5 и выше

Рекомендовано

Система для визуализации численных метрик (предоставленных, например, Prometheus)

Удостоверяющий центр

Да

EJBCA Community

6.10 и выше

Рекомендовано

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

Система для управления изменениями баз данных

Да

LiquiBase

4.24.0 и выше

Рекомендовано

Библиотека для отслеживания, управления и применения изменений схемы базы данных

Система создания, хранения и распространения секретов

Нет

HashiCorp Vault

D-01.013.00-XXX

Опционально

Система, обеспечивающая безопасный и надежный способ создания, хранения и распространения секретов

Система создания, хранения и распространения секретов

Secret Management System (SecMan)

1.7.0 и выше

Опционально

Система, обеспечивающая безопасный и надежный способ создания, хранения и распространения секретов

Хранилище загруженных с ФИР данных

Да

Ceph

Любая актуальная версия

Рекомендовано. Может быть использовано любое облачное объектное хранилище, совместимое с протоколом S3

Сервис для хранения данных в виде объектов, доступный через S3 API

MinIO

Любая актуальная версия

Рекомендовано. Может быть использовано любое облачное объектное хранилище, совместимое с протоколом S3

Также требуется наличие распределенного сетевого хранилища (облачное объектное хранилище, совместимое с протоколом S3).

Для установки поставляемого компонента DDIS могут быть использованы:

  • компонент CDJE, требуемый для автоматизированной установки компонента DDIS, см. раздел Платформенные зависимости;

  • утилита для удаленной настройки (например, Ansible), требуемая для ручной установки компонента DDIS.

Для выполнения команд необходим установленный клиент системы контейнеризации Kubernetes (Kubectl) версии, соответствующей версии Kubernetes.

Примечание

Примечание
*

  • Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).

  • Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).
    **

  • Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.

  • Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.

Платформенные зависимости#

Для настройки, контроля и функционирования DDIS реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Наименование продукта

Код

Версия продукта

Код и наименование компонента

Обязательность установки (да/нет)***

Описание

Аналог других производителей****

Platform V Audit SE

AUD

2.3 и выше

AUDT Аудит

Нет

Сервис для аудирования событий

С аналогами других производителей не тестировался

Platform V Corax

KFK

10.340.0 и выше

KFKA Corax

Да

Гибрид распределенной базы данных и брокера сообщений для работы с потоками данных в реальном времени с возможностью горизонтального масштабирования

Kafka

Platform V DevOps Tools

DOT

1.9

CDJE Deploy tools

Нет

Сервис для развертывания и обновления компонент Platform V и приложений потребителей, для настройки и обслуживания инфраструктуры Platform V

Ручное развертывание

Platform V IAM SE

IAM

2.0.0 и выше

AUTH IAM Proxy

Нет

Сервис управления доступом и информационными ресурсами

С аналогами других производителей не тестировался

Platform V IAM SE

IAM

2.0.0 и выше

AUTZ Объединенный сервис авторизации (ОСА)

Нет

Сервис для авторизации

С аналогами других производителей не тестировался

Platform V Monitor

OPM

5.1.52 и выше

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

Нет

Сервис для хранения лог-файлов

С аналогами других производителей не тестировался

Platform V Monitor

OPM

5.1.75

MONA Объединенный мониторинг Unimon

Нет

Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения

Prometheus

Platform V Pangolin SE

PSQ

5.5.4 и выше

PSQL Pangolin

Да

Система управления базами данных, основанная на PostgreSQL

PostgreSQL

Platform V Synapse Service Mesh

SSM

4.3.2 и выше

SVPX Сервисный прокси

Да

Сервисный прокси, который интегрируется с Service Mesh, осуществляя аутентификацию, авторизацию, балансировку трафика внутри namespace потребителя

Istio proxy — Istio Service Mesh

Platform V Synapse Service Mesh

SSM

4.3.2 и выше

IGEG Граничный и сервисный прокси

Да

Сервис для обеспечения управляемого вызова интеграционных сервисов прикладной части

Istio proxy — Istio Service Mesh

Platform V Synapse Service Mesh

SSM

4.3.2 и выше

POLM Управление политиками

Да

Сервис для автоматизированной рассылки конфигураций политик управления трафиком, политик безопасности и прочих управляющих команд для сервисов «Граничный прокси» и «Сервисный прокси»

Istio proxy — Istio Service Mesh

Platform V SberLinux OS Server

SLO

8.10.0 и выше

INST Операционная система

Да

ОС контейнеров для запуска модулей компонента

Альт 8 СП или Red Hat Enterprise Linux

Platform V SberLinux OS Core

SLC

37.0 и выше

CORE Базовая ОС

Да

ОС контейнеров для запуска модулей компонента

Альт 8 СП

Platform V DropApp

K8S

2.2.0 и выше

K8SC K8S Core

Да

Среда контейнеризации со встроенными механизмами мультитенантности и бессерверным исполнением

Kubernetes

Примечание

Примечание
***

  • Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).

  • Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).
    **** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе Системное программное обеспечение.

У компонента реализована интеграция со следующими компонентами из состава продукта Platform V Frontend Std (#FS):

Наименование компонента

Код

Описание

Комментарии

Сервис предоставления справочных данных

LNSE

Фасад для получения справочных данных по API

Platform V Frontend Std (#FS) версии 4.5.44.1 и выше

One-Time Password (OTP) / OTT

OTTS

Сервис для аутентификации и авторизации межсервисных взаимодействий

Platform V Frontend Std (#FS) версии 4.5.44.1 и выше

PACMAN

CFGA

Сервис для хранения, управления и предоставления по запросу параметров конфигурации библиотек, сервисов и прикладных приложений

Platform V Frontend Std (#FS) версии 4.5.44.1 и выше

Стартовый менеджер

SMGX

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

Platform V Frontend Std (#FS) версии 4.5.44.1 и выше

Внутренний шлюз ЕФС

IAGW

Сервис является точкой входа в сектор, маршрутизирует HTTP-запрос на определенный shard или реплику

Platform V Frontend Std (#FS) версии 4.5.44.1 и выше

Аппаратные требования#

Квота на проект без учета sidecar-контейнеров:

Элемент развертывания

Среда развертывания

CPU requests (Millicores)

Memory requests (Gigabytes)

CPU limits (Millicores)

Memory limits (Gigabytes)

ddis-controller

Kubernetes/Platform V DropApp

1000

3

1000

3

ddis-facade

Kubernetes/Platform V DropApp

1000

2

1000

2

ddis-gate-tfs

Kubernetes/Platform V DropApp

3000

4

3000

4

ddis-publish-lnse

Kubernetes/Platform V DropApp

1000

2

1000

2

ddis-transformer

Kubernetes/Platform V DropApp

1000

2

1000

2

ddis-istio-egress

Kubernetes/Platform V DropApp

400

0,7

600

0,9

ddis-istio-ingress

Kubernetes/Platform V DropApp

200

0,4

400

0,6

Минимальное количество pod на один элемент развертывания (deployment unit): 1.

Характеристики sidecar-контейнеров:

Sidecar-контейнер

Среда развертывания

CPU requests (millicores)

Memory requests (Gigabytes)

CPU limits (millicores)

Memory limits (Gigabytes)

Элемент развертывания

istio-proxy

Kubernetes/Platform V DropApp

100

0.25

200

0.5

ddis-controller, ddis-facade, ddis-gate-tfs, ddis-publish-lnse, ddis-transformer

ott-sidecar

Kubernetes/Platform V DropApp

300

0.5

300

0.5

ddis-istio-ingress, ddis-istio-egress

vault-agent

Kubernetes/Platform V DropApp

50

0,06

100

0,13

ddis-controller, ddis-facade, ddis-gate-tfs, ddis-publish-lnse, ddis-transformer, ddis-istio-ingress, ddis-istio-egress

ulogger-sidecar

Kubernetes/Platform V DropApp

100

0,06

200

0,06

ddis-controller, ddis-facade, ddis-gate-tfs, ddis-publish-lnse, ddis-transformer

Квота на проект с учетом sidecar-контейнеров:

Элемент развертывания

Среда развертывания

CPU requests (millicores)

Memory requests (Gigabytes)

CPU limits (millicores)

Memory limits (Gigabytes)

ddis-controller

Kubernetes/Platform V DropApp

1250

3.37

1500

3.69

ddis-facade

Kubernetes/Platform V DropApp

1250

2.37

1500

2.69

ddis-gate-tfs

Kubernetes/Platform V DropApp

3250

4.37

3500

4.69

ddis-publish-lnse

Kubernetes/Platform V DropApp

1250

2.37

1500

2.69

ddis-transformer

Kubernetes/Platform V DropApp

1250

2.37

1500

2.69

ddis-istio-egress

Kubernetes/Platform V DropApp

750

1,26

600

1,53

ddis-istio-ingress

Kubernetes/Platform V DropApp

550

0,96

400

1,23

Минимальные требования к ресурсам базы данных:

Название компонента

Среда развертывания

CPU (количество ядер)

RAM (Gigabytes)

HDD (Tbyte)

Системные таблицы DDIS

PostgreSQL

4

16

0,3 (/data 0,23; /logs 0,05)

Минимальные требования к ресурсам размещения статических файлов:

Название компонента

Среда развертывания

HDD (Гб)

Object storage S3

300

Состав дистрибутива#

Дистрибутив компонента DDIS состоит из нескольких частей:

  • дистрибутив бинарных артефактов (ddis-bin-XX.YYY.ZZ-BUILD_FS-distrib.zip);

  • дистрибутивы конфигурации развертывания (ddis-cfg-XX.YYY.ZZ-BUILD_FS-distrib.zip);

  • файл .pom для каждого дистрибутива;

  • дистрибутив с документацией (documentation-XX.YYY.ZZ-BUILD-distrib.zip).

Дистрибутив бинарных артефактов компонента DDIS содержит:

Элемент дистрибутива

Описание

./package/bh

Исполняемые jar-файлы в среде JVM (distribution-controller.jar и т.д.)

./package/db

Скрипты миграции для системных таблиц, БД Pangolin (PSQL)

./package/docker/

Инструкции создания образа контейнеров приложений

Дистрибутив конфигурации развертывания DDIS содержит конфигурационные файлы, использующиеся при автоматизированной установке компонента средствами Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT).

Файлы *.pom содержат идентификационные параметры дистрибутивов, входящих в дистрибутивный комплект (по одному файлу на каждый дистрибутив). Каждый из файлов *.pom дистрибутива конфигурации развертывания в дополнение к идентификационным параметрам ассоциированного с ним дистрибутива содержит идентификационные параметры включенного в дистрибутивный комплект дистрибутива бинарных артефактов.

Дистрибутив с документацией содержит документацию компонента DDIS в формате Markdown.

Образы#

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

Инструкции, необходимые для создания образов прикладных контейнеров DDIS, приведены в соответствующем dockerfile (размещается в каталоге \conf\docker\<service> дистрибутива бинарных артефактов). Каждый dockerfile, в том числе, содержит сведения о рекомендованном базовом образе (base_image) — основы для образа прикладного контейнера.

В конфигурации развертывания DDIS присутствуют ссылки на образы sidecar-контейнеров, Dockerfile которых отсутствуют в дистрибутиве компонента. Образы указанных sidecar-контейнеров поставляются в составе других платформенных продуктов. Для sidecar-контейнеров DDIS рекомендованы образы соответствующие версиям с компонентов, указанным в разделе Платформенные зависимости настоящего документа.

Рекомендованные образы sidecar-контейнеров платформенных компонентов:

Sidecar-контейнер

Хеш

istio-proxy

proxyv2@sha256:fe9b0ca97d086d2b3800c5e9ed8ca3a0cfbc93627acc6c556e430d328ab1ac0a

ott-sidecar

ott-sidecar-ufs@sha256:e85217c05557809081fa1f7654b473f515fedec211c4167c6133cb74ba72b310

ulogger-sidecar

luent-bit@sha256:c8ed6320ba8ae23522877a52e9b7f3e7fb12916434b18f8c45970ee631c1b7e0

Для интеграции с системой создания, хранения и распространения секретов рекомендован вспомогательный компонент vault-agent. Алгоритм хеширования — sha256.

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

Целевой способ установки — Автоматизированная установка сервиса с использованием компонента CDJE.

Ручная установка компонента не предусмотрена.

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

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

  • подготовить инструменты развертывания;

  • подготовить базу данных;

  • подготовить пространство имен (namespace) в среде контейнеризации;

  • подготовить сертификаты;

  • подготовить секреты.

До установки компонента DDIS необходимо выполнить установку платформенных компонентов. Перечень платформенных компонентов приведен в разделе Платформенные зависимости настоящего Руководства по установке. Установка платформенных компонентов производится в соответствии с их эксплуатационной документацией.

Облачное объектное хранилище, совместимое с протоколом S3.

Подготовка инструментов развертывания#

В процессе установки и настройки компонента Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT) в централизованном хранилище репозиториев исходного кода должны быть созданы:

  • репозитории Pipeline:

    • с кодовой базой компонента Deploy tools (CDJE);

    • с общими параметрами среды функционирования компонентов продукта Platform V Frontend Standart (#FS) — репозиторий Сommon;

  • репозиторий с настройками компонента DDIS в среде функционирования.

Полный перечень репозиториев и их описание приведено в разделе «Подготовка окружения» документа Руководство по установке компонента Deploy tools (CDJE).

Кроме того, в процессе установки и настройки компонента Deploy tools (CDJE) должна быть выполнена миграция данных для репозиториев Pipeline. Описание процедура миграции приведено в разделе «Установка» документа Руководство по установке компонента Deploy tools (CDJE).

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

Схема разворачивания скриптов БД:

  • для каждого сервиса отдельная схема в одной БД.

Необходимо выполнить настройку PSQL. Для этого в СУБД необходимо проверить наличие ролей as_admin, as_TUZ. При разворачивании в СУБД PSQL роли входят в поставку. При использовании СУБД PSQL необходимо предварительно создать роли.

-- скрипт проверки на наличие ролей
SELECT rolname FROM pg_roles WHERE rolname in ('as_TUZ', 'as_admin');
--скрипт создания ролей
CREATE ROLE as_admin WITH NOLOGIN INHERIT CONNECTION LIMIT 0 VALID UNTIL 'infinity';
CREATE ROLE "as_TUZ" WITH NOLOGIN INHERIT CONNECTION LIMIT 0 VALID UNTIL 'infinity';

Проверить параметр max_connections количество соединений к БД. Значение должно быть не меньше произведению 20 (pool соединений от одного сервиса) и количество экземпляров сервисов, подключаемых к БД.

Далее приведена инструкция создания схем и пользователей для каждого сервиса. Далее по тексу означает суффикс для подключения к БД и имеет значение переменной в DOT DB_SCHEMA_SUFFIX.

Перед созданием схем в базе данных необходимо создание табличных пространств (tablespace):

  • ddis_ts_data, табличное пространство для таблиц;

  • ddis_ts_idx, табличное пространство для индексов.

Пример команды создания каталогов:

-- пример, на сервере создать папки для пространств
mkdir /pgdata/pg_tblspc/ddis_ts_data
mkdir /pgdata/pg_tblspc/ddis_ts_idx
--в СУБД выполнить пользователем с правами db_admin (psql)

CREATE TABLESPACE ddis_ts_data OWNER as_admin LOCATION '/pgdata/pg_tblspc/ddis_ts_data';

CREATE TABLESPACE ddis_ts_idx OWNER as_admin LOCATION '/pgdata/pg_tblspc/ddis_ts_idx';

GRANT CREATE ON TABLESPACE ddis_ts_data TO as_admin;
GRANT CREATE ON TABLESPACE ddis_ts_idx TO as_admin;

После того как будут созданы каталоги, необходимо создать БД и пользователя, от имени которого будет выполнена первичная настройка БД (далее администратор БД). Для создания рекомендуется использовать утилиту psql — консольная утилита с помощью которой можно подключится к серверу баз данных PSQ. Psql устанавливается по умолчанию при установке PSQ.

Создание пользователя для наката скриптов миграций LiquiBase с ролью as_admin:

CREATE USER ddis<suffix> WITH
    PASSWORD '***************'
    LOGIN
    NOCREATEDB
    NOCREATEROLE
    NOSUPERUSER
    NOINHERIT
    NOREPLICATION
    NOBYPASSRLS;

GRANT as_admin TO ddis<suffix>;
ALTER ROLE ddis<suffix> SET role TO 'as_admin';

Подготовка схемы для сервиса ddis-controller#

Создание в БД схемы ddis_controller:

-- Схема для владельца схемы приложения
CREATE SCHEMA ddis_controller<suffix> AUTHORIZATION as_admin;
GRANT ALL ON SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT USAGE ON SCHEMA ddis_controller<suffix>  TO "as_TUZ";

Предоставление привилегий по умолчанию на схему в БД для ролей as_admin, as_TUZ:

``` roomsql
GRANT USAGE ON SCHEMA ddis_controller<suffix>  TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA ddis_controller<suffix>  TO "as_TUZ";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_controller<suffix>  TO "as_TUZ";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ddis_controller<suffix>  TO "as_TUZ";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA ddis_controller<suffix>  TO "as_TUZ";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA ddis_controller<suffix>  TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON SEQUENCES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT EXECUTE ON FUNCTIONS TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT EXECUTE ON ROUTINES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT USAGE ON TYPES TO "as_TUZ";
  
GRANT ALL PRIVILEGES ON SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA ddis_controller<suffix>  TO as_admin;
GRANT ALL PRIVILEGES ON ALL PROCEDURES IN SCHEMA ddis_controller<suffix>  TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON TABLES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON SEQUENCES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON FUNCTIONS TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON ROUTINES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_controller<suffix>  GRANT ALL PRIVILEGES ON TYPES TO as_admin;

Для работы c БД ddis_controller создается пользователь ddis_controller:

  • для сервиса rspt-datamart пользователя datamart_appl:

--выполнить пользователем с правами dba
CREATE USER ddis_controller<suffix> WITH
    PASSWORD '***************'
    LOGIN
    NOCREATEDB
    NOCREATEROLE
    NOSUPERUSER
    NOINHERIT
    NOREPLICATION
    NOBYPASSRLS;
    
ALTER ROLE ddis_controller<suffix> SET search_path TO "$user" ;
GRANT "as_TUZ" TO ddis_controller<suffix>;
Подготовка схемы для сервиса ddis-gate-tfs#

Создание в БД схемы ddis_gate_tfs:

-- Схема для владельца схемы приложения
CREATE SCHEMA ddis_gate_tfs<suffix> AUTHORIZATION as_admin;
GRANT ALL ON SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT USAGE ON SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";

Предоставление привилегий по умолчанию на схему в БД для ролей as_admin, as_TUZ:

GRANT USAGE ON SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA ddis_gate_tfs<suffix> TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT EXECUTE ON FUNCTIONS TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT EXECUTE ON ROUTINES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT USAGE ON TYPES TO "as_TUZ";
  
GRANT ALL PRIVILEGES ON SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA ddis_gate_tfs<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL PROCEDURES IN SCHEMA ddis_gate_tfs<suffix> TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON TABLES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON FUNCTIONS TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON ROUTINES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_gate_tfs<suffix> GRANT ALL PRIVILEGES ON TYPES TO as_admin;

Для работы c БД ddis_gate_tfs создаем пользователя ddis_gate_tfs:

--выполнить пользователем с правами dba
CREATE USER ddis_gate_tfs<suffix> WITH
    PASSWORD '***************'
    LOGIN
    NOCREATEDB
    NOCREATEROLE
    NOSUPERUSER
    INHERIT
    NOREPLICATION
    NOBYPASSRLS;
    
ALTER ROLE ddis_gate_tfs_sb<suffix> SET search_path TO "$user" ;
GRANT "as_TUZ" TO ddis_gate_tfs<suffix>l;
Подготовка схемы для сервиса ddis-publish-lnse#

Создание в БД схемы ddis_publish_lnse:

-- Схема для владельца схемы приложения
CREATE SCHEMA ddis_publish_lnse<suffix> AUTHORIZATION as_admin;
GRANT ALL ON SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT USAGE ON SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";

Предоставление привилегий по умолчанию на схему в БД для ролей as_admin, as_TUZ:

GRANT USAGE ON SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA ddis_publish_lnse<suffix> TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT EXECUTE ON FUNCTIONS TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT EXECUTE ON ROUTINES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT USAGE ON TYPES TO "as_TUZ";
  
GRANT ALL PRIVILEGES ON SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA ddis_publish_lnse<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL PROCEDURES IN SCHEMA ddis_publish_lnse<suffix>  TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON TABLES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON FUNCTIONS TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON ROUTINES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA ddis_publish_lnse<suffix> GRANT ALL PRIVILEGES ON TYPES TO as_admin;

Для работы c БД ddis_publish_lnse создаем пользователя ddis_publish_lnse:

--выполнить пользователем с правами dba
CREATE USER ddis_publish_lnse<suffix> WITH
    PASSWORD '***************'
    LOGIN
    NOCREATEDB
    NOCREATEROLE
    NOSUPERUSER
    INHERIT
    NOREPLICATION
    NOBYPASSRLS;
    
ALTER ROLE ddis_publish_lnse<suffix> SET search_path TO "$user";
GRANT "as_TUZ" TO ddis_publish_lnse<suffix> ;
Подготовка схемы для сервиса ddis-transformer#

Создание в БД схемы ddis_transformer:

-- Схема для владельца схемы приложения
CREATE SCHEMA ddis_transformer<suffix> AUTHORIZATION as_admin;
GRANT ALL ON SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT USAGE ON SCHEMA  ddis_transformer<suffix> TO "as_TUZ";

Предоставление дефолтовых привилегий на схему в БД для ролей as_admin, as_TUZ:

GRANT USAGE ON SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA  ddis_transformer<suffix> TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT EXECUTE ON FUNCTIONS TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT EXECUTE ON ROUTINES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT USAGE ON TYPES TO "as_TUZ";
  
GRANT ALL PRIVILEGES ON SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA  ddis_transformer<suffix> TO as_admin;
GRANT ALL PRIVILEGES ON ALL PROCEDURES IN SCHEMA  ddis_transformer<suffix> TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON TABLES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON SEQUENCES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON FUNCTIONS TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON ROUTINES TO as_admin;
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA  ddis_transformer<suffix> GRANT ALL PRIVILEGES ON TYPES TO as_admin;

Для работы c БД ddis_transformer создаем пользователя ddis_transformer:

--выполнить пользователем с правами dba
CREATE USER  ddis_transformer<suffix> WITH
    PASSWORD '***************'
    LOGIN
    NOCREATEDB
    NOCREATEROLE
    NOSUPERUSER
    INHERIT
    NOREPLICATION
    NOBYPASSRLS;
    
ALTER ROLE  ddis_transformer<suffix> SET search_path TO  "$user";
GRANT "as_TUZ" TO  ddis_transformer<suffix> ;

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

В качестве системы контейнеризации используется Kubernetes (рекомендуется использование продукта Platform V DropApp (K8S)).

Развертывание и настройка кластеров системы контейнеризации выполняется в соответствии с эксплуатационной документацией конечной информационной системы, в состав которой интегрируется компонент DDIS.

Если в качестве системы управления секретами предполагается использование Secret Management System (SecMan) или Hashicorp Vault, то кластер среды контейнеризации должен быть подключен к SecMan или Hashicorp Vault. Подключение осуществляется согласно эксплуатационной документации на соответствующее ПО.

Для компонента DDIS в кластере среды контейнеризации должно быть создано пространство имен (namespace). При создании именованной области среды контейнеризации должны быть учтены требования DDIS к выделяемым аппаратным ресурсам (приведены в разделе Аппаратные требования настоящего Руководства по установке). Кроме того, должны быть учтены требования к выделяемым аппаратным ресурсам компонентов, не входящих в поставку компонента DDIS, но размещаемых внутри пространства имен DDIS.

Для подключения инструментов развертывания компонента DDIS (рекомендован компонент Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT)) к пространству имен DDIS в среде контейнеризации должна быть создана и настроена сервисная учетная запись (ServiceAccount) с правами на загрузку артефактов. Рекомендованное имя сервисной учетной записи — deploy. Рекомендуется получить токен сервисной учетной записи, так как он требуется при настройке CDJE.

Примеры команд получения токена:

kubectl get serviceaccounts <имя сервисной учетной записи> -o yaml --namespace=<имя пространства имен>
kubectl get secret <имя сервисного аккаунта>-token-*  -o yaml --namespace=<имя пространства имен> --namespace=<имя пространства имен>

Пример ответного сообщения с токеном:

apiVersion: v1
data:
ca.crt: (APISERVER'S CA BASE64 ENCODED)
---
token: (BEARER TOKEN BASE64 ENCODED)
kind: Secret
metadata:
...
type: kubernetes.io/service-account-token

Для выполнения команд рекомендуется использовать инструмент командной строки Kubernetes Kubectl. Kubectl является составной частью Kubernetes, устанавливается на рабочей станции. Версия Kubectl не должна отличаться от той, которая используется в кластере среды контейнеризации. Для выполнения команд требуются права администратора кластера среды контейнеризации.

Пространство имен компонента DDIS должно быть подключено к сервисной сетке (service mesh) Istio (рекомендуется использование продукта Platform V Synapse Service Mesh (SSM)). Подключение осуществляется в соответствии с эксплуатационной документацией продукта, предоставляющего инфраструктуру сервисной сетки (service mesh) в кластере среды контейнеризации.

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

Для поставляемой конфигурации компонента DDIS требуются следующие ключи и сертификаты:

  • сертификат и ключ клиента для шлюза Egress;

  • корневой и промежуточные сертификаты удостоверяющего центра для шлюза Egress;

  • сертификат и ключ сервера для шлюза Ingress;

  • корневой и промежуточные сертификаты удостоверяющего центра для шлюза Ingress;

  • клиентский ключ и сертификат для подключения к topic (Kafka);

  • корневой сертификат удостоверяющего центра, выпустившего сертификат для подключения к topic (Kafka);

  • клиентский ключ и сертификат для подключения к topic (Kafka) для обмена с LOGA;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат для подключения к topic (Kafka) для обмена с LOGA;

  • сертификат и ключ клиента для подключения к PSQL в SSL-режиме;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к PSQL в SSL-режиме;

  • сертификат и ключ клиента для обмена с OTTS;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для обмена с OTTS.

Процедура выпуска сертификатов регламентируется эксплуатационной документацией конечной информационной системы, в состав которой интегрируется компонент DDIS.

Ключи и сертификаты, используемые для подключения к topic (Kafka), должны быть размещены в JKS-хранилище типа keystore. Пароль шифрования каждого размещенного в хранилище закрытого ключа должен совпадать с паролем доступа к этому хранилищу. Для управления JKS-хранилищем рекомендуется использовать java утилиту Keytool.

Корневые сертификаты должны быть размещены в JKS-хранилище типа truststore. В truststore допускается размещение нескольких корневых сертификатов разных удостоверяющих центров.

Выпускать ключи и сертификаты для подключения к PSQL в SSL-режиме необходимо используя утилиту Openssl версии не ниже той, которая используется в CУБД.

Корневой сертификат должен быть выпущен с параметром extension v3_ca.

При подготовке клиентских ключа и сертификата должны быть учетны следующие требования:

  • клиентский сертификат должен быть выпущен в формате PEM (файл ASCII в кодировке bas64);

  • атрибут CN (Common Name) клиентского сертификата должен совпадать с логином пользователя БД DDIS;

  • файл клиентского ключа должен быть сконвертирован в двоичный формат DER.

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

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

  • логин и пароль пользователя, от имени которого приложения будут обращаться к базе данных;

  • логин и пароль пользователя, от имени которого будет выполняться накат скриптов LiquiBase для управления объектами базы данных (секрет используется в процессе установки компонента).

  • accessKey и secretKey, от имени которого будет приложения будут обращаться к содержимому в облачном хранилище по протоколу S3.

Для хранения секретов, используемых компонентом DDIS в процессе его функционирования, рекомендуется использовать Secret Management System (SecMan) или Hashicorp Vault.

Для доставки секретов в среду функционирования компонента DDIS рекомендуется использовать sidecar-приложения vault-agent.

При подготовке к установке DDIS секреты, используемые компонентом DDIS в процессе его функционирования, должны быть размещены в KV-хранилище SecMan. Описание подготовки KV-хранилища SecMan приведено в разделе Настройка интеграции настоящего Руководства по установке.

Установка#

Автоматизированная установка сервиса с использованием Deploy Tools#

Установка DDIS производится путем создания объектов в среде контейнеризации на основе поставляемых в дистрибутиве компонента конфигурационных yaml-файлов. В процессе установки для указанных в yaml-файлах параметров устанавливаются значения, характерные для среды функционирования DDIS.

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

  • проверить соответствие версии скриптов установки программного обеспечения (pipeline) версии, указанной в файле /package/conf/version.conf дистрибутива конфигурации развертывания компонента DDIS;

  • проверить наличие нужных сценариев (playbook) в списке сценариев сборки в Jenkins.

Функциональностью компонента Deploy tools (CDJE) продукта Platform V DevOps Tools (DOT) предусмотрена проверка конфигураций компонентов перед их установкой. Проверка конфигурации заключается в проверке доступности инфраструктуры и наличия в конфигурационных файлах некорректно настроенных параметров. Набор сценариев (playbook) для выполнения проверки задается в разделе playbooks_default файла distrib.ym дистрибутивного комплекта устанавливаемого компонента.

По умолчанию проверка выполняется при запуске задания (job) Jenkins, предназначенного для установки компонентов. Проверку можно отключить, установив в false параметр forcePreCheck в файле environment.json репозитория Сommon.

Также предусмотрена возможность ручного запуска проверки конфигурации. Для ручного запуска проверки конфигурации компонента DDIS нужно выполнить следующие действия:

  • перейти к заданию (job) Jenkins, предназначенному для установки приложений;

  • в меню слева выбрать опцию Собрать с параметрами;

  • установить параметры сборки:

    • указать SUBSYSTEM: выбрать DDIS,

    • указать DISTRIB_VERSION: выбрать версию дистрибутива конфигурации развертывания,

    • указать OSE_CLUSTERS: выбрать кластер K8S,

    • Репозиторий/ветка с настройками: выбрать основную ветку конфигурации в соответствии с настройками Deploy Tools (CDJE),

    • выбрать сценарии (playbook): FP_CONF_CHECK;

  • запустить сборку, нажав кнопку Собрать.

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

Для установки компонента DDIS необходимо:

  • перейти к заданию Jenkins, предназначенному для установки компонентов платформы (JOB Deploy);

  • в меню слева выбрать опцию Собрать с параметрами;

  • установить параметры сборки:

    • указать SUBSYSTEM: выбрать DDIS,

    • указать DISTRIB_VERSION: выбрать версию дистрибутива конфигурации развертывания,

    • указать OSE_CLUSTERS: выбрать кластер K8S,

    • Репозиторий/ветка с настройками: выбрать основную ветку конфигурации в соответствии с настройками компонента Deploy Tools (CDJE),

    • выбрать сценарии (playbook):

      • MIGRATION_FP_CONF,

      • DB_UPDATE,

      • OPENSHIFT_DEPLOY,

      • OPENSHIFT_INGRESS_EGRESS_DEPLOY,

      • IMPORT_ALL_PARAMS (при первичной установке этот сценарий (playbook) необходимо выполнить отдельно, после предыдущих в списке);

  • запустить сборку, нажав кнопку Собрать.

После завершения сборки необходимо проверить лог-файл на предмет наличия ошибок.

При наличии в среде установки компонента DDIS компонента Внутренний шлюз (IAGW) продукта Platform V Frontend Std (#FS) дополнительно нужно выбрать сценарии (playbook):

  • NGINX_DEPLOY;

  • NGINX_II_DEPLOY.

Краткое описание сценариев (playbook), исполняемых при установке компонента DDIS:

Сценарий (playbook)

Описание

MIGRATION_FP_CONF

Миграция настроек из дистрибутива компонента в промежуточный репозиторий

DB_UPDATE

Запуск LiquiBase-скриптов миграции БД

OPENSHIFT_DEPLOY

Установка приложений компонента; название сценария (playbook) одинаково для обоих оркестраторов

OPENSHIFT_INGRESS_EGRESS_DEPLOY

Установка шлюзов Ingress и Egress в проектную область (namespace) компонента (компонент Граничный и сервисный прокси (IGEG)); название сценария (playbook) одинаково для обоих оркестраторов

NGINX_DEPLOY

Импорт конфигурационных файлов и установка PL-компонентов на группы серверов nginx/nginx_ui (компонент Внутренний шлюз (IAGW)

NGINX_II_DEPLOY

Импорт конфигурационных файлов на группы серверов nginx_ii (компонент Внутренний шлюз (IAGW))

IMPORT_ALL_PARAMS

Импорт наполнения тестовых справочников, импорт настроек в платформенные компоненты

Набор возможных сценариев (playbook) зависит от конфигурации инструментов Deploy Tools (CDJE) продукта Platform V DevOps Tools (DOT).

Для переключения трафика между компонентом DDIS текущей версии, развернутом в среде контейнеризации K8S, и компонентом DDIS предыдущей версии, развернутом в другой среде контейнеризации, необходимо:

  • в файле _global.resources.conf репозитория Common изменить значение параметра global.platform.iag.default.route:

    • значение dropapp — маршрутизация трафика в K8S;

  • запустить задание (job) Jenkins, предназначенное для установки компонентов, выбрав сценарии (playbook):

    • NGINX_DEPLOY,

    • NGINX_II_DEPLOY.

После завершения выполнения задания (job) Jenkins необходимо проверить лог-файл на предмет наличия ошибок.

Подготовка хранилища S3#

Подключение к хранилищу S3:

После успешного подключения появится главное меню:

Имя корзины формируется по правилу:

  • должно быть длиной не менее 3 символов и не более 63;

  • может содержать только строчные буквы, цифры и дефис;

  • должно начинаться и заканчиваться на букву или цифру;

  • не должно содержать несколько дефисов подряд.

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

Параметры интеграции с компонентом Pangolin (PSQL) продукта Platform V Pangolin SE (PSQ)#

Для хранения обрабатываемых компонентом DDIS данных необходимо использовать реляционную БД под управлением Pangolin (PSQL) продукта Platform V Pangolin SE (PSQ).

Для получения доступа к БД компонентом DDIS используется набор программных интерфейсов JDBC.

При подключении приложений DDIS к CУБД Pangolin (PSQL) рекомендуется использовать протокол mTLS 1.2., обеспечивающий взаимную аутентификацию сторон, участвующих в передаче данных.

Описание параметров для безопасной передачи логина, пароля и SSL-сертификатов доступа к БД в среду функционирования компонента DDIS приведено в разделе Настройка интеграции с Hashicorp Vault или Secret Management System настоящего Руководства по установке.

Параметры подключения компонента DDIS к СУБД устанавливаются путем определения их значений в файлах \conf\config\parameters\ddis.all.conf и \conf\config\parameters\ddis.istio.all.conf дистрибутива конфигурации развертывания компонента DDIS:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.all.conf

ddis.jdbc.ddis_postgres.url

Путь к СУБД, используется при выполнении запросов к БД, рекомендованное значение —

ddis.istio.all.conf

ddis.istio.egress.common.db.mtls.enabled

Режим взаимодействия с СУБД, рекомендованное значение —

ddis.istio.egress.common.db.ddis.servers

Порт для обращения компонента через Egress к СУБД, рекомендованное значение — , значение переменной устанавливается в файле репозитория Сommon

Параметры подключения к CУБД Pangolin (PSQL) для исполнения включенных в состав дистрибутивного комплекта компонента DDIS скриптов LiquiBase устанавливаются путем определениях их значений в секции dbscripts файла \conf\distrib.yml дистрибутива конфигурации развертывания:

Файл дистрибутива

Параметр дистрибутива

Описание

distrib.yml

schema

Первый фасет в наименовании схемы БД

url

Путь к БД, значение переменной устанавливается в файле репозитория Сommon

username

Логин LiquiBase-пользователь БД DDIS, значение — для каждой схемы свой, значение переменной устанавливается в файле репозитория Сommon

password

Пароль LiquiBase-пользователь БД DDIS, значение — для каждой схемы свой, значение переменной устанавливается в файле репозитория Сommon

definitions.schema_name

Первый фасет в наименовании схемы БД, актуален для схемы ddis-gate-tfs, значение ddis_gate_tfs,значение переменной устанавливается в файле репозитория Сommon

definitions.tablespace_data

Имя табличного пространства для хранения данных, значение — ddis_ts_data

definitions.tablespace_index

Имя табличного пространства для хранения индексов, значение — ddis_ts_idx

definitions.tablespace_t

Имя табличного пространства для хранения данных, значение — ddis_ts_data

definitions.tablespace_i

Имя табличного пространства для хранения индексов, значение — ddis_ts_idx

При определении параметров подключения к СУБД используются переменные, значения которых устанавливаются в файлах репозитория Сommon:

Переменная репозитория Сommon

Описание

DDIS_POSTGRES_DB_URL

Путь к БД, значение указывается в common.conf.yml

DDIS_POSTGRES_DB_ADMIN

Логин LiquiBase-пользователь БД DDIS, значение указывается в _passwords.conf

DDIS_POSTGRES_DB_PASS

Пароль LiquiBase-пользователь БД DDIS, значение указывается в _passwords.conf

DB_SCHEMA_SUFFIX

Второй фасет в наименовании схемы БД, значение указывается в common.conf.yml

Файл _password.conf репозитория Сommon выступает в роли хранилища значений секретных параметров и хранится в репозитории в формате OpenSSL. Алгоритм openssl — aes-256-cbc. Для шифрования и расшифровки файла с рабочей машины рекомендуется использовать утилиту OpenSSL.

Примечание

Примечание
Интеграция с PostgreSQL происходит так же как с компонентом Pangolin (PSQL).

Настройка интеграции с Hashicorp Vault или Secret Management System#

Компонент DDIS может быть интегрирован с Secret Management System (SecMan) — это инструмент, который обеспечивает безопасный способ хранения и распространения секретов, базируется на хранилище секретов Hashicorp Vault.

Примечание

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

В поставляемой конфигурации компонента DDIS для интеграции с Secret Management System (SecMan) используются sidecar-приложения vault-agent.

Приложение vault-agent — дополнение SecMan, которое обеспечивает доставку секретов в файловую систему среды функционирования приложений компонента DDIS.

При организации информационного обмена с SecMan должно быть подготовлено KV-хранилище SecMan, для размещения следующих секретов, используемых компонентом DDIS:

  • логин и пароль доступа к БД;

  • сертификат и ключ клиента для подключения к PSQL в SSL-режиме;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к PSQL в SSL-режиме;

  • keystore — хранилище JKS c сертификатами клиента;

  • truststore — хранилище JKS c корневыми сертификатами;

  • сертификат и ключ клиента для шлюза Egress;

  • корневой и промежуточные сертификаты удостоверяющего центра для шлюза Egress;

  • сертификат и ключ сервера для шлюза Ingress;

  • корневой и промежуточные сертификаты удостоверяющего центра для шлюза Ingress;

  • сертификат и ключ клиента для подключения к topic (kafka) LOGA;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к topic (kafka) LOGA;

  • сертификат и ключ клиента для обмена с OTTS;

  • корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для обмена с OTTS.

Для секретов KV-хранилище SecMan должны быть определены ключи:

Секрет

Ключ

Описание

${global.platform.annotations.hashicorp.cert.client.secretName}

postgre-tls.crt

Сертификат клиента для подключения к PSQL в SSL-режиме

postgre-tls.key

Ключ сертификата клиента для подключения к PSQL в SSL-режиме

postgre-serial_number

Серийный номер сертификата клиента для подключения к PSQL в SSL-режиме

${global.platform.annotations.hashicorp.rootCertsPath}

postgre-root.crt

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к PSQL в SSL-режиме

global.platform.annotations.hashicorp.cert.client.secretName

keystore.jks

Хранилище JKS c сертификатом клиента

keystore_pass

Ключевая фраза хранилища JKS c сертификатом клиента

serial_number

Серийный номер сертификата клиента

${global.platform.annotations.hashicorp.rootCertsPath}

truststore_jks

Хранилище JKS c сертификатом сервера

truststore_pass

Ключевая фраза хранилища JKS c сертификатом сервера

${global.platform.annotations.hashicorp.cert.client.secretNam}

client_tls.crt

Сертификат клиента для шлюза Egress

client_tls.key

Ключ сертификата клиента для шлюза Egress

${global.platform.annotations.hashicorp.rootCertsPath}

client_root.crt

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для шлюза Egress

${global.platform.annotations.hashicorp.cert.server.secretName}

server_tls.crt

Сертификат сервера для шлюза Ingress

server_tls.key

Ключ сертификата сервера для шлюза Ingress

${global.platform.annotations.hashicorp.rootCertsPath}

server_root.crt

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для шлюза Ingress

${global.platform.annotations.hashicorp.cert.client.secretName}

pvm_client_tls.crt

Сертификат клиента для подключения к topic (kafka) LOGA

pvm_client_tls.key

Ключ сертификата клиента для подключения к topic (kafka) LOGA

${global.platform.annotations.hashicorp.rootCertsPath}

pvm_client_root.crt

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к topic (kafka) LOGA

${global.platform.annotations.hashicorp.ott.cert.client.secretName}

ott_cert.pem

Сертификат клиента для обмена с OTTS

ott_key.pem

Ключ сертификата клиента для обмена с OTTS

${global.platform.annotations.hashicorp.rootCertsPath}

ott_root.pem

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента OTTS

${global.platform.annotations.hashicorp.rootCertsPath}

truststore_cer

Корневой сертификат удостоверяющего центра, выпустившего сертификат клиента для подключения к PSQL в SSL-режиме

Кроме того, в KV-хранилище должны быть размещены секреты, для которого должны быть определены ключи и значения ключей:

Секрет

Ключ

Описание

ddis.secman.db.role.controller

username

Логин доступа к БД компонента DDIS схемы сервиса контроллера (ddis-controller)

password

Пароль доступа к БД компонента DDIS схемы сервиса контроллера (ddis-controller)

ddis.secman.db.role.gateway

username

Логин доступа к БД компонента DDIS схемы сервиса контроллера (ddis-gate-tfs)

password

Пароль доступа к БД компонента DDIS схемы сервиса контроллера (ddis-gate-tfs)

ddis.secman.db.role.dictionary

username

Логин доступа к БД компонента DDIS схемы сервиса контроллера (ddis-publish-lnse)

password

Пароль доступа к БД компонента DDIS схемы сервиса контроллера (ddis-publish-lnse)

ddis.secman.db.role.transformer

username

Логин доступа к БД компонента DDIS схемы сервиса контроллера (ddis-transformer)

password

Пароль доступа к БД компонента DDIS схемы сервиса контроллера (ddis-transformer)

ddis.secman.kv.secret.s3

accesskey

AccessKey к локальному облачному хранилищу DDIS по протоколу S3

secretkey

SecretKey к локальному облачному хранилищу DDIS по протоколу S3

ddis.secman.kv.secret.s3-tfs

ddis.files.bucket.in.connection.accessKey

AccessKey к интеграционному облачному хранилищу по протоколу S3

ddis.files.bucket.in.connection.secretKey

SecretKey к интеграционному облачному хранилищу по протоколу S3

Путь до KV-хранилища к секретам компонента (файл ddis.vault.all.conf):

ddis.vault.hashicorp.com.agent-inject-template.kv.baseEngineMountPath — в случае секретов с сертификатами; ddis.secman.kv.path — в случае секретов приложений, отличных от сертификатов.

Для обеспечения доступа к секретам из приложений vault-agent, развернутых в pod-ах компонента DDIS, в SecMan должна быть настроена роль. Требуется доступ из пространства имен (namespace) DDIS к KV-хранилищу SecMan на чтение секретов и их списка.

При конфигурировании PKI движков в Secman должны быть настроены роль для выпуска сертификатов методом fetch.

Настройки подключения vault-agent к pods компонента DDIS определяются в файлах \conf\k8s\base\ddis-*\deploy.yaml, \conf\k8s\base\istio\deployments\ingress\deploy_mtls.yaml и \conf\k8s\base\istio\deployments\egress\deploy_mtls.yaml (для среды контейнеризации K8S) дистрибутива конфигурации развертывания. Файлы содержат инструкции выпуска сертификатов и извлечения секретов из SecMan. Секреты извлекаются из внешнего кластера SecMan с использованием аннотаций secman-injector в YAML-файлах. Аннотации представляют собой инструкции по конфигурации для secman-injector, добавляющего sidecar-контейнер vault-agent в pod приложения.

Параметры интеграции с SecMan устанавливаются в файле \conf\config\parameters\ddis.vault.all.conf дистрибутива конфигурации развертывания компонента DDIS.

В компоненте DDIS реализована загрузка контейнеров с несколькими корневыми сертификатами разных удостоверяющих центров из KV-хранилища секретов SecMan. Путь к KV-хранилищу с корневыми сертификатами задается в параметре ddis.ose.deployment.spec.template.metadata.annotations.vault.hashicorp.com.rootCertsPath в файле ddis.vault.all.conf дистрибутива конфигурации развертывания компонента.

Параметры функционирования компонента Граничный и сервисный прокси (IGEG) продукта Platform V Synapse Service Mesh (SSM) в составе компонента DDIS#

Компонент Граничный и сервисный прокси (IGEG) добавляется в пространство имен (namespace) компонента DDIS в виде контейнера istio-proxy с приложением Ingress gateway и контейнера istio-proxy с приложением Egress gateway. IGEG выполняют роль управляемого маршрутизатора трафика, приходящего и исходящего из пространства имен (namespace) DDIS. Рекомендованный образ sidecar-контейнера istio-proxy приведен в разделе Состав дистрибутива настоящего Руководства по установке.

Параметры функционирования IGEG устанавливаются путем определения их значений в файлах дистрибутива конфигурации развертывания компонента DDIS:

  • минимальная конфигурация аппаратного обеспечения среды контейнеризации для istio-proxy устанавливается в файле \conf\config\parameters\ddis.istio.all.conf;

  • настройки istio-proxy задаются в файлах \conf\k8s\base\istio\config\egress\*.yaml, \conf\config\parameters\ddis.istio.all.conf. Файл ddis.istio.all.conf, в том числе, содержит путь к API контрольной панели (задается в параметре ddis.istio.istiod_service);

  • настройки Ingress gateway задаются в файле \conf\k8s\base\istio\deployments\ingress\dc-ingress.yaml (для среды контейнеризации K8S). В файле, в том числе, указан путь к используемому образу контейнера istio-proxy;

  • настройки Egress gateway задаются в файле \conf\k8s\base\istio\deployments\egress\dc-egress.yaml (для среды контейнеризации K8S). В файле, в том числе, указан путь к используемому образу контейнера istio-proxy;

  • настройки информационного обмена между смежными АС и Ingress gateway задаются в файлах \conf\k8s\base\istio\deployments\ingress\route-ingress.yaml\ (для среды контейнеризации K8S), \conf\k8s\base\istio\deployments\ingress\*.yaml;

  • настройки информационного обмена между Ingress gateway и прикладными контейнерами компонента DDIS задаются в файлах \conf\k8s\base\istio\config\ingress\*.yaml;

  • настройки информационного обмена между прикладными контейнерами компонента DDIS, смежными АС и Egress gateway задаются в файлах \conf\k8s\base\istio\config\egress\*.yaml.

Добавление файлов настроек и манифестов, необходимых для развертывания в пространстве имен (namespace) DDIS ingress/egress, обеспечивает расширение (extension) injectIstio, описанное в файле pipeline.yml дистрибутива конфигурации развертывания DDIS:

      extensions:
        - name: injectIstio
          branch: refs/tags/1.14.26
          arguments:
            templatesRepo: sre/istio-templates.git
            templatesBranch: refs/tags/_FS-4.6.3-1.0.39
            overrideParameters:
              "ddis.ose.istio.egress.tls-list.cloud-s3.vs.spec.http.timeout": 50s

Параметры функционирования компонента Сервисный прокси (SVPX) продукта Platform V Synapse Service Mesh (SSM) в составе компонента DDIS#

Компонент Cервисный прокси (SVPX) добавляется в каждый прикладной pod компонента DDIS в виде sidecar-контейнера istio-proxy. Istio-proxy используется для маршрутизации трафика между приложениями. Рекомендованный образ sidecar-контейнера istio-proxy приведен в разделе Состав дистрибутива настоящего Руководства по установке.

Минимальная конфигурация аппаратного обеспечения среды контейнеризации для sidecar-контейнера istio-proxy устанавливается в файлах \conf\config\parameters\ddis.iation.all.conf дистрибутива конфигурации развертывания компонента DDIS.

Для запуска приложений компонента DDIS c sidecar-контейнерами istio-proxy в файлах \conf\k8s\base\ddis-*\deploy.yaml (для среды контейнеризации K8S) дистрибутива конфигурации развертывания компонента DDIS добавлена аннотация sidecar.istio.io.

Параметры интеграции с компонентом One-Time Password (OTP) / OTT (OTTS) продукта Platform V Frontend Std (#FS)#

В части аутентификации и авторизации межсервисных взаимодействий компонент DDIS может быть интегрирован с компонентом One-Time Password/Token (OTTS). Для включения информационного обмена с OTTS в файле openShift.conf репозитория Сommon параметр global.ott.ose_deploy должен быть установлен в true.

OTTS предоставляет средства для удостоверения субъекта доступа и разграничения доступа к API компонента DDIS на транспортном уровне, а также контроля целостности получаемого сообщения. Согласно требованиям безопасности с помощью OTTS необходимо защищать взаимодействия, выходящие за границы пространства имен (namespace).

Для интеграции с компонентом One-Time Password (OTP) / OTT (OTTS) используются sidecar-приложения ott-sidecar, которые размещаются в подах шлюзов Ingress и Egress компонента DDIS. Рекомендованный образ sidecar-контейнера ott-sidecar приведен в разделе Состав дистрибутива настоящего Руководства по установке.

Взаимодействие с OTTS должно осуществляться с использованием шифрованного протокола обмена.

Параметры интеграции с OTTS устанавливаются путем определения их значений в файлах дистрибутива конфигурации развертывания компонента DDIS:

  • минимальная конфигурация аппаратного обеспечения среды контейнеризации для ott-sidecar устанавливается в файле \conf\config\parameters\ddis-sidecar-ott.all.conf;

  • настройки подключения ott-sidecar к pods шлюзов Ingress и Egress задаются в файлах \conf\k8s\base\istio\deployments\egress\ott-*.yaml, \conf\k8s\base\istio\deployments\ingress\ott-*.yaml (для среды контейнеризации K8S). В файлах, в том числе, указан путь к используемому образу ott-sidecar;

  • настройки ott-sidecar задаются в файлах \conf\config\parameters\ddis-sidecar-ott.all.conf, \conf\config\parameters\ddis.istio.all.conf.

Добавление файлов настроек и манифестов, необходимых для развертывания в пространстве имен (namespace) DDIS ott-sidecar, обеспечивает расширение (extension) injectIstio, описанное в файле pipeline.yml дистрибутива конфигурации развертывания DDIS:

      extensions:
        - name: injectIstio
          branch: refs/tags/1.14.26
          arguments:
            templatesRepo: sre/istio-templates.git
            templatesBranch: refs/tags/_FS-4.6.3-1.0.39
            overrideParameters:
              "ddis.ose.istio.egress.tls-list.cloud-s3.vs.spec.http.timeout": 50s

Параметры интеграции с компонентом Стартовый менеджер (SMGX) продукта Platform V Frontend Std (#FS)#

В состав дистрибутива конфигурации развертывания компонента DDIS включены файлы, предназначенные для публикации в компоненте Стартовый менеджер (SMGX).

Компонент Стартовый менеджер (SMGX) — это технологический сервис, который является унифицированной точкой доступа к функциям фронтальной части компонентов, реализованных на Platform V. SMGX агрегирует в себе АРМ интегрированных с ним компонентов.

Компонент DDIS встраивается в SMGX в виде операции.

Операция описывается JSON-файле ddis_amw.json, который включен в дистрибутив конфигурации развертывания компонента DDIS. Файл размещается в каталоге distr_content/data/smgx_amw/templates.

При установке компонента DDIS средствами Deploy tools (CDJE), импорт конфигурационных файлов в SMGX выполняется при запуске сценария (playbook) IMPORT_SMGX_AMW_PARAMS (входит в состав сценария IMPORT_ALL_PARAMS).

Для получения доступа к созданной в SMGX операции компонента DDIS учетной записи пользователя должны быть сопоставлены привилегия, заданная в параметре permission json-файла с описанием операции, и стандартные привилегии SMGX.

Необходимые привилегии включены в рекомендованную модель авторизации компонента DDIS.

Параметры интеграции с компонентом Внутренний шлюз ЕФС (IAGW) продукта Platform V Frontend Std (#FS)#

Внутренний шлюз ЕФС (IAGW) предназначен для управления трафиком между различными компонентами Platform V. При наличии в среде функционирования компонента шлюза IAGW, HTTP-запросы к конкретному программному интерфейсу сначала отправляются на шлюз, далее шлюз осуществляет маршрутизацию и балансировку запросов по серверам, на которых развернут компонент.

В состав дистрибутива конфигурации развертывания компонента DDIS включены файлы, предназначенные для публикации в IAGW. Файлы находятся в каталогах \conf\global, \conf\global\iag дистрибутива.

Файлы предназначены для импорта в IAGW средствами Deploy tools (CDJE). Импорт в IAGW выполняется при запуске playbook NGINX__DEPLOY. Значение определяет тип шлюза, на котором необходимо разместить файлы:

  • II — IAG_II;

  • без указания — IAG_UI.

Параметры интеграции с компонентом Журналирование (LOGA) продукта Platform V Monitor (OPM)#

В части сбора и хранения событий журналирования компонент DDIS может быть интегрирован с компонентом Журналирование (LOGА).

Для интеграции компонента DDIS с LOGA используется sidecar-приложение ulogger-sidecar.

Fluent-bit-sidecar вычитывает события из лог-файлов, формируемых прикладными и sidecar-приложениями, шлюзами Ingress gateway и Egress gateway, и передает их в один или несколько удаленных компонентов журналирования для дальнейшей обработки, используя topic (Kafka).

Fluent-bit-sidecar не входит в поставку компонента DDIS. Добавление файлов настроек и манифестов, необходимых для развертывания в пространстве имен (namespace) DDIS ulogger-sidecar, обеспечивает расширение (extension) injectUloggerSidecar, описанное в файле pipeline.yml дистрибутива конфигурации развертывания DDIS:

    - name: injectUloggerSidecar
      branch: refs/tags/1.14.26
      arguments:
        fpName: 'ddis'
        kafka:
          loge:
            internalHost: "ddis-loge-egress-kafka-svc-{{distrib.release.version}}"
            internalPort: "19092"
          loga:
            internalHost: "ddis-loga-egress-kafka-svc-{{distrib.release.version}}"
            internalPort: "19093"
          logsys:
            internalHost: "ddis-logsys-egress-kafka-svc-{{distrib.release.version}}"
            internalPort: "19094"
        overrideParameters:
          "ufs-extensions.ulogger.sidecar.logging.subsystem": DDIS
          "ufs-extensions.ulogger.sidecar.pvm.kafka.ssl.clientCertificate": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.pvm.kafka.ssl.clientCertificate') }}"
          "ufs-extensions.ulogger.sidecar.pvm.kafka.ssl.key": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.pvm.kafka.ssl.key') }}"
          "ufs-extensions.ulogger.sidecar.secman.kv.storage.path.rootCertificate": "{{ lookup('custom_vars','ddis.vault.hashicorp.com.uloggerRootCertsPath') }}"
          "ufs-extensions.ulogger.sidecar.secman.kv.storage.data.rootCertificate": index .Data "truststore_pem"
          "ufs-extensions.ulogger.sidecar.logging.file.path": "{{ lookup('custom_vars', 'ddis.platform.logm.file.json.filePath') }}"
          "ufs-extensions.ulogger.sidecar.service.logging.file.name": '*.json'       
          "ufs-extensions.ulogger.sidecar.istio.logging.logrotate_conf_path": /var/log/audit/logrotate.conf
          "ufs-extensions.ulogger.sidecar.istio.logging.logrotate_status_path": /var/log/audit/logrotate.status
          "ufs-extensions.ulogger.sidecar.istio.logging.logrotate_olddir_path": /var/log/audit/istio
          "ufs-extensions.ulogger.vault.kafka.tls.caCertificates": "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.root.crt') }}"
          "ufs-extensions.ulogger.vault.kafka.tls.clientCertificate": "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.tls.crt') }}"
          "ufs-extensions.ulogger.vault.kafka.tls.privateKey": "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.tls.key') }}"
          "ufs-extensions.ulogger.hashicorp.enabled": "true"
          "ufs-extensions.ulogger.sidecar.securityContext.runAsUser": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.securityContext.runAsUser', default='1337') }}"
          "ufs-extensions.ulogger.sidecar.securityContext.runAsGroup": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.securityContext.runAsGroup', default='1337') }}"
          "ufs-extensions.ulogger.sidecar.securityContext.fsGroup": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.securityContext.fsGroup', default='1337') }}"
          "ufs-extensions.ulogger.ott.sidecar.env.java_tool_options": -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -Dlogging.config=/mnt/ott-logback/logback.xml -Dlogback.configurationFile=/mnt/ott-logback/logback.xml
          "ufs-extensions.ulogger.ose.istio.envoy.logging.level": "{{ lookup('custom_vars', 'ddis.ulogger.sidecar.logging.level') }}"
          "ufs-extensions.ulogger.ose.istio.ott.logging.level": error

Параметры интеграции с компонентом Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (OPM)#

В части сбора и хранения данных о производительности, доступности и работоспособности компонент MONA может быть интегрирован с компонентом Объединенный мониторинг Unimon (MONA).

MONA обеспечивает сбор прикладных, инфраструктурных метрик и метрик биллинга по стандарту мониторинга Prometheus. В процессе сбора MONA обогащает метрики дополнительными служебными данными и сохраняет их в свое хранилище.

Параметры интеграции с MONA устанавливаются путем определения их значений в файле \conf\config\parameters\ddis.all.conf дистрибутива конфигурации развертывания компонента DDIS:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.all.conf

ufs-monitoring.micrometer.endpoint.enabled

Включение/отключение отправки метрик в буфер для предоставления их для вычитки клиентскими приложениями MONA либо для дальнейшей их публикации в Prometheus средствами компонента, рекомендованное значение — , значение переменной устанавливается в файле репозитория Сommon;
если ufs-monitoring.micrometer.endpoint.enabled = true, то ufs-monitoring.kafka.enabled должен быть установлен в false и должно быть определено значение для global.platform.monm.micrometer.clear.buf.enabled

ufs-monitoring.clear.micrometer.buf.enabled

Включение/отключение обнуления значений метрик после их сбора клиентскими приложениями MONA, рекомендованное значение — , значение переменной устанавливается в файле репозитория Сommon

ufs-monitoring.micrometer.push.enabled

Включение/отключение публикации метрик в Prometheus методом PUSH, рекомендованное значение — false

ufs-monitoring.metrics.micrometer.publish.idle

Включение/отключение отправки событий мониторинга в micrometer (при значении true отправки не будет), рекомендованное значение — false

При определении параметров интеграции с MONA используются переменные, значения которых устанавливаются в файлах репозитория Сommon:

Переменная репозитория Сommon

Параметр дистрибутива

Описание

global.platform.monm.micrometer.endpoint.enabled

ufs-monitoring.micrometer.endpoint.enabled

Включение/отключение отправки метрик в буфер для предоставления их для вычитки клиентскими приложениями MONA либо для дальнейшей их публикации в Prometheus средствами компонента, рекомендованное значение — true, значение указывается в _global.resources.conf

global.platform.monm.micrometer.clear.buf.enabled

ufs-monitoring.clear.micrometer.buf.enabled

Включение/отключение обнуления значений метрик после их сбора клиентскими приложениями MONA, рекомендованное значение — true, значение указывается в _global.resources.conf

Передача метрик биллинга реализуется средствами компонента DDIS путем выставления HTTP запросов, которые предоставляют метрики биллинга в формате Prometheus, что позволяет настроить их сбор средствами клиентских приложений MONA.

Порты для доступа к интерфейсам для сбора метрик устанавливаются в файлах \conf\k8s\base\ddis-*\deploy.yaml (для среды контейнеризации K8S) дистрибутива конфигурации развертывания компонента DDIS.

Сбор метрик и публикацию их в хранилище обеспечивают клиентские приложения MONA:

  • Unimon-agent — для сбора метрик;

  • Unimon-sender — для отправки метрик в хранилище, которые рекомендуется размещать в пространстве имен (namespace) каждого из интегрированных с MONA компонентов.

При отправке метрик в хранилище клиентские приложения MONA используют topic (Kafka). Рекомендованная стандартная частота сбора метрик клиентским приложением мониторинга — 15 секунд (задается в клиентском приложении MONA).

Клиентские приложения MONA не входят в поставку компонента DDIS. Добавление файлов настроек и манифестов, необходимых для развертывания в пространстве имен (namespace) DDIS pods с клиентскими приложениями MONA обеспечивает расширение (extension), описанное в файле pipeline.yml дистрибутива конфигурации развертывания DDIS:

    - name: injectUnimon
      branch: refs/tags/1.14.26
      arguments:
        fpName: 'ddis'
        componentCode: 'ddis'
        injectAppScrapSvc: false
        overrideParameters:
          fluent-bit.prometheus.io.port: 8083
        kafka:
          loga:
            internalHost: "ddis-loga-egress-kafka-svc-{{distrib.release.version}}"
            internalPort: "19093"
          monsys:
            internalHost: "ddis-monsys-egress-kafka-svc-{{distrib.release.version}}"
            internalPort: "19095"
        services:
          - deployment: istio/deployments/egress
            service: ott-sidecar
            labels:
              app: '{{ lookup("custom_vars", "agent.ose.istio.all.common.egressAppSelector") }}'
              istio: '{{ lookup("custom_vars", "agent.ose.istio.all.common.egressIstioSelector") }}'
            path: /monitoring/prometheus
            port: '{{ lookup("custom_vars", "ddis.istio.deployment.spec.template.spec.containers.ott.readinessProbe.port", default="") }}'
          - deployment: istio/deployments/ingress
            service: ott-sidecar
            labels:
              app: '{{ lookup("custom_vars", "agent.ose.istio.all.common.ingressAppSelector") }}'
              istio: '{{ lookup("custom_vars", "agent.ose.istio.all.common.ingressIstioSelector") }}'
            path: /monitoring/prometheus
            port: '{{ lookup("custom_vars", "ddis.istio.deployment.spec.template.spec.containers.ott.readinessProbe.port", default="") }}'

Параметры интеграции с компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD)#

В части сбора и хранения событий информационной безопасности компонент DDIS может быть интегрирован с компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD).

AUDT обеспечивает сбор и долгосрочное хранение событий информационной безопасности с доступом к их просмотру.

Параметры интеграции с AUDT устанавливаются в файлах дистрибутива конфигурации развертывания компонента DDIS:

  • настройки, общие для всех прикладных приложений компонента DDIS, задаются в файле \conf\config\parameters\ddis.all.conf;

  • настройки каждого из прикладных приложений DDIS задаются в файлах \conf\config\parameters\ddis.gate-tfs.all.conf,\conf\config\parameters\ddis.controller.all.conf;

  • настройки AUDT задаются в файлах \conf\k8s\base\data-dictionary-*\configmaps\cm-ddis-km-audm.yaml.

Параметры интеграции с AUDT:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.all.conf

ufs-audit-client-useQuota

Использование квотирования запросов, рекомендованное значение — false

union-audit.circuit-breaker.mode

Режим работы главного балансировщика запросов, рекомендованное значение —

audit.ufs.client_module.context.error_total_size_threshold

Параметры для настройки квотирования — пороговое значение для общего размера сообщений уровня WARN в TPS, рекомендованное значение — 0

audit.ufs.client_module.context.error_count_threshold

Параметры для настройки квотирования — пороговое значение для количества сообщений уровня ERROR в TPS, рекомендованное значение — 0

audit.ufs.client_module.context.warn_count_threshold

Параметры для настройки квотирования — пороговое значение для количества сообщений уровня WARN в TPS, рекомендованное значение — 0

audit.ufs.client_module.context.warn_total_size_threshold

Параметры для настройки квотирования — пороговое значение для общего размера сообщений уровня WARN в TPS, рекомендованное значение — 0

audit.ufs.client_module.context.quota_escalation_period

Параметры для настройки квотирования — время эскалации с уровня WARN до уровня ERROR в секундах, рекомендованное значение — 0

audit.ufs.client_module.context.max_async_send_tasks

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

ddis.ufs.platform.environment.request.sudirIpHeader

Параметр названия Header, из которого добывается значение IP-адреса, рекомендованное значение — iv-remote-address

ddis.gate-tfs.all.conf

ddis.gateway.union-audit.sourceSystem

Код АС, в состав которой интегрируется компонент, рекомендуемое значение —

ddis.gateway.union-audit.CImodule

Идентификатор компонента ddis-gate-tfs , рекомендуемое значение — _ddis-gate-tfs

ddis.controller.all.conf

ddis.controller.union-audit.sourceSystem

Код АС, в состав которой интегрируется компонент, рекомендуемое значение —

ddis.controller.union-audit.CImodule

Идентификатор компонента ddis-controller, рекомендуемое значение — _ddis-controller

ddis.facade.all.conf

ddis.facade.union-audit.sourceSystem

Код АС, в состав которой интегрируется компонент, рекомендуемое значение —

ddis.facade.union-audit.CImodule

Идентификатор компонента ddis-facade, рекомендуемое значение — _ddis-facade

ddis-sidecar-ott.all.conf

ott-sidecar-ufs.union-audit.sourceSystem

Код АС, в состав которой интегрируется компонент, рекомендуемое значение —

ott-sidecar-ufs.union-audit.CImodule

Идентификатор компонента ott-sidecar-ufs, рекомендуемое значение — _ott-sidecar-ufs

При определении параметров интеграции с AUDT используются переменные, значения которых устанавливаются в файлах репозитория Сommon:

Переменная репозитория Сommon

Параметр дистрибутива

Описание

global.platform.union_audit.circuit_breaker.mode

union-audit.circuit-breaker.mode

Режим работы главного балансировщика запросов, возможные значения: DUP — отправка осуществляется во все группы балансировки, сообщения дублируются, STD — отправка осуществляется в главную группу балансировки, которая устанавливается параметром union-audit.balance_group.<условное обозначение группы балансировки>.main = true; рекомендованное значение — DUP, значение указывается в _global.kafka.conf

Добавление файлов настроек и манифестов, необходимых для подключения к topic (Kafka) обеспечивает расширение (extension) injectAuditKafka, описанное в файле pipeline.yml дистрибутива конфигурации развертывания DDIS:

    - name: injectAuditKafka
      branch: refs/tags/1.14.26
      arguments:
        fpName: 'ddis'
        componentCode: 'ddis'
        manifestPostfix: "union-audit"
        startPort: "19193"
        clientCertificate: "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.tls.crt') }}"
        privateKey: "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.tls.key') }}"
        caCertificates: "{{ lookup('custom_vars', 'ddis.istio.egress.certificates.path.root.crt') }}"

Параметры интеграции с компонентом IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)#

При организации информационного обмена с компонентом AUTH на стороне AUTH должен быть настроен маршрут проксирования запросов (junction) к АРМ Администратора компонента DDIS. Пример конфигурации:

- junctionName: "DDIS (Сервис Интеграции Данных Справочников)"                       -- заголовок маршрута проксирования, описание проксируемого компонента для отображения ссылки
  junctionPoint: /ddis                                                               -- корневой каталог пути после хоста, который разделяет различные маршруты в URL

  serverAddresses: [ "хост:порт" ]                                                   -- адрес сервера, на который будет происходить проксирование
  applyJctRequestFilter: "common/rds-set-header-host-to-backend.location.conf"       -- фильтр, который будет применяться ко всем запросам к компоненту:
                                                                                        -- переопределение заголовка host в сторону backend с указанием первого сервера из Pool балансировки
                                                                                        -- (необходимо использовать при проксировании в сторону Kubernetes/Platform V DropApp)
  https: true                                                                        -- использование HTTPS/SSL
  indexUrl: /ddis                                                                        -- адрес главной страницы проксируемого компонента, URL относительно корневого каталога пути после хоста, по которому будет осуществляться вход в АРМ
  sslCommonName: '*'                                                                 -- шаблон имени из CN сертификата сервера, значение должно быть указано в SAN сертификата шлюза Ingress
  transparent: false                                                                 -- прозрачность URL, если параметр установлен в true, то при проксировании запросы будут проходить без изменения URL

Параметры интеграции с AUTH устанавливаются путем определения их значений в файлах дистрибутива конфигурации развертывания компонента DDIS:

  • настройки интеграции c AUTH задаются в файле \conf\config\parameters\ddis.facade.all.conf;

  • начальные настройки AUTH задаются в файле \conf\k8s\base\data-dictionary-manage\ddis-facade\cm-ddis-facade-pacman-conf.yaml;

Параметры интеграции с AUTH:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.facade.all.conf

ddis.facade.env.auth.providers.configuration.profile

Профиль, используемый при аутентификации пользователей, рекомендованное значение в зависимости от конфигурации развертывания DDIS: #FS — AUTH_IAM (фильтр аутентификации IamTokenAuthenticatorProvider)

ddis.facade.env.iam.auth.publickey.locations

Путь к открытому ключу провайдера аутентификации, рекомендованное значение — global.platform.iam.auth.publickey.locations, значения переменных устанавливаются в файлах репозитория Сommon

ddis.facade.env.iam.auth.roles.path

Пути, где будут находиться роли пользователя, рекомендованное значение — global.platform.iam.auth.roles.path, значения переменных устанавливаются в файлах репозитория Сommon

ddis.facade.env.iam.auth.audience

Token Audience. Если значение пустое, валидация по Audience не выполняется, рекомендованное значение — global.platform.iam.auth.audience, значения переменных устанавливаются в файлах репозитория Сommon

Параметры интеграции с компонентом Объединенный сервис авторизации (ОСА) (AUTZ) продукта Platform V IAM SE (IAM)#

Параметры интеграции с AUTZ устанавливаются путем определения их значений в файлах дистрибутива конфигурации развертывания компонента DDIS:

  • настройки интеграции c AUTZ задаются в файле \conf\config\parameters\dictionary.all.conf;

  • начальные настройки AUTZ задаются в файле \conf\k8s\base\data-dictionary-manage\configmaps\data-dictionary-manage-config-cm.yaml;

  • целевые настройки AUTZ задаются в файле \conf\data\sup2\definitions\data-dictionary-manage.json (в общем случае целевые значения настроек совпадают с начальными).

Параметры интеграции с AUTZ:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.facade.all.conf

ddis.facade.env.auth_enabled

Признак включения авторизации

ddis.facade.env.ufs.baseurl.authorization

Путь к сервису авторизации AUTZ, рекомендованное значение — global.platform.sgw.route.session.host, значение переменной устанавливается в файле репозитория Сommon

ddis.platform.iam.logout.url

Путь перенаправления при нажатии кнопки выхода, рекомендованное значение — global.platform.iam.logout.url, значение переменной устанавливается в файле репозитория Сommon

При определении параметров интеграции с AUTZ используются переменные, значения которых устанавливаются в файлах репозитория Сommon:

Переменная репозитория Сommon

Параметр дистрибутива

Описание

global.ose.platform.ufs.baseurl.security

ufs.baseUrl.AUTHORIZATION

Путь до сервиса авторизации AUTZ в среде контейнеризации, значение указывается в _global.resources.conf

Модель авторизации АРМ Администратора компонента DDIS содержится в файле \conf\data\security\ddis-security-data.xml и справочник компонента OCA по пути \conf\data\security_dictionaries\dictionariesTask.xml дистрибутива конфигурации развертывания.

Файлы из каталога \conf\data\security\ и \conf\data\security_dictionaries\ предназначены для импорта в AUTZ средствами Deploy tools (CDJE). Импорт выполняется при запуске сценария (playbook) IMPORT_SECURITY_PARAMS (входит в состав сценария IMPORT_ALL_PARAMS).

Параметры интеграции с компонентом Управление политиками (POLM) продукта Platform V Synapse Service Mesh (SSM)#

Компонент Управление политиками (POLM) продукта Platform V Synapse Service Mesh (SSM) предназначен для автоматизированной рассылки конфигураций политик управления трафиком, политик безопасности и прочих управляющих команд для компонентов IGEG и SVPX.

Параметры интеграции с POLM устанавливаются путем определения их значений в файле \conf\config\parameters\ddis.istio.all.conf дистрибутива конфигурации развертывания компонента DDIS:

Файл дистрибутива

Параметр дистрибутива

Описание

ddis.istio.all.conf

ddis.istio.istio-control-plane-project

Наименования проекта Control plane, рекомендованное значение — global.multiClusters.openshiftControlPlaneProject, значение переменной устанавливается в файле репозитория Сommon

ddis.istio.istiod_service

Адрес сервиса istiod Сontrol-plane, рекомендованное значение — global.multiClusters.openshiftControlPlaneIstiodService, значение переменной устанавливается в файле репозитория Сommon

При определении параметров интеграции с POLM используются переменные, значения которых устанавливаются в файлах репозитория Сommon:

Переменная репозитория Сommon

Параметр дистрибутива

Описание

openshiftControlPlaneProject

ddis.istio.istio-control-plane-project

Наименования проекта Control plane, значение указывается в multiClusters.json

openshiftControlPlaneIstiodService

ddis.istio.istiod_service

Адрес сервиса istiod Сontrol-plane, значение указывается в multiClusters.json

Параметры интеграции с компонентом Corax (KFKA) продукта Platform V Corax (KFK)#

Для настройки взаимодействия c KFKA через Egress необходимо дополнить список параметров в переменные:

ddis.ose.istio.egress.tfs.kafka.ssl.enabled=true — создает DestinationRule, которые использует сертификаты с Egress; ddis.ose.istio.egress.tfs.kafka.servers=kafka_host:ip_address:kafka_port:TCP:kafka_port_egress:TCP;kafka_host:ip_address:kafka_port:TCP:kafka_port_egress:TCP.

Расшифровка собирательных значений:

  • kafka_host — хост Node брокера KFKA Corax;

  • ip_address — IP Node брокера KFKA Corax;

  • kafka_port — внешний порт Node брокера KFKA Corax;

  • TCP — внешний протокол Node брокера KFKA Corax;

  • kafka_port_egress — внутренний порт Egress;

  • TCP — внутренний протокол Egress.

Перечень сторонних компонентов, интеграция с которыми необходима для успешного функционирования компонента DDIS, приведен в разделе Платформенные зависимости. О недоступности любого из перечисленных компонентов во время установки компонента DDIS будет сообщено в результатах работы CI/CD по установке компонента DDIS.

Для импорта списка поставщиков/провайдеров в сервис ddis-gate-tfs необходимо заполнить параметры в файле ddis.gate-tfs.all.conf:

  • ddis.gate-tfs.cm.resource.bootstrapConfig= список брокеров для инициализации подключения к KFKA (интеграционная);

  • ddis.gate-tfs.cm.resource.noticeTopic= название топика уведомлений;

  • ddis.gate-tfs.cm.resource.receiptTopic= название топика квитанций.

Параметры интеграции с облачным хранилищем по протоколу S3#

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

ddis.istio.egress.all.s3.servers=<s3_host>:<s3_port>[:<3_internal_port_x>];…, где:

  • s3_host_x — хост облачного хранилища (локального или интеграционного);

  • s3_external_port_x — внешний порт облачного хранилища (локального или интеграционного);

  • s3_internal_port_x — внутренний порт облачного хранилища (локального или интеграционного), рекомендуемое значение «8556».

Предупреждение

Важно!
Для корректных выполнения запросов в хранилище по протоколу S3, перед установкой необходимо проверить порты в маршрутах SSM (внутренний порт в параметре ddis.istio.egress.all.s3.servers) с параметрами:

  • внутренний порт локального хранилища должен совпадать со значением в параметре ddis.settings.s3.internal.port=8556;

  • внутренний порт интеграционного хранилища должен совпадать со значением в параметре ddis.gate-tfs.in.internal.port=8556.

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

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

  • ddis.settings.s3.url=http://хост — базовый URL до локального облачного хранилища по HTTP;

  • ddis.settings.s3.bucket.name — название бакета в локальном облачном хранилище;

  • ddis.settings.s3.signing.region — регион в облачном хранилище S3;

  • ddis.settings.s3.local.connectionTimeout=10000 — timeout соединения с хранилищем файлов S3 в миллисекундах;

  • ddis.settings.s3.local.maxConnections=50 — максимальное количество открытых HTTP-соединений S3 клиента с хранилищем;

  • ddis.settings.s3.local.keepAlive=false — HTTP заголовок keep-alive, удерживать ли соединение S3 клиента с хранилищем открытым;

  • ddis.settings.s3.local.connectionMaxIdleMillis=60000 — максимальное время (в миллисекундах) простоя соединения S3 клиента с хранилищем в пуле;

  • ddis.settings.s3.local.socketTimeout=50000 — время ожидания (в миллисекундах) передачи данных по соединению S3 клиента с хранилищем.

Также в файле /data/sup2/parameters/ddis-gate-tfs.conf необходимо указать параметры (используются через playbook IMPORT_SUP2_PARAMS):

  • ddis.gate-tfs.in.bucketName — название бакета во внешнем облачном хранилище;

  • ddis.settings.s3.bucket.name — название бакета в локальном облачном хранилище;

  • ddis.gate-tfs.in.connectionTimeout=10000 — timeout соединения с хранилищем файлов S3 в миллисекундах;

  • ddis.gate-tfs.in.maxConnections=50 — максимальное количество открытых HTTP-соединений S3 клиента с хранилищем;

  • ddis.gate-tfs.in.keepAlive=false — HTTP заголовок keep-alive, удерживать ли соединение S3 клиента с хранилищем открытым;

  • ddis.gate-tfs.in.connectionMaxIdleMillis=60000 — максимальное время (в миллисекундах) простоя соединения S3 клиента с хранилищем в пуле;

  • ddis.gate-tfs.in.socketTimeout=50000 — время ожидания (в миллисекундах) передачи данных по соединению S3 клиента с хранилищем.

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

  • ddis.s3.chunkEncodingDisabled — параметр отключения разбиения запроса с большим объемом данных на отдельные фрагменты (включение отправки данных одним запросом), значение по умолчанию — true;

  • ddis.s3.payloadSigningEnabled — параметр включения подписи на данных запросов в S3, значение по умолчанию — true.

При интеграции со Scala-R настройка параметров следующая:

  • ddis.s3.chunkEncodingDisabled = true;

  • ddis.s3.payloadSigningEnabled = true.

При интеграции с Ceph настройка параметров следующая:

  • ddis.s3.chunkEncodingDisabled = false;

  • ddis.s3.payloadSigningEnabled = true.

По интеграционному облачному хранилищу параметры (в файле ddis.gate-tfs.all.conf) следующие:

  • ddis.gate-tfs.in.host =http://хост — URL до интеграционного облачного хранилища;

  • ddis.gate-tfs.in.bucketName — название бакета в интеграционном облачном хранилище S3;

  • ddis.gate-tfs.in.signing.region — регион в облачном хранилище S3.

Значения переменных должны храниться в KV-хранилище в секрете ddis.secman.kv.secret.s3-tfs с ключами ddis.files.bucket.in.connection.accessKey и ddis.files.bucket.in.connection.secretKey.

Список провайдеров и их префиксы в хранилище S3 заполняются в параметре ddis.gate-tfs.cm.resource.provider_list списком по правилу <Id Провайдера в DDIS >:<Код Провайдера в DDIS >:<наименование провайдера>:<подпапка для провайдера в бакете>:<код сценария>:<блокирован ли поставщик>;<Id Провайдера в DDIS >:<Код Провайдера в DDIS >:<наименование провайдера>:<подпапка для провайдера в бакете>:<код сценария>:<блокирован ли поставщик>. Например: ddis.gate-tfs.cm.resource.provider_list=1:ARCGIS:ArcGIS:arcgis:arcgis2:Scenario-1:false;3:UNSI:КАП.УНСИ:unsi:unsi2:Scenario-2:false;4:KAKB:КАКБ:kakb:kakb2:Scenario-3:false;5:PCKIB:Продуктовый каталог КИБ:pckib:pckib2:Scenario-4:false;7:PCAP:ПКАП:pcap:pcap2:Scenario-5:false;8:CAS:ЦАС НСИ:cas:cas:Scenario-6:false.

Режим работы стратегии связывания поступившего сообщения с поставщиком, который обрабатывает соответствующий транспортный сценарий, устанавливается параметром ddis.gateway.cm.data.application_provider_messageLinkingStrategy со значением BY_MESSAGE_SCENARIOID. Данное значение в дистрибутиве выставлено по умолчанию.

Для корректной обработки файлов со справочниками в универсальном парсере необходимо заполнить глобальную переменную ddis.transformer.env.transformer_stx_file_to_custom по правилу заполнения <code_provider1_tfs>:<template_stx_file**>;<code_provider2_tfs>:<template_stx_file**>;<code_provider3_tfs>:<template_stx_file**>, где:

  • code_provider1_tfs — соответствует имени поставщика в Шлюзе ТФС;

  • template_stx_file — шаблон для обработки в универсальном парсере, допустимые значения приведены ниже.

Значение епо умолчанию:

ddis.transformer.env.transformer_stx_file_to_custom=SAPEASUP:template-SAPEASUP.stx;ARCGIS:template-CAS.stx;DEPO:template-DEPO.stx;TELECOM:template-TELECOM.stx;UNSI:template-UNSI.stx;KAKB:template-UNSI.stx;PCKIB:template-UNSI.stx;PCAP:template-UNSI.stx;POS:template-CAS.stx;CAS:template-CAS.stx

Список шаблонов в универсальном парсере (ddis-transformer):

  • template-SAPEASUP.stx (описание stx-файлов преобразования template-SAPEASUP.stx);

  • template-CAS.stx (описание stx-файлов преобразования template-CAS.stx);

  • template-DEPO.stx (описание stx-файлов преобразования template-DEPO.stx);

  • template-TELECOM.stx (описание stx-файлов преобразования template-TELECOM.stx);

  • template-UNSI.stx (описание stx-файлов преобразования template-UNSI.stx).

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

global.ddis.settings.transformer.stx_file_to_custom=SAPEASUP:template-SAPEASUP.stx;ARCGIS:template-CAS.stx;DEPO:template-DEPO.stx;TELECOM:template-TELECOM.stx;UNSI:template-UNSI.stx;KAKB:template-UNSI.stx;PCKIB:template-UNSI.stx;PCAP:template-UNSI.stx;POS:template-CAS.stx;CAS:template-CAS.stx;SFS:template-SFS.stx

Параметры интеграции с компонентом Сервис предоставления справочных данных (LNSE) продукта Platform V Dictionaries (SDT)#

Компонент Сервис предоставления справочных данных (LNSE) предназначен для обеспечения работы со справочниками из различных приложений, реализованных на Platform V. DDIS позволяет построить интеграционные сценарии загрузки справочников в LNSE.

Для настройки взаимодействия через egress необходимо дополнить список параметров в переменные (файл ddis.istio.all.conf):

ddis.istio.egress.common.lnse.host — хост от baseUrl сервиса загрузки моделей и данных справочников LNSE через IAG II; global.platform.nlb_ii.port.default — порт IAG II.

Для настройки отправки REST запросов до сервиса загрузки моделей и данных справочников компонента LNSE (файл ddis.all.conf):

ddis.settings.lnse.url — путь к сервису загрузки моделей и данных справочников LNSE. Рекомендованное значение — . Значение переменной устанавливается в файле репозитория Сommon.

Параметры интеграции с компонентом PACMAN (CFGA) продукта Platform V Frontend Std (#FS)#

Начальные настройки DDIS задаются в файле \package\conf\k8s\base\ddis-publish-lnse\cm-ddis-publish-lnse-resources.yaml (для среды контейнеризации K8S).

Файл с целевыми настройками DDIS размещается в каталоге conf\data\sup2 (в общем случае целевые значения параметров совпадают с начальными).

Файлы из каталога conf\data\sup2 предназначены для импорта в компонент CFGA средствами Deploy tools (CDJE). Импорт выполняется при запуске сценария IMPORT_SUP2_PARAMS (входит в состав сценария IMPORT_ALL_PARAMS).

Рекомендации при загрузке конфигурации DDIS#

Для заполнения конфигурации: шлюзы, процессоры, маршруты необходимо после развертывания выполнить импорт ресурсов для ddis-controller один раз. Шаги:

  1. В PACMAN изменить значение параметра ddis.controller.resources.enabled (установить в true).

  2. Выполнить рестарт Pod ddis-controller. в результате успешного запуска будут прогружены: шлюзы, процессоры, маршруты.

  3. Вернуть параметру (PACMAN) ddis.controller.resources.enabled значение false.

Для заполнения/обнволения информации о поставщиках: обновление списка необходимо после развертывания выполнить импорт ресурсов для ddis-gte-tfs. Шаги:

  1. В PACMAN значение параметра ddis.gate-tfs.resource.enabled (значение по умолчанию true) — «Включатель загрузки предварительно подготовленных ресурсов».

  2. В PACMAN значение параметра ddis.gate-tfs.resource.update (значение по умолчанию true) — «Включение обновления ресурсов».

  3. При старте Pod ddis-gte-tfs подгрузит список поставщиков, указанных в переменной ddis.gate-tfs.cm.resource.provider_list.

При добавлении поставщика:

  1. Заполнить корректно список поставщиков через переменную ddis.gate-tfs.cm.resource.provider_list (достаточно только необходимых поставщиков).

  2. Заполнить сопоставление формата и шаблона для преобразования в формат transreference через переменную ddis.transformer.env.transformer_stx_file_to_custom (дополнить список).

  3. Удостовериться, что значение параметра ddis.gate-tfs.resource.enabled = true в PACMAN.

  4. Выполнить переустановку DDIS.

Для включения/выключения функционала очистки облачного хранилища:

  1. При установке дистриубтива значение параметра ddis.gateway.ddis.files.enabled выставить необходимое значение (по умолчанию значение true — функциональность очистки включена).

  2. В PACMAN установить необходимые параметры:

  • ddis.files.bucket.in.clean.name «Очистка хранилищ. Имя папки внешнего хранилища»;

  • ddis.files.bucket.in.clean.ttl «Очистка хранилищ. Время жизни файла (в минутах)»;

  • ddis.files.bucket.in.clean.time «Очистка хранилищ. Крон выражение для запуска job очистки внешнего хранилища»;

  • ddis.files.bucket.in.clean.exclude «Очистка хранилищ. Регулярное выражение для файлов исключений»;

  • ddis.files.bucket.in.clean.enabled «Очистка хранилищ. Параметр для включения очистки внешнего хранилища»;

  • ddis.files.bucket.in.clean.maxcount «Очистка хранилищ. Максимальное количество файлов, удаляемых за одну итерацию»;

  • ddis.files.bucket.local.clean.name «Очистка хранилищ. Имя папки внутреннего хранилища»;

  • ddis.files.bucket.local.clean.ttl «Очистка хранилищ. Время жизни файла (в минутах)»;

  • ddis.files.bucket.local.clean.time «Очистка хранилищ. Крон выражение для запуска job очистки внутреннего хранилища»;

  • ddis.files.bucket.local.clean.exclude «Очистка хранилищ. Регулярное выражение для файлов исключений»;

  • ddis.files.bucket.local.clean.maxcount «Очистка хранилищ. Максимальное количество файлов, удаляемых за одну итерацию»;

  • ddis.files.bucket.local.clean.enabled «Очистка хранилищ. Параметр для включения очистки внутреннего хранилища».

Обновление#

Приложения компонента DDIS являются неверсионируемыми, одновременная работа нескольких версий этих приложений не предполагается. Чтобы избежать ошибок, перед установкой необходимо остановить и удалить неверсионируемые приложения предыдущего релиза. Удалять таблицы БД не требуется. Остановка и удаление неверсионируемых приложений выполняется средствами компонента Deploy tools (CDJE) в процессе установки компонента DDIS.

Скорректировать значение параметра согласно шаблону:

ddis.istio.egress.all.s3.servers=<s3_host>:<s3_port>[:<3_internal_port_x>];…, где:

  • s3_host_x — хост облачного хранилища (локального или интеграционного);

  • s3_external_port_x — внешний порт облачного хранилища (локального или интеграционного);

  • s3_internal_port_x — внутренни порт облачного хранилища (локального или интеграционного), рекомендуемое значение 8556.

Предупреждение

Важно! Для корректного выполнения запросов в хранилище по протоколу S3 перед установкой проверить порты в маршрутах SSM (внутренний порт в параметре ddis.istio.egress.all.s3.servers) с параметрами:

  • внутренний порт локального хранилища должен совпадать со значением в параметре: ddis.settings.s3.internal.port=8556;

  • внутренний порт интеграционного хранилища должен совпадать со значением в параметре: ddis.gate-tfs.in.internal.port=8556.

Предупреждение

Важно! Значение параметра ddis.dictionary.cron.watcher.start должно быть изменено на «0 0/3 * * * ?». Изменить значение параметра можно вручную в UI PACMAN или путем удаления параметра ddis.dictionary.cron.watcher.start перед установкой дистрибутива.

Для обновления компонента DDIS на текущую версию необходимо выполнить его установку в соответствии с разделом Установка настоящего Руководства по установке. Специальной процедуры обновления компонента не предусмотрено.

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

Удаление#

Для удаления компонента DDIS необходимо удалить:

  • все ресурсы компонента DDIS в K8S (выбранных сервисов при установке): ConfigMaps, Deployments, Services, Ingress;

  • ресурсы продукта Platform V Synapse Service Mesh (SSM): deployment, Service, Ingress, ServiceEntry, Gateway, VirtualService, DestinationRules (при установке использовались из дистрибутива);

  • настройки с группы серверов NGINX.

  • базы данных.

Для удаления ресурса подключитесь к Kubernetes/Platform V DropApp через терминал и выполните команду:

kubectl -n <имя namespace> delete <тип компонента Kubernetes/Platform V DropApp> <имя компонента Kubernetes/Platform V DropApp)>

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

DROP SCHEMA <имя схемы> CASCADE; 

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

Для проверки корректности установки:

При установке с помощью DeployTools задание в Jenkins должно завершиться без ошибок. При наличии ошибки нужно смотреть лог и выявлять проблему.

Необходимо убедиться, что в консоли среды контейнеризации в разделе Workloads — Pods все Pods:

  • все приложения находятся в статусе Running;

  • нет pod в статусе Error;

  • в колонке Ready все контейнеры работают: 2/2, 3/3 и т.д.;

  • в колонке Created должны появиться pod с текущей датой установки.

Если Pod содержит ошибку вида CrashLoppBackOff или другую, горящую красным, нужно перейти в логи этого Pod и посмотреть причину ошибки.

Это может быть, например, некорректная ссылка на Docker-образ image, ошибка jdbc-соединения, некорректная модель БД, отсутствие параметра конфигурации, ошибка соединения с AUTZ и т.д. Если Pod нет вовсе, нужно убедиться, что создана конфигурация развертывания (Workloads — Deployments), и в его настройках нажать кнопку Start Rollout.

Затем перейти в раздел Pods и следить за появлением Pods имя модуля, при появлении ошибки перейти в лог в течение минуты (далее Pod самоудаляется) и, скопировав сообщение из лога, проанализировать ошибку.

Если Pods работают, нужно посмотреть логи pod соответствующего компонента на наличие сообщений об ошибках.

Успехом развертывания является то, что все сервисы запущены (поднялись все pods). В случае, если не хватает какой-либо смежной системы, pods начнут писать внутри себя логи, либо перезагружаться, указывая на ошибку. Если такого поведения в процессе не наблюдается, то установка выполнена успешно.

Проверить логи наката скриптов миграции LiquiBase. В результате наката скриптов на каждую БД лог закачивается сообщением: Liquibase: Update has been successful.

В том числе для проверки работоспособности web-интерфейса продукта:

  • успешно войти в АРМ продукта под пользователем, которому назначена определенная роль.

  • перейти по всем разделам сайдбара продукта и убедиться, что при переходе отсутствуют ошибки. Результат — открываются формы в рамках роли.

Для проверки работоспособности компонента MONA следует обратиться к документации на данный компонент.

Чек-лист проверки работоспособности интеграций#

Компонент AUDT

В лог-файлах есть сообщение об успешной отправке метамодели и событий аудита.

Компонент KFKA

В лог-файлах сервиса ddis-gate-tfs отсутствуют ошибки при прочтении сообщений в KFKA. Сервис ddis-gate-tfs обращается к KFKA каждые 5 секунд. Пример ошибок, которых быть не должно:

2001-01-01 01:01:01,305 [Thread-1-C-1] [WARN] (org.apache.kafka.clients.NetworkClient) [org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater::handleServerDisconnect:1063] mdc:()| [Consumer clientId=consumer-distribution-gateway-1, groupId=distribution-gateway] Bootstrap broker 00.00.000.000:0000 (id: -1 rack: null) disconnected

2001-01-01 01:01:01,407 [Thread-1-C-1] [INFO] (org.apache.kafka.clients.NetworkClient) [org.apache.kafka.clients.NetworkClient::handleDisconnections:935] mdc:()| [Consumer clientId=consumer-distribution-gateway-1, groupId=distribution-gateway] Node -1 disconnected

Компоненты LOGA

В лог-файлах контейнера ulogger-sidecar отсутствуют ошибки при подключении к topic компонента LOGA.

 [error] [output:kafka:kafka.0] fluent-bit#producer-1: [thrd:app]: fluent-bit#producer-1: host1:0/bootstrap: Failed to resolve 'host1:0': Name or service not known (after 13ms in state CONNECT)
 [error] [output:kafka:kafka.0] fluent-bit#producer-1: [thrd:app]: fluent-bit#producer-1: host2:0/bootstrap: Failed to resolve 'host2:0': Name or service not known (after 2ms in state CONNECT, 1 identical error(s) suppressed)

Компонент LNSE

В лог-файлах сервиса ddis-publish-lnse отсутствуют ошибки при выполнении запросов на endpoint к компоненту. Проверить логи Egress на наличии статуса 200 при отправке.

"GET /data-dictionary-load/v8/rn/DEFAULT_TENANT/dictionary/test9417?requestId=00000000-0000-0000-0000-000000000000 HTTP/1.1" 200 - "-" "-" 0 17830 34 22 "-" "Java-SDK" "00000000-0000-0000-0000-000000000000" 
"GET /data-dictionary-load/v8/rn/DEFAULT_TENANT/dictionary/test9417/structures?requestId=00000000-0000-0000-0000-000000000000 HTTP/1.1" 200 - "-" "-" 0 17829 17 17 "-" "Java-SDK" "00000000-0000-0000-0000-000000000000"

Проверить лог-файлы Egress на наличии статуса 200 при отправке.

[2001-01-01T08:39:05.805Z] "POST /mdc-api/distribution HTTP/1.1" 200 - "-" "-" 1182 1314 615 554 "000.000.000.0" "Java/11.0.4" "00000000-0000-0000-0000-000000000000" "nsix.apps.stands-vdc01.solution.domain" "00.00.0.00:000" outbound|443||nsix.apps.stands-vdc01.solution.domain 000.000.000.000:00000 000.000.000.000:0000 000.000.000.0:00000 - -

Компоненты AUTH, AUTZ

Рекомендуется:

  • ввести в адресной строке браузера URL АРМ компонента IAM Proxy (AUTH) продукта Platform V IAM SE (IAM);

  • указать идентификационную и аутентификационную информацию пользователя с ролью Администратора и подтвердить вход;

  • средствами AUTH перейти в UI DDIS;

  • средствами UI DDIS проверить доступную роль пользователя и отобразить соответствующую экранную форму.

Если в браузере отобразилась экранная форма UI DDIS со списком распространений, то проверка выполнена успешно.

Компонент MONA

Метрики DDIS появляются в сервисе мониторинга.

Компонент PSQL

В случае недоступности БД запуск новых экземпляров приложений компонента DDIS невозможен. Если pods компонента DDIS запустились (находятся в статусе Running), то проверка выполнена успешно. О недоступности данного компонента будет сообщено в результатах работы CI/CD во время установки компонента DDIS.

Компонент CDJE

Интеграция с CDJE не проверяется.

Компонент IAGW

Проверкой работоспособности интеграции с IAGW является доступность АРМ. В случае ошибок интеграции с IAGW АРМ не будет доступен.

SecMan

Если в качестве инструмента доставки секретов в среду функционирования компонента DDIS выбран SecMan, то в случае недоступности SecMan запуск новых экземпляров приложений компонента DDIS невозможен. Если pods компонента DDIS запустились (находятся в статусе Running), то проверка работоспособности интеграции с SecMan выполнена успешно.

Компонент SMGX

Проверка работоспособности интеграции с SMGX включает следующие действия: * ввести в адресной строке браузера URL АРМ компонента SMGX; * указать идентификационную и аутентификационную информацию пользователя с ролью системного администратора АРМ DDIS и подтвердить вход; * средствами АРМ SMGX перейти в АРМ DDIS.

Если в браузере отобразилась экранная форма АРМ DDIS, то проверка выполнена успешно.

Хранилище S3

Интеграция с S3 не проверяется.

Компонент CFGA

Посмотреть в логах cidecar istio-proxy в каждом pod с сервисом наличие строк с /paramsv2/5.0/configuration.

codeName 2025-03-20T15:53:19.417Z] "POST /paramsv2/5.0/configuration/get HTTP/1.1" 200 - via_upstream - "-" 95 187 33 33 "-" "okhttp/4.9.3" "4e805778-7dfa-95a1-9f47-1fa07555dbe4" "<host swg config>:7070" "<IP pod>:7070" outbound|7070||ddis-svc-egress-unver.<namespace>.svc.cluster.local ...- -

При успешном выполнении в строке содержится код 200.

Компоненты POLM, IGEG и SVPX

  1. Убедитесь, что pod ddis-ingress и ddis-egress находятся в статусе Running:

    kubectl get pod <имя pod> --namespace=<имя пространства имен>
    
  2. Если pod запущены, проверьте их лог-сообщения на наличие ошибок:

    kubectl logs -f <имя pod> --namespace=<имя пространства имен>
    

Если pod запущены и не содержат ошибок, то проверка выполнена успешно.

Компонент OTTS

При ошибках интеграции с OTTS сервис не запустится.

Если сервис запущен и pod находятся в статусе Running, проверка интеграции считается автоматически пройденной.

Откат#

При установке дистрибутива компонента DDIS необходимо вручную в административном интерфейсе компонента PACMAN (CFGA) удалить параметры, значения которых были изменены.

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

Для отката версии компонента DDIS необходимо установить его предыдущую версию в соответствии c поставляемой инструкцией по установке (документ «Руководство по установке»).

Откат БД#

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

Отдельной процедуры отката БД не предусмотрено. Откат версии БД выполняется в процессе отката к предыдущей версии DDIS.

Обратная совместимость#

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

Обратная совместимость API гарантирована только для предыдущей версии компонента DDIS.

При откате необходимо убедиться, что Платформенные компоненты, интеграция с которыми обязательна, также поддерживают обратную совместимость с предыдущей версией DDIS. Обеспечение обратной совместимости в этом случае является ответственностью платформенных компонентов. В случае, если обратная совместимость на стороне компонентов, интеграция с которыми обязательна, не поддерживается, необходимо также выполнить откат этих компонентов на предыдущую версию согласно их эксплуатационной документации.

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

В данном разделе должны быть собраны наиболее частые проблемы и описаны пути их устранения.

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

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

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

  4. Ошибка отправки логов в компонент MONA. Данная ошибка возникает при отсутствии, либо некорректном содержимом объектов DestinationRule, ServiceEntry, VirtualService с именем egressgateway-*, для устранения необходимо исправить или пересоздать эти объекты.

  5. Ошибка подключения к API. Данная ошибка возникает при отсутствии ServiceEntry egressgateway-*, для устранения необходимо создать ServiceEntry.

  6. Ошибки при накате скриптов в БД:

Ошибка

Причина

Решение

Unexpected error running Liquibase: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "rspit"

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

Проверить корректность пользователя и его пароля в строке запуска LiquiBase.
Параметры: username=<пользователь схемы БД>, password=<пароль пользователя>

Сообщение в логе запуска LiquiBase обновления схемы: Liquibase: Validation Failed: change set check sum ./develop- 0.0 .xx/changelog.xml::xxxxxxxxxx::XXX was: 7 :4e4a044d318d313352cb6062dabc5597 but is now:  7 :f53333fd21e9980759de5b7743933024
Имена changeset и значения контрольных сумм приведены в качестве примера

Содержимое примененного ранее changeset было изменено. Это может быть сделано намеренно — например, при исправлении ошибок в changeset. Но может сигнализировать о реальной ошибке — например, когда LiquiBase запущен с другими параметрами. Например, имена tablespace или ролей — раньше запускали с Dtablespace_t=rspit_t, а запустили с Dtablespace_t=USERS

1. Убедиться в том, что LiquiBase запущен с теми же параметрами. Поправить параметры и перезапустить. Чаще всего, это tablespace. Смотрим, какие в БД tablespace select * from DBA_TABLESPACES или, например, у конкретных индексов select index_name, tablespace_name from sys.all_indexes where owner = 'CDM' and index_name in ('I_DEALS_T_DEALS_OPERATIONHOBJECTSTATUS_OWNER_ID', 'I_DEALS_T_DEALS_OPERATIONHOBJECTSTATUS_STATUS_ID').
2. Если параметры правильные — обратиться к документации на релиз. Если в ней отмечено, что changeset были намеренно изменены — выполнить команду LiquiBase, в которой все параметры аналогичны тем, что при выполнении обновления схемы, но команда не update, а clearCheckSums. После этого повторить обновление схемы

Сообщение в логе запуска LiquiBase обновления схемы: Liquibase: [liquibase_update] Unexpected error running Liquibase: ORA- 01924 : role  'as_TUZ' not granted or does not exist 11 : 12 : 31 [liquibase_update] [Failed SQL: grant as_TUZ to datamart_appl]
Значения as_TUZ и datamart_appl даны в качестве примера

Роль datamart_appl не существует. Например, была удалена

Проверить наличие роли. Если ее нет — создать. Скрипт создания роли включен в changelog liquibase. Нужно удалить запись таблицы databasechangelog, которая соответствует changeset создания роли: update databasechangelog set author=author//"-del" where author=... and id = ... and filename = ....
Если роль существует — проверить, есть ли эта роль у ТУЗ, под которой запускается LiquiBase select grantee, granted_role, admin_option, default_role from sys.dba_role_privs where grantee = 'EKPIT_NEW' .
Если нет — дать на нее права: grant EKPIT_READ_ROLE to EKPIT_NEW with admin option.
Повторить обновление схемы

Сообщение в логе запуска LiquiBase обновления схемы: Liquibase: SEVERE 31.01 . 19 9 : 34 : LiquiBase: changelog.xml: ./develop- 0.0 . 82 /changelog.xml:: 1545846217157 -260 ::CDM: Change Set ./develop- 0.0 . 82 /changelog.xml:: 1545846217157 - 260 ::CDM failed. Error: ORA- 01430 : добавляемый столбец уже существует в таблице [Failed SQL: ALTER TABLE rspit.domain ADD CHGCNT NUMBER( 19 , 0)]
Варианты ошибок: «таблица уже существует», «индекс уже существует», «имя уже использовано»

Изменения в схему были внесены без использования LiquiBase. В результате LiquiBase наталкивается на уже существующие столбцы, таблицы и индексы

1. Если есть возможность — пересоздать схему с нуля: удалить схему, создать новую и накатить обновление через LiquiBase.
2. Пометить примененные руками изменения как уже исполненные. Для этого выполнить вместо update команду changelogSyncSQL. В итоге будет сформирован DML для маркировки всех changeset как исполненные. В полученном SQL оставить только те команды, которые относятся к уже примененным изменениям и выполнить его на схеме через SQL console. В конце нужен commit. Повторно запустить LiquiBase Update. Как избежать: При создании changelog добавить preCondition, проверяющий соответствие схемы тому состоянию, которое должно быть перед применением изменения

Сообщение в логе запуска LiquiBase обновления схемы: Liquibase: SEVERE 4 / 29 / 19 2 : 44 PM: LiquiBase: Could not acquire change log lock. Currently locked by OAIT- 211 ( 00.000 . 00.00 ) since  4 / 29 / 19 2 : 04 PM Имя узла OAIT-211 (00.000.00.00) приведено в качестве примера

Liquibase при запуске пишет в таблицу databasechangeloglock: пользователя, время блокировки и статус блокировки = 1. После завершения работы сбрасывает. Данные таблицы с блокировкой: ID: 1; LOCKED: 1; LOCKGRANTED: 29.04.19 14:04:10,567000000; LOCKEDBY: OAIT-211 (00.000.00.00). Данные таблицы без блокировки: ID: 1; LOCKED: 0. Если убить процесс, то в таблице databasechangeloglock остается запись и при повторном старте скрипта считается, что другой скрипт уже запущен

Вариант 1: Использовать команду releaseLocks. Запустить LiquiBase, указав команду releaseLocks вместо команды update.
Вариант 2: Сбросить блокировку в БД.
Code Block 1 Oracle update databasechangeloglock l set l.locked =  0 , l.lockgranted =  null , l.lockedby =  null where l.id =  1
Code Block 2 PostgreSQL update databasechangeloglock lset l.locked = false , l.lockgranted =  null , l.lockedby =  null where l.id =  1

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

После установки необходимо проверить результат выполнения следующих сценариев (playbooks):

  • MIGRATION_FP_CONF — проверить, что в репозиторий с настройками компонента DDIS в среде функционирования мигрировали конфигурационные файлы дистрибутива компонента DDIS;

  • DB_UPDATE — проверить, что создались и заполнились таблицы в БД на основании скриптов из папки package/db дистрибутива DDIS;

  • OPENSHIFT_DEPLOY — проверить, в проектной области среды контейнеризации появились ConfigMaps, VirtualService, DeploymentConfig, Service, Route, ServiceEntry, Gateway, DestinationRule и создались pods.

  • OPENSHIFT_INGRESS_EGRESS_DEPLOY — проверить, что появились pods ddis-ingress и ddis-egress.

  • NGINX_DEPLOY — проверить, что применились настройки locations, upstreams и routing в соответствии с файлами конфигурации nginx-iag-routing.json.j2, nginx-iag-services.json.j2, nginx-iag-nodes.json.j2;

  • IMPORT_ALL_PARAMS — проверить, что в АРМ Администратора используемых компонентов Platform V создались соответствующие объекты в соответствии с файлами конфигурации из папки package/conf/data дистрибутива компонента DDIS;

Кроме того, рекомендуется выполнить проверки:

  • проверено наличие хранилища S3;

  • имеются все необходимые смежные компоненты, описанные в разделе Платформенные зависимости настоящего документа;

  • настроек необходимых интеграций;

  • отсутствие ошибок в лог-файлах;

  • успешный вход пользователя в UI DDIS (см. раздел Авторизация документа Руководство оператора);

  • наличие таблиц, индексов в базах данных и успешно выполненный накат скриптов LiquiBase (см. описание в разделе Проверка работоспособности).