Руководство по установке#
В руководстве приведены инструкции по установке Продукта.
Основные понятия#
В таблице приведены основные аббревиатуры и сокращения:
Аббревиатура, сокращение |
Определение |
|---|---|
БД |
База данных |
ИС |
Информационная система |
ПО |
Программное обеспечение |
СУБД |
Система управления базами данных |
ТУЗ |
Техническая учетная запись |
КБ |
Корпоративный блок |
РБ |
Розничный блок |
УЦ |
Удостоверяющий центр |
API |
Application Programming Interface. Интерфейс прикладного программирования |
Common репозиторий |
Репозиторий глобальных параметров среды. Репозиторий с общими настройками продукта Platform V DevOps Pipeline Management (DPM), при условии использования опционально компонента Deploy Tools (CDJE) продукта Platform V DevOps Tools (DOT) |
GitLab CE |
Инструмент для хранения и управления репозиториями Git; приложение с открытым исходным кодом под лицензией MIT, в основном используемое для хостинга хранилищ Git |
Jenkins |
Продукт, распространяемый под лицензией Apache 2.0. Программная система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения. Jenkins job или джоба Jenkins по тексту обозначена как «задание Jenkins» |
Istio |
Сервис интеграции и оркестрации микросервисов в облаке, распространяемый под лицензией Apache 2.0 (рекомендуется использование продукта Platform V Synapse Service Mesh (SSM)) |
Kafka |
Распределённый программный брокер сообщений, проект с открытым исходным кодом под лицензией Apache 2.0 (рекомендуется использовать Platform V Corax (KFK)) |
Keystore |
Хранилище закрытых ключей и клиентских SSL сертификатов |
Nexus-Public |
Репозиторий для хранения дистрибутивов компонентов, проект с открытым исходным кодом под лицензией EPL v.1 |
Pipeline DevOps |
Процесс разработки по типу конвейера с использованием опционально компонента Deploy Tools (CDJE) продукта Platform V DevOps Tools (DOT) |
PSQL |
СУБД PostgreSQL (рекомендуется использование продукта Platform V Pangolin SE (PSQ)) |
В таблице приведены основные термины:
Термин |
Определение |
|---|---|
Платформа, Platform V |
Набор продуктов Platform V, правообладателем которых является АО «СберТех». Перечень таких продуктов обозначен в документации на конкретный продукт |
Продукт |
Компонент Устранение Сбойных Ситуаций (USSX) продукта Platform V Incident Manager (USS) |
Среда контейнеризации |
Kubernetes (рекомендуется), поддержана опциональная совместимость с OpenShift 4+ |
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения, которые обязательны для установки, настройки, контроля и функционирования Продукта. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце Комментарий). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Операционная система#
Наименование |
Версия |
Применение |
|---|---|---|
ОС Альт 8 СП |
10.0 и выше |
Рекомендовано |
Red Hat Enterprise Linux |
3.10 и выше |
Предусмотрена опциональная совместимость |
Среда контейнеризации#
Необходимое окружение для разворачивания компонента — Kubernetes версии 1.23 и выше или OpenShift (опционально) версии 4.2 и выше (далее — среда контейнеризации).
Наименование |
Версия |
Комментарий |
|---|---|---|
1.23 и выше |
Рекомендовано |
|
Red Hat OpenShift |
4.2 и выше |
Предусмотрена опциональная совместимость |
Инструмент контейнеризации#
Наименование |
Версия |
Комментарий |
|---|---|---|
Рекомендовано |
Инструмент сборки, тестирования, развертывания контейнеризированных приложений#
Наименование |
Версия |
Комментарий |
|---|---|---|
Рекомендовано |
Java-машина#
Наименование |
Версия |
Комментарий |
|---|---|---|
1.8 и выше |
Рекомендовано |
|
OracleJDK |
1.8 и выше |
Предусмотрена опциональная совместимость |
Система управления базами данных (СУБД)#
Наименование |
Версия |
Комментарий |
|---|---|---|
42.2.5 и выше |
Рекомендовано |
|
Oracle Database |
– |
Предусмотрена опциональная совместимость |
Oracle GoldenGate |
– |
Предусмотрена опциональная совместимость |
Правообладателем также рекомендована СУБД, основанная на PostgreSQL, – Platform V Pangolin SE, см. раздел «Платформенные зависимости».
Сервер приложений#
Наименование |
Версия |
Комментарий |
|---|---|---|
9.0.39 и выше |
Рекомендовано |
Браузер#
Наименование |
Версия |
Комментарий |
|---|---|---|
Яндекс |
Рекомендовано |
|
Google Chrome |
Предусмотрена опциональная совместимость |
Инструмент управления проектом#
Наименование |
Версия |
Комментарий |
|---|---|---|
3.0 и выше |
Рекомендовано |
Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)#
Наименование |
Версия |
Комментарий |
|---|---|---|
2.5.1 и выше |
Рекомендовано |
|
Nexus Repository Manager PRO |
- |
Предусмотрена опциональная совместимость |
Nexus Repository Manager OSS |
- |
Предусмотрена опциональная совместимость |
Сервис централизованного хранения репозиториев исходного кода#
Наименование |
Версия |
Комментарий |
|---|---|---|
15.0 и выше |
Рекомендовано |
|
Bitbucket |
7.6 и выше |
Предусмотрена опциональная совместимость |
Система мониторинга сборки#
Наименование |
Версия |
Комментарий |
|---|---|---|
2.31 и выше |
Рекомендовано |
Система для визуализации численных метрик (предоставленных, например, Prometheus):
Наименование |
Версия |
Комментарий |
|---|---|---|
2.5.0 и выше |
Рекомендовано |
Удостоверяющий центр#
Наименование |
Версия |
Комментарий |
|---|---|---|
- |
Рекомендовано |
Сервис интеграции и оркестрации микросервисов в облаке#
Наименование |
Версия |
Комментарий |
|---|---|---|
1.12 и выше |
Рекомендовано |
Правообладателем также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio, – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости».
Платформенные зависимости#
Для настройки, контроля и функционирования Продукта реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:
Наименование продукта |
Код |
Версия |
Код и наименование компонента |
Обязательность установки |
Описание |
|---|---|---|---|---|---|
Platform V Pangolin SE |
PSQ |
4.6.0. и выше |
- |
Обязательно |
Система управления базами данных, основанная на PostgreSQL |
Platform V Backend |
#BD |
03.035 |
APLJ Прикладной журнал |
Опционально |
Сервис для обеспечения отказоустойчивости приложения на уровне базы данных |
Platform V Audit SE |
AUD |
1.1 |
AUDT Аудит |
Опционально |
Сервис для аудирования событий |
Platform V Synapse Service Mesh |
SSM |
1.12 и выше |
IGEG Граничный прокси |
Опционально |
Сервис для обеспечения управляемого вызова интеграционных сервисов прикладной части |
Platform V Monitor |
OPM |
3.27.11 |
LOGA Журналирование |
Опционально |
Сервис для хранения лог-файлов |
Platform V Monitor |
OPM |
6.0.0-02 |
MONA Объединенный мониторинг Unimon |
Опционально |
Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения |
Platform V Backend |
#BD |
1.8.0-4.1.21 |
OTTS One-Time Password / One-Time-Token |
Опционально |
Сервис для аутентификации и авторизации межсервисных взаимодействий |
Platform V IAM SE |
IAM |
AUTH IAM Proxy |
Опционально |
Сервис управления доступом и информационными ресурсами |
|
Platform V IAM SE |
IAM |
AUTZ Объединённый сервис авторизации |
Опционально |
Сервис авторизации |
Примечание:
Обязательно — компонент или продукт необходим для функционирования сервиса.
Опционально — необязательный для функционирования сервиса компонент или продукт, рекомендуется его установка, но допускается использование аналога других производителей.
Аппаратные требования#
Для установки Продукта требуется нижеописанная конфигурация аппаратного обеспечения.
Продукт состоит из двух модулей – USS и ERRM, которые разворачиваются каждый в своем пространстве имен.
Квота на проект: 50 CPU, 128 ГБ.
Квота на pod c учетом sidecar-контейнеров:
модуль USS: 26 CPU, 64 ГБ;
модуль ERRM: 26 CPU, 64 ГБ.
Подготовка окружения#
Подготовка к развертыванию Продукта включает в себя выполнение следующих шагов:
Заведите ТУЗ для доступа.
Запросите права на чтение репозитория, содержащего код задания Jenkins для развертывания.
Заведите заявку на предоставления доступа к registry для ТУЗ.
Импортируйте задание склейки в Jenkins (xml в Jenkins, а остальные необходимые файлы в Gitlab CE).
Импортируйте задание развертывания в Jenkins (xml в Jenkins, а остальные необходимые файлы в Gitlab CE).
Задайте права и полномочия в Jenkins для запуска Pipeline DevOps. Есть специальное задание для создания полномочий в Jenkins с правами на доступ к среде контейнеризации. Опционально можно сделать другим способом.
Задайте права и полномочия в Jenkins, содержащую ТУЗ для доступа к Nexus-Public, где будет лежать дистрибутив приложения.
Создайте git репозиторий (получение прав) для хранения файлов конфигурации.
Создайте клиентский сертификат.
Сгенерируйте сертификаты для компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) и создайте секреты (опционально).
Создайте ServiceAccount Kubernetes или OpenShift (опционально). Service-acc-ingress необходимо привязать imagePullSecret, выполнив команды:
kind: ServiceAccount
apiVersion: v1
metadata:
name: default
namespace: tribe-pt-dev-ussx-k8s
uid: <значение>
resourceVersion: '<значение>'
creationTimestamp: '2022-04-28T12:06:26Z'
secrets:
- name: default-token-9x95x
imagePullSecrets:
- name: tuz-image-pull
kind: Secret
apiVersion: v1
metadata:
name: default-token-9x95x
namespace: tribe-pt-dev-ussx-k8s
uid: <значение>
resourceVersion: '<значение>'
creationTimestamp: '2022-04-28T12:06:26Z'
annotations:
kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: <значение>
managedFields:
data:
ca.crt: >-
<значение>
namespace:
<значение>
token: >-
<значение>
type: kubernetes.io/service-account-token
Состав дистрибутива#
В данный момент в дистрибутиве содержатся темплейты для установки в среду контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально) и миграции баз данных.
Дистрибутив имеет следующую структуру:
Distr.zip
|package/
|________bh/
|________app-api/. \<− jar файлы Апп-апи
|________auth-api/. \<−jar файлы для Аус-апи
|________datamart-api/. \<−jar файлы для Датамарт-апи
|________inner-connector-api/. \<−jar файлы для Иннер-коннектор-апи
|________docker/
|________app-api/. \<− docker файлы Апп-апи
|________auth-api/. \<−jar файлы для Аус-апи
|________datamart-api/. \<−jar файлы для Апп-апи
|________inner-connector-api/. \<−jar файлы для Иннер-коннектор-апи
|________frontend/. \<−jar файлы для frontend
|________pl/
|________frontend/. \<− файлы статики для frontend
|________db/
|________app-api.zip \<−Миграции для Апп-апи
|________ auth-api.zip \<−Миграции для Аус-апи
|________ inner-connector-api.zip \<−Миграции для иннера
|________postgresql.jar
|________liquibase.jar
|________version.conf
|conf/deploy_job/ - Джоба деплоя
|conf/recreate_distrib_job/ Джоба склейки
|conf/k8s/base
|________isio/*.yaml
|________app-api/*.yaml
|________auth-api/*.yaml
Установка#
Настройка сертификатов для компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD)#
Для настройки сертификата для компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) (является опциональным) необходимо следующее.
1.Сгенерируйте ключевую пару. Пример (создание происходит с помощью инструмента keytool c примером команды):
```
keytool -genkey -keyalg EC -sigalg SHA256withECDSA -keystore ${module_id}.p12 -storetype PKCS12 -keysize 256 -dname "CN=${module_id}" -alias ${module_id}
```
2.Сгенерируйте запрос на сертификат. Пример:
```
keytool -certreq -keyalg EC -sigalg SHA256withECDSA -keystore ${module_id}.p12 -storetype PKCS12 -alias ${module_id} > ${module_id}_cert_req.pem
```
В результате выполнения данной команды будет создан файл CSR−**${** **module_id}_cert_req.pem.**
3.Полученный файл передайте администратору компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) в заявке на генерацию сертификата для модуля. В заявке нужно в явном виде указать, что сертификат должен быть сгенерирован из приложенного запроса по данной инструкции. Результатом выполнения заявки будет два файла: сертификат УЦ компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) и сертификат модуля.
4.Добавьте полученные сертификаты в keystore.
5.Получите сертификат публичного ключа компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) одним из нижеописанных способов.
Сертификат публичного ключа компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) необходим для корректной работы клиента компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) и используется для проверки подписи компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD).
Необходимо скачать сертификат и импортировать его в хранилище самостоятельно (должны быть установлены утилиты curl и keytool). Получение сертификата компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD):
```
# Download OTTS Service certificate
curl -X GET "https://<ott-service-host>:8442/ejbca/publicweb/webdist/certdist?cmd=lastcert&subject=cn%3Dott-service" --insecure > ott-service.crt
### Use PKCS12
# Import OTTS Service certificate into PKCS12 store
keytool -importcert -file ott-service.crt -keystore truststore.p12 -storetype PKCS12 -storepass <password> -alias "ott-service" -noprompt
### or JKS
# Import OTTS Service certificate into JKS store
keytool -importcert -file ott-service.crt -keystore truststore.jks -storetype JKS -storepass <password> -alias "ott-service" -noprompt
```
Необходимо загрузить подготовленное хранилище.
Также для удобства создан скрипт с возможностью генерации такого сертификата. Для генерации запроса на сертификат компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD) выполните:
```
./cert_generate.py -CR -OTT -c ussx для ussx
```
Создание ТУЗ#
В работе системы АС используется техническая учетная запись, например, uss.
Чтобы получить техническую учетную запись, обратитесь к системному администратору или оформите заявку на получение технической учетной записи внутри своей организации.
Для доступа к базе данных эта учетная запись добавляется отдельно, при этом необходимо гарантировать следующий набор прав:
сreate table;
schema;
index;
Grant select;
update;
delete;
truncate;
insert;
trigger;
execute;
references;
connect;
temporary;
usage;
alter table.
Отсутствие следующих прав приводит к ошибкам на этапе установки:
сreate table;
schema.
При отсутствии остальных будут возникать ошибки в процессе работы самого Продукта.
Создание клиентского сертификата#
Для настройки https, а также для общения с рядом технологических сервисов необходимо создать клиентские сертификаты приложения.
Создание подразумевает два этапа:
Создание запросов на сертификаты.
Отправление запросов на создание сертификатов в удостоверяющий центр.
Для создания запроса необходима консоль с sh.
Чтобы создать закрытый ключ, выполните следующие действия:
Создайте в консоли директорию для сертификатов, выполнив команду:
mkdir -p certs && cd certsПосле создания директории создайте запрос. Создайте закрытый ключ, воспользовавшись утилитой OpenSSL:
OpenSSL> genrsa -aes256 -out ourPrivatKey.key 2048Крайне важно запомнить пароль к контейнеру, который мы будем вводить при создании ключа.
В результате в директории certs появится закрытый ключ ourPrivatKey.key.
Чтобы создать открытый ключ, выполните следующие действия:
Воспользуйтесь утилитой OpenSSL:
OpenSSL> req -new -key ourPrivateKey.key -out ourCertificate.csrДалее консоль запросит пароль для подтверждения. Введите пароль, который был задан на предыдущем шаге.
Заполните информацию в сертификате:
Country Name: RU;
State or Province: <оставим_пустым>;
Organization Name: XXXX;
Organizational Unit Name: XXXX;
Common Name: <our_hostname>; Emal Address: <оставим_пустым>. В результате на выходе будет получен запрос на открытую часть сертификата, который необходимо направить коллегам из УЦ, для создания сертификата.После получения сертификатов разделите на корневой, промежуточный и клиентский сертификат. Для этого откройте сертификат для просмотра, нажмите на экспортируемый сертификат и выберите Экспортировать в файл, в качестве кодировки выберите Файлы X.509 (.CER) в кодировке Base64 все эти сертификаты сохраните отдельными файлами.
После чего преобразуйте в OpenSSL клиентский сертификат и дешифруйте приватный ключ, для этого обратитесь к OpenSSL:
OpenSSL> x509 -inform der -in ourCertificate.cer -out ourSertificate.pemДалее дешифруйте приватный ключ:
OpenSSL> rsa -in ourPrivateKey.key -out unencryptPrivateKey.keyКоманда попросит ввести пароль, который был задан в первых шагах.
Далее соберите данные ключи в секреты среды контейнеризации, для чего выполните следующее:
Авторизуйтесь в среде контейнеризации, зайдите в необходимый проект, в котором планируется устанавливать приложение.
Пройдите в WorkLoads → Secrets → Create Secret → Key/Value Secret.
Для создания секрета istio-ingressgateway-ca-certs необходимо следующее.
Чтобы создать цепочку клиентских сертификатов, выполните следующие действия:
Перейдите в WorkLoads → Secrets → Create Secret → Key/Value Secret имя секрета−istio-ingressgateway-certs
ключ – tls.crt;
значение – текстовое содержимое клиентского ключа в формате OpenSSL созданного ранее.
Вторым ключом добавьте дешифрованный ключ, чтобы хранить их в 1-ом секрете:
ключ – tls.key;
значение – текстовое значение дешифрованного ключа, созданного ранее.
Инструкция создания клиентских сертификатов представлена в данном документе. Для настройки https, а также для общения с рядом технологических сервисов необходимо создать клиентские сертификаты. Создание делится на 2 этапа:
создание запросов на сертификаты;
далее запросы необходимо отправить на создание сертификатов в удостоверяющий центр.
Для создания запроса необходима консоль с sh, в которой нужно создать директорию для сертификатов и перейти в нее, выполнив команду Создание директории
mkdir -p certs && cd certsПосле создания директории создайте запрос. Сначала создайте закрытый ключ, воспользовавшись утилитой OpenSSLOpenSSL> genrsa -aes256 -out ourPrivatKey.key 2048Крайне важно запомнить пароль к контейнеру, который будете вводить при создании ключа. В результате в директории certs появится закрытый ключ ourPrivatKey.key.Создайте открытый ключ, для чего воспользуйтесь утилитой OpenSSL
OpenSSL> req -new -key ourPrivateKey.key -out ourCertificate.csrКонсоль запросит пароль для продолжения, введите пароль, который задавали в прошлом шаге. Далее необходимо заполнить информацию в сертификате:
Country Name: RU;
State or Province: <оставить пустым>;
Organization Name: <указать наименование>;
Organizational Unit Name: <указать наименование>;
Common Name : our hostname;
Emal Address: <оставим пустым>.
В результате на выходе получите запрос на открытую часть сертификата, который необходимо направить коллегам из УЦ, для создания сертификата. Получение сертификатов необходимо разделить на корневой, промежуточный и клиентский сертификат, для этого откройте сертификат для просмотра, нажмите на экспортируемый сертификат и выберите экспортировать в файл, в качестве кодировки выберите Файлы X.509 (.CER) в кодировке Base64. Все эти сертификаты сохраните отдельными файлами. После чего преобразуйте в OpenSSL клиентский сертификат и дешифруйте приватный ключ.
Для этого вновь обратитесь к OpenSSL: OpenSSL> x509 -inform der -in ourCertificate.cer -out ourSertificate.pem
Далее дешифруйте приватный ключ: OpenSSL> rsa -in ourPrivateKey.key -out unencryptPrivateKey.key
Команда попросит ввести пароль, который был задан на первых шагах. Далее соберите данные ключи в секреты среды контейнеризации:
Авторизуйтесь.
Зайдите в проект.
Пройдите по цепочке: WorkLoads → Secrets → Create Secret → Key/Value Secret.
Создайте цепочку клиентских сертификатов.
Перейдите в WorkLoads → Secrets → Create Secret → Key/Value Secret. Где имя секрета - istio-ingressgateway-certs, ключ – tls.crt, значение – текстовое содержимое клиентского ключа в формате OpenSSL, созданного ранее. Вторым ключом необходимо добавить дешифрованный ключ, чтобы хранить их в 1-ом секрете: ключ – tls.key, значение – текстовое значение дешифрованного ключа, созданного ранее. Для удобства создания сертификата создан скрипт. Для начала необходимо заполнить san.cnf.
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = RU
stateOrProvinceName = MOW
localityName = MOW
organizationName = NAME
commonName = <URL>
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = <URL>
DNS.2 = <URL>
DNS.3 = <URL>
DNS.4 = <URL>
Далее необходимо запустить скрипт:
./cert_generate.py -CR -server -req san.cnf -c CommonName
После чего придет запрос на создание сертификата.
Создание секретов для среды контейнеризации (опционально)#
Для выполнения команд необходим установленный клиент среды контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально).
Необходимо получить следующие секреты:
ignite-se-cluster-secrets;
kafka-secret;
secret-ingressgateway-ca-certs;
secret-ingressgateway-certs;
secret-uss-eggrm;
secret-uss-ott;
secret-uss-ott-certs.
Создание секрета
За основу возьмите yaml-файл примерно такого содержания:
kind: Secret
apiVersion: v1
metadata:
name: <имя секрета>
data:
<key>: <value>
type: Opaque
secret-ingressgateway-ca-certs и secret-ingressgateway-certs – для хранения сертификатов Envoy.
Файлы подготавливаются при создании клиентского сертификата:
Логин в среде контейнеризации:
oc login --token=<openshift_user_token> --server=<openshift_api_url>:<значение>Создание секрета istio-certs (вывод содержимого в консоль):
oc create secret generic istio-certs --from-file=root-ca.pem --from-file=envoy.crt --from-file=envoy.key --dry-run -o yaml > secret-istio-certs.yamlСоздание секрета secret-ingressgateway-ca-certs:
oc create secret generic secret-ingressgateway-ca-certs --from-file=ca.pem=root-ca.pem --dry-run -o yaml > secret-ingressgateway-ca-certs.yamlСоздание секрета secret-ingressgateway-certs:
oc create secret generic secret-ingressgateway-certs --from-file=tls.key=envoy.key --from-file=tls.crt=envoy.crt --dry-run -o yaml > secret-ingressgateway-certs.yamlПрименить задание Jenkins для шифрования файлов.
Выложить зашифрованный файл секрета в git repository в папку /config/<project_name>/<stand_name>/secrets.
Для простоты использования, секреты можно создать из ранее подготовленных сертификатов с помощью скрипта:
./cert_generate.py -h
usage: cert_generate.py [-h] -c CN [-p PWD] [-r ROOT] [-i INTERMEDIATE]
[-C CLIENT] [-CR] [-I] [-kafka] [-server] [-req REQ]
[-IngressSecret] [-secretname SECRETNAME]
[-OSKafkaSecret] [-Certs CERTS] [-Keys KEYS] [-OTT]
[-OTTSecret] [-ottpem OTTPEM] [-rootsber ROOTSBER]
Create JKS with you optional arguments:
-h, --help show this help message and exit
-c CN, --cn CN common name
-p PWD, --pwd PWD password for jks
-r ROOT, --root ROOT root certificate
-i INTERMEDIATE, --intermediate INTERMEDIATE intermediate cert
-C CLIENT, --client CLIENT client cert
-CR, --create need create jks
-I, --Import need add cert to exist jks
-kafka Crete jks for kafka
-server create openshift ingress cert from req file
-req REQ req файл с параметрами создаваемого сертификата
-IngressSecret create OpenShift secret for Ingress/Egress from cert key and trusted CA
-secretname SECRETNAME имя создаваемого сертификата
-OSKafkaSecret create OpenShift secret for kafka from cert key and trusted CA
-Certs CERTS массив сертификатов для Kafka (Kafka Application Journal), в порядке, указанном для ключей
-Keys KEYS массив ключей, в порядке, указанном для сертификатов для Kafka (Kafka Application Journal)
-OTT create cert for OTT
-OTTSecret create secret for OTT
-ottpem OTTPEM Ott pem from ott ZNO
-rootsber ROOTSBER root pem from ott ZNO
Создать секрет для компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD):
./cert_generate.py -OTTSecret -c CommonName -secretname secret-errm-ott-certs
Где CommonName – созданный на предыдущем шаге, этим же скриптом, сертификат.
Создать kafka-secret:
./cert_generate.py -server -req san.cnf -c <hostname> -OSKafkaSecret -secretname kafka-cert -r ../RootCa.cer -i ../intermediate.cer -Certs <hostname>/<hostname>,<hostname>/<hostname> -Keys APP_cert,AUTH_cert
Создать серверный сертификат:
./cert_generate.py -server -req san.cnf -c <hostname> -IngressSecret -secretname secret-ingressgateway-certs -r ../RootCa.cer -i ../intermediate.cer
Конфигурация#
Все стендо-зависимые параметры (минимальная конфигурация) и параметры основных интеграций указываются в файле deploy/ansible/vars/varisbles.yaml. Полный список возможных параметров представлен ниже.
Файл .env
NAMESPACE: название namespace (пространства имен)
REGISTRY_URL: URL registry с docker-образами
############################# Интеграция с компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD)
AUDIT2_PROXY_URL: целевой URL компонента Аудит (AUDT) продукта Platform V Audit SE (AUD)
############################# Интеграция с компонентом Прикладной Журнал (APLJ) продукта Platform V Backend (#BD)
KAFKA_PJ_PORT: порт Kafka Application Journal, обычно 9093
KAFKA_PJ_HOST_3: хост сервера №1 Kafka Application Journal
KAFKA_PJ_HOST_2: хост сервера №2 Kafka Application Journal
KAFKA_PJ_HOST_1: хост сервера №3 Kafka Application Journal
KAFKA_PJ_HOST_4: хост сервера №4 Kafka Application Journal
KAFKA_PJ_HOST_5: хост сервера №5 Kafka Application Journal
KAFKA_PJ_HOST_6: хост сервера №6 Kafka Application Journal
KAFKA_PJ_IP_1: ip адрес сервера Kafka №1 Application Journal
KAFKA_PJ_IP_2: ip адрес сервера Kafka №2 Application Journal
KAFKA_PJ_IP_3: ip адрес сервера Kafka №3 Application Journal
KAFKA_PJ_IP_4: ip адрес сервера Kafka №4 Application Journal
KAFKA_PJ_IP_5: ip адрес сервера Kafka №5 Application Journal
KAFKA_PJ_IP_6: ip адрес сервера Kafka №6 Application Journal
KAFKA_PJ_BOOTSTRAP: список ip:порт всех серверов Kafka Application Journal через запятую
STANDIN_CLIENT_ZONEID: зона USS в Application Journal
STANDIN_CLIENT_REFRESH_STATE_PERIOD: частота обновления состояния в Application Journal в секундах, обычно 100
STANDIN_CLIENT_CONCURRENCY: количество потоков для репликации журналов, обычно 10
STANDIN_CLIENT_PRODUCER_SSL_KEYSTORE_LOCATION: путь к keystore с сертификатами для доступа producer'а к Kafka Application Journal, обычно /opt/certs/kafka/keystore.jks
STANDIN_CLIENT_PRODUCER_SSL_TRUSTSTORE_LOCATION: путь к truststore с сертификатами для доступа producer'а к Kafka Application Journal, обычно /opt/certs/kafka/truststore.jks
STANDIN_CLIENT_PRODUCER_SSL_IDENTIFICATION_ALGORITHM: алгоритм идентификации producer'а в Kafka Application Journal, для автоматического выбора оставляется пустым
STANDIN_CLIENT_CONSUMER_SSL_KEYSTORE_LOCATION: путь к keystore с сертификатами для доступа consumer'а к Kafka Application Journal, обычно /opt/certs/kafka/keystore.jks
STANDIN_CLIENT_CONSUMER_SSL_TRUSTSTORE_LOCATION: путь к truststore с сертификатами для доступа consumer'а к Kafka Application Journal, обычно /opt/certs/kafka/truststore.jks
STANDIN_CLIENT_CONSUMER_SSL_IDENTIFICATION_ALGORITHM: алгоритм идентификации consumer'а в Kafka Application Journal, для автоматического выбора оставляется пустым
###################################### ISTIO
PROXY_IMAGE: адрес образа istio proxyv2
############################# INGRESS
ISTIO_CONTROL_PLANE: адрес контрольной панели istio
INGRESSGATEWAY_NAME: название gateway на ingress'е, обычно dp-uss-app-ingress
INGRESSGATEWAY_ISTIO_LABEL: лейбл для сущностей ingress istio, обычно <название-namespace>-uss-<rb/kb>-ingress
INGRESSGATEWAY_APP_LABEL: лейбл для прикладных сущностей ingress, обычно <название-namespace>-uss-<rb/kb>-ingress
INGRESSGATEWAY_CERTS_SECRET_NAME: название серверных секретов для ingress gateway, обычно secret-ingressgateway-certs
INGRESSGATEWAY_CA_CERTS_SECRET_NAME: название секретов с УЦ для ingress gateway, обычно secret-ingressgateway-ca-certs
INGRESSGATEWAY_CERTS_MOUNT_PATH: путь к серверным секретам для ingress gateway, обычно /etc/istio/ingressgateway-certs
INGRESSGATEWAY_CA_CERTS_MOUNT_PATH: путь к секретам с УЦ для ingress gateway, обычно /etc/istio/ingressgateway-ca-certs
############################# EGRESS
EGRESSGATEWAY_NAME: название gateway на egress'е, обычно dp-uss-app-egress
EGRESSGATEWAY_ISTIO_LABEL: лейбл для сущностей egress istio, обычно <название-namespace>-uss-<rb/kb>-egress
EGRESSGATEWAY_APP_LABEL: лейбл для прикладных сущностей egress, обычно <название-namespace>-uss-<rb/kb>-egress
EGRESSGATEWAY_CERTS_SECRET_NAME: название серверных секретов для egress gateway, обычно secret-ingressgateway-certs
EGRESSGATEWAY_CA_CERTS_SECRET_NAME: название секретов с УЦ для egress gateway, обычно secret-ingressgateway-ca-certs
EGRESSGATEWAY_CERTS_MOUNT_PATH: путь к серверным секретам для egress gateway, обычно /etc/istio/ingressgateway-certs
EGRESSGATEWAY_CA_CERTS_MOUNT_PATH: путь к секретам с УЦ для egress gateway, обычно /etc/istio/ingressgateway-ca-certs
###################################### Компонент One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD)
OTT_SERVICE_HOSTS: список хост:порт всех серверов OTTS через запятую
OTT_SERVICE_URL: основной адрес сервиса OTTS
OTT_CERTSTORE_PATH: путь к keystore с сертификатами для доступа к OTTS, обычно /mnt/secrets/error-processor-cloud.p12
OTT_TRUST_STORE_PATH: путь к truststore с сертификатами для доступа к OTTS, обычно /mnt/secrets/ott_service_truststore.p12
OTT_CLIENT_CERT_ALIAS: название сервиса в компоненте One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD), обычно error-processor-cloud
OTT_SERVICE_SI_HOSTS: хост:порт standin компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD)
OTT_MODULE_ID: идентификатор модуля в компоненте One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD), обычно error-processor-cloud
OTT_IMAGE: адрес образа ott-client-api-v2
###################################### Квота USS
USS_REPLICA_COUNT: количество реплик приложения, обычно 1
USS_CPU_LIMIT: количество ядер, выделяемых приложению из квоты, обычно 1
USS_MEM_LIMIT: количество оперативной памяти, выделяемых приложению из квоты, обычно 6000Mi
USS_CPU_REQ: максимальное количество ядер, выделяемых приложению из квоты, обычно 1
USS_MEM_REQ: максимальное количество оперативной памяти, выделяемых приложению из квоты, обычно 6000Mi
SERVER_PORT: порт, на котором поднято приложение внутри контейнера, 8080
USS_CPU_ISTIO_REQ: количество ядер, выделяемых istio sidecar из квоты, обычно 100m
USS_CPU_ISTIO_LIM: максимальное количество ядер, выделяемых istio sidecar из квоты, обычно 100m
USS_MEM_ISTIO_REQ: количество оперативной памяти, выделяемых istio sidecar из квоты, обычно 1000Mi
USS_MEM_ISTIO_LIM: максимальное количество оперативной памяти, выделяемых istio sidecar из квоты, обычно 1000Mi
USS_MEM_FB_LIMIT: количество оперативной памяти, выделяемых fluent-bit из квоты, обычно 32Mi
USS_MEM_FB_REQ: максимальное количество оперативной памяти, выделяемых fluent-bit из квоты, обычно 32Mi
USS_CPU_FB_REQ: количество ядер, выделяемых fluent-bit из квоты, обычно 200m
USS_CPU_FB_LIMIT: максимальное количество ядер, выделяемых fluent-bit из квоты, обычно 200m
############################# DATABASES
MASTER_DATABASE_IP: ip адрес основной БД
MASTER_DATABASE_PORT: порт основной БД
MASTER_DATABASE_HOST: хост основной БД
STANDIN_DATABASE_HOST: хост standin БД
STANDIN_DATABASE_PORT: порт standin БД
STANDIN_DATABASE_IP: ip адрес standin БД
###################################### Настройки USS-APP
SERVER_PORT: порт, на котором поднимется приложение внутри контейнера, 8080
POSTGRES_ENABLED: включение/выключение режима работы с PGSE Platform V
SUDIR_ENABLED: включение/выключение режима работы с компонентом IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)
DATASOURCE_MAIN_CLASS: класс драйвера для основного datasource, для PGSE Platform V - org.postgresql.Driver
DATASOURCE_MAIN_URL: URL основной БД
INT_MASTER_DATABASE_PORT: порт основной БД
DATASOURCE_MAIN_USER: имя пользователя в основной БД
DATASOURCE_MAIN_MAXPOOLSIZE: максимальный размер пула соединений для основной бд, обычно 100
DATASOURCE_MAIN_MINPOOLSIZE: минимальный размер пула соединений для основной бд, обычно 60
DATASOURCE_STANDIN_CLASS: класс драйвера для standin datasource, для PGSE Platform V - org.postgresql.Driver
DATASOURCE_STANDIN_URL: URL standin БД
INT_STANDIN_DATABASE_PORT: порт standin БД
DATASOURCE_STANDIN_USER: имя пользователя в standin БД
DATASOURCE_STANDIN_MINPOOLSIZE: минимальный размер пула соединений для standin бд, обычно 60
DATASOURCE_STANDIN_MAXPOOLSIZE: максимальный размер пула соединений для standin бд, обычно 100
SPAS_SERVER_URL: адрес компонента Объединенный сервис авторизации (AUTZ) продукта Platform V IAM SE (IAM)
SPAS_MAX_CLIENT_POOL_SIZE: количество потоков для клиента OCA, обычно 10
SEND_MESSAGE_TO_JOURNAL_USS: включение/выключение репликации данных через Application Journal
STANDIN_CLIENT_USS_APP_ZONEID: зона USS в Application Journal
USS_SUDIR_ROUTE: название route для входа через компонент IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)
USS_SUDIR_GEO_ROUTE: название route с поддержкой георезервирования для входа через компонент IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)
SPAS_HOSTNAME: хост сервиса OCA
SPAS_PORT: порт сервиса OCA
SPAS_IP: ip адрес сервиса OCA
SPAS_KEYSTORE_PKEY: путь к приватному ключу к keystore сервиса ОСА, обычно оставляется пустым
SPAS_KEYSTORE_CERT: путь к keystore сервиса ОСА, обычно оставляется пустым
SPAS_TRUSTED_CERT: путь к truststore сервиса ОСА, обычно оставляется пустым
############################## FLUENT
FLUENTBIT_IMAGE: адрес образа fluent-bit
LOGGER_HOST: хост сервиса Logger Platform V
LOGGER_PORT: порт сервиса Logger Platform V
STAND_VERSION: идентификатор стенда для Logger Platform V
############################## Дополнительные настройки
IGNITE_CLIENT_ENABLED: включение/выключение режима работы с Ignite SE Platform V
SAME_DB_ENABLED: настройка топологии БД, должна быть всегда false
CONTOUR_ID: идентификатор контура КБ/РБ
SUDIR_LOGOUT_URL: URL страницы логина сервера компонента IAM Proxy (AUTH) продукта Platform V IAM SE (IAM)
AUDIT_DEV_MODE: включение/выключение интеграции с компонентом Аудит (AUDT) продукта Platform V Audit SE (AUD)
STANDIN_CLOUD_CLIENT_STUB: включение/выключение интеграции с Application Journal
OTT_CERTSTORE_TYPE: тип keystore для компонента One-Time Password / One-Time-Token (OTTS) продукта Platform V Backend (#BD), обычно PKCS12
AUDIT_CLIENT_CRT: имя файла сертификата для компонента Аудит (AUDT) продукта Platform V Audit SE (AUD), обычно tls.crt
AUDIT_CLIENT_KEY: имя файла приватного ключа сертификата для компонента Компонент Аудит (AUDT) продукта Platform V Audit SE (AUD), обычно tls.key
NOTIFICATIONS_ENABLED: включение/выключение отправки уведомлений
NOTIFICATIONS_KEYSTORE_PATH: путь к keystore с сертификатами почтового сервера, обычно /opt/certs/kafka/keystore.jks
NOTIFICATIONS_TRUSSTORE_PATH: путь к truststore с сертификатами почтового сервера, обычно /opt/certs/kafka/truststore.jks
NOTIFICATIONS_MAIL_USERNAME: логин в почтовом сервере
NOTIFICATIONS_MAIL_FROM: почтовый адрес, с которого будет осуществляться рассылка уведомлений по почте
NOTIFICATIONS_SMS_USERNAME: логин в сервисе СМС
NOTIFICATIONS_SMS_FROM: адрес, с которого будет осуществляться рассылка уведомлений по СМС
NOTIFICATIONS_SMS_TO: целевой адрес для рассылки уведомлений по СМС
NOTIFICATIONS_SMTPS_DEBUG_ENABLED: включение/выключение подробного логирования для отправки уведомлений
NOTIFICATIONS_SMTPS_HOST: адрес SMTP почтового сервера
NOTIFICATIONS_SMTPS_PORT: порт SMTP почтового сервера, обычно 587
NOTIFICATIONS_SMTPS_PORT_CM: внешний порт для отправки уведомлений, обычно 8443
CORRSCEN_PORT: целевой порт для вызова корректирующих сценариев, обычно 443
CORRSCEN_HOST_1: хост для вызова корректриующего сценария №1
Интеграция с компонентом Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (OPM)
Данный компонент предназначен для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения. С детальным описанием можно ознакомиться в документации к продукту Platform V Monitor (OPM).
Интеграция с компонентом Журналирование (LOGA) продукта Platform V Monitor (OPM)
Для интеграции с компонентом корректно заполните enviroment файл стенда (см. документацию для компонента Журналирование (LOGA) продукта Platform V Monitor (OPM)). За настройки подключения к компоненту отвечают параметры:
LOGGER_GW: – предпочитаемый хост логгера;
LOGGER_ENDP: - нода балансировки;
LOGGER_ENDP_2 - нода балансировки;
LOGGER_PORT: - порт логгера (443);
LOGGER_PROTO: - протокол HTTP/HTTPS (HTTPS).
Больше никаких действий для настройки интеграции с данным компонентом не требуется.
Pipeline DevOps для развертывания проекта Продукта в среду контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально)
Запуск осуществляется в задании Jenkins типа pipeline, definition у которого выставлен как Jenkinsfile из данного репозитория. Данный Pipeline DevOps можно сразу настроить на все стенды среды контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально), для достижения универсальности созданных template.
Секреты стендов
Каждый стенд может иметь уникальный список секретов, например, пароли в БД. Внутри Git секреты сохранены в виде зашифрованных с помощью ansible-vault файлов. Является опциональным шагом, т.к. для минимальной конфигурации достаточно двух секретов (к основной и SI БД), указываемые в Jenkins, указываемые с ID секрета: MAIN_DB, STANDIN_DB.
При создании файлов секретов, все параметры, передаваемые внутри value должны быть зашифрованы в base64.
Существует отдельный pipe, который на входе имеет четыре параметра:
gitSshUrl – репозиторий, в котором временно находятся секреты, которые необходимо шифровать;
gitBranch – ветка репозитория, в которой находятся секреты;
folder – папка, в которой находятся секреты;
workMode – режим работы скрипта (encrypt – шифруем, decrypt – расшифровываем).
В результате получаем архив, прикрепленный к результату сборки, в котором находятся зашифрованные или расшифрованные секреты (взависимости от типа задачи), которые нужно подложить в репозиторий в папку secrets/example, где example – имя стенда, для которого предназначаются секреты.
Jenkinsfile
В Jenkinsfile находится сам скрипт, в котором объявлен так же ряд переменных.
Сборка артефакта продукта через Jenkins
Внешний вид задания Jenkins (с примером заполнения):

Параметры:
AGENT – Jenkins-агент для исполнения задания Jenkins;
jdk – версия jdk;
maven – версия maven;
OWNED_DISTR_URL – ссылка на owned дистрибутив в Nexus-Public;
PUBLISH_URL – ссылка на Nexus-Public репозиторий для загрузки дистрибутива;
PARTY_DISTR_URL – ссылка на party дистрибутив в Nexus-Public;
DOCKER_REGISTRY – Docker репозиторий;
DOCKER_REGISTRY_PATH – путь к дистрибутиву в Docker репозитории;
DOCKER_DIR – директория для хранения дистрибутива в Docker репозитории;
MAVEN_XML – ID Maven Setting.xml файла в Jenkins;
nexusSecrets – ID Nexus-Public секрета в Jenkins;
baselmageJava – базовый Docker образ Java;
VERSION – версия релиза;
ARTIFACT_ID – ID артефакта;
GROUP_ID – ID группы;
REPOSITORY_ID – ID репозитория;
MODULE – модуль для сборки;
OPENSHIFT – среда контейнеризации (опционально).
Развертывание Продукта через Jenkins
Внешний вид задания Jenkins (с примером заполнения):

Параметры:
ARTIFACT_URL – ссылка на артефакт дистрибутива;
NEXUS_SECRET – ID секрета для доступа в Nexus-Public;
NAMESPACE – название пространства имен в k8s;
REGISTRY_URL – ссылка на Docker registry;
MAIN_INGRESS_HOST – основной хост Ingress;
MAIN_DB_URL – строка подключения основной БД;
STANDIN_DB_URL – строка подключения StandIn БД;
K8S_HOST_API – адрес endpoint для доступа к API k8s;
K8S_SECRET_ID – ID секрета с токеном для доступа к пространству имен;
MODULE – модуль для установки;
DELETE – очищение пространства имен перед установкой;
LIQUIBASE_STAGE – обновление схемы БД;
MAIN_DB_STAGE – обновление основной БД;
STANDIN_DB_STAGE – обновление StandIn БД;
CLEAR_CHECKSUMS – обнуление checksums Liquibase.
СУБД PSQL
Чтобы подготовить базу данных, выполните следующие действия:
В СУБД PSQL проверьте наличие ролей as_admin, as_TUZ. При разворачивании в СУБД PSQL роли входят в поставку. При использовании СУБД PSQL, предварительно создать роли (см. скрипт создания ролей).
-- скрипт проверки на наличие ролей
SELECT rolname FROM pg_roles WHERE rolname in ('as_TUZ', 'as_admin');
-- скрипт создания ролей
CREATE ROLE as_admin;
CREATE ROLE "as_TUZ";
Создайте пользователя владельца, от имени которого выполняется накат скриптов по разворачивании БД:
-- создание пользователя USS
CREATE USER USS WITH
PASSWORD '***************'
LOGIN
NOCREATEDB
NOCREATEROLE
NOSUPERUSER
NOINHERIT
NOREPLICATION
NOBYPASSRLS;
-- Устанавливаем порядок поиска схем для пользователя
ALTER ROLE USS SET search_path = "$user";
GRANT as_admin TO USS;
ALTER ROLE USS SET role TO 'as_admin';
Создайте табличные пространства:
-- на сервере создать папки для пространств
mkdir /mnt/uss_l
mkdir /mnt/uss_t
--в СУБД выполнять пользователем с правами db_admin (PSQL)
CREATE TABLESPACE uss_t
OWNER as_admin
LOCATION '/pgdata/11/';
CREATE TABLESPACE uss_l
OWNER as_admin
LOCATION '/pgdata/11/';
GRANT CREATE ON TABLESPACE uss_t TO as_admin;
GRANT CREATE ON TABLESPACE uss_l TO as_admin;
GRANT CREATE ON TABLESPACE uss_t TO "as_TUZ";
GRANT CREATE ON TABLESPACE uss_l TO "as_TUZ";
Создайте БД:
--выполнять пользователем с правами db_admin (uss)
CREATE DATABASE uss
WITH
OWNER = db_admin
ENCODING = 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
TABLESPACE = uss_l
CONNECTION LIMIT = -1;
GRANT CREATE ON DATABASE uss TO as_admin;
Создайте схемы:
-- Схема для владельца схемы приложения
CREATE SCHEMA uss AUTHORIZATION as_admin;
GRANT ALL ON SCHEMA uss TO as_admin;
GRANT USAGE ON SCHEMA uss TO "as_TUZ";
Предоставьте дефалтовые привилегии на схему для ролей as_admin, as_TUZ:
GRANT USAGE ON SCHEMA uss TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA uss TO "as_TUZ";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA uss TO "as_TUZ";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA uss TO "as_TUZ";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA uss TO "as_TUZ";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA uss TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON SEQUENCES TO"as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT EXECUTE ON FUNCTIONS TO"as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT EXECUTE ON ROUTINES TO"as_TUZ";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT USAGE ON TYPES TO "as_TUZ";
GRANT ALL PRIVILEGES ON SCHEMA uss TO "as_admin";
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA uss TO "as_admin";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA uss TO "as_admin";
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA uss TO "as_admin";
GRANT ALL PRIVILEGES ON ALL ROUTINES IN SCHEMA uss TO "as_admin";
GRANT ALL PRIVILEGES ON ALL PROCEDURES IN SCHEMA uss TO "as_admin";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON TABLES TO"as_admin";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON SEQUENCES TO"as_admin";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON FUNCTIONS TO"as_admin";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON ROUTINES TO"as_admin";
ALTER DEFAULT PRIVILEGES FOR ROLE as_admin IN SCHEMA uss GRANT ALL PRIVILEGES ON TYPES TO"as_admin";
Создайте пользователя системы uss_appl:
--Выполнять пользователем с правами dba
CREATE USER uss_appl WITH
PASSWORD '***************'
LOGIN
NOCREATEDB
NOCREATEROLE
NOSUPERUSER
NOINHERIT
NOREPLICATION
NOBYPASSRLS;
ALTER ROLE uss_appl SET search_path = uss;
ALTER ROLE uss_appl SET role TO "as_TUZ";
GRANT "as_TUZ" TO uss_appl;
Обновление#
Обновление Продукта осуществляется стандартным образом аналогично установке с актуализацией env файлов, в случае необходимости, а также изменением версии релиза в параметрах развертывания задания Jenkins. Установку новой версии Продукта необходимо осуществить согласно описанным шагам в пункте Установка дистрибутива текущего документа. Дополнительных настроек не требуется.
Удаление#
Удаление Docker Images выполняется стандартными механизмами Kubernetes или Red Hat OpenShift 4+ (опционально).
Проверка работоспособности#
В данный момент работоспособность компонент определяется путем запроса на сервере приложения http://host/component-name/actuator/health, (это ссылка, по которой можно получить статус приложения "OK" или не "OK"). Где:
host – адрес сервера;
component-name – имя компонента.
http://auth-api/actuator/health
http://app-api/actuator/health
http://inner-connector/actuator/health
В том числе для проверки работоспособности веб-интерфейса Продукта необходимо:
Успешно войти в АРМ продукта под пользователем, которому назначена определенная роль.
Перейти по всем разделам сайдбара Продукта и убедиться, что при переходе отсутствуют ошибки.
После установки компонентов необходимо проверить отсутствие ошибок в системных журналах подов компонента в среде контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально) и, в случае инсталляции в конфигурации с включенным компонентом Граничный прокси (IGEG) продукта Platform V Synapse Service Mesh (SSM) (является опциональным), проверить в системных журналах подов компонента Граничный прокси (IGEG) продукта Platform V Synapse Service Mesh (SSM) наличие http-запросов со статусом отличным от 200.
Откат#
Для отката Продукта к ранним версиям ПО после установки обновлений необходимо восстановить предыдущие версии Docker Images, либо путем включения предыдущего Replication Controller (предыдущая версия конфигурации в среде контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально)), либо путем наката предыдущего релиза.
Откат к предыдущей версии представляет собой удаление и установку последней стабильной версии (запуск задания Jenkins установки с параметром delete и указанием предыдущей версии релиза).
Для отката необходимо выполнить установку предыдущей стабильной версии в соответствии с инструкцией, пункт Установка дистрибутива настоящего документа.
Возможен откат БД средствами СУБД PostgreSQL (рекомендуется использование продукта Platform V Pangolin SE (PSQ)).
Часто встречающиеся проблемы и пути их устранения#
При ошибке установки SQL-скриптов посмотрите лог сборки в Jenkins на предмет ошибки, проверьте подключение к БД, выполните необходимые правки в common репозитории Pipeline DevOps или репозитории с конфигурацией Продукта, если ошибка связана с настройками, или обратитесь к команде разработки Продукта для внесения изменений в SQL-скрипты и пересборки дистрибутива.
При ошибке установки в среде контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально) посмотрите лог сборки в Jenkins на предмет ошибки, выполните необходимые правки в common репозитории Pipeline DevOps или репозитории с конфигурацией Продукта, если ошибка связана с настройками, или обратитесь к команде разработки Продукта для внесения изменений в SQL-скрипты и пересборки дистрибутива.
При ошибке авторизации убедитесь, что пользователь заведен в компоненте IAM Proxy (AUTH) продукта Platform V IAM SE (IAM).
Чек-лист валидации установки#
При установке необходимо проверить результат выполнения следующих плейбуков:
DB_UPDATE – проверить, что применена последняя миграция скриптов из папки liquibase/scripts дистрибутива;
OPENSHIFT_DEPLOY – проверить, что в проектной области среды контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально) появились ConfigMaps, VirtualService, DeploymentConfig, Service, Route, ServiceEntry, Gateway, DestinationRule и создались POD;
OPENSHIFT_INGRESS_EGRESS_DEPLOY – проверить, что в проектной области среды контейнеризации Kubernetes или Red Hat OpenShift 4+ (опционально), появились POD INGRESS и EGRESS.