Руководство по установке#
Термины и определения#
Термин/аббревиатура |
Определение |
|---|---|
API |
Application Programming Interface, программный интерфейс приложения |
URL |
Uniform Resource Locator, унифицированный адрес ресурса |
Platform V Synapse Service Mesh / SSM |
Программный продукт на базе Istio SE, обеспечивающий возможность создания сервисной сети поверх Платформенной в Kubernetes |
Istio SE |
Настраиваемая сервисная сетка с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в кластере Kubernetes |
Контрольная панель |
Проект, где запущены управляющие приложения SSM |
Платформа |
Платформа оркестрации приложений с средствами автоматизации и управления на основе политик, например Kubernetes |
Граничный прокси/ IGEG |
Компонент Граничный прокси продукта Platform V Synapse Service Mesh |
Request Validator/ REQV |
Компонент Request Validator продукта Platform V Synapse Service Mesh |
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Категория ПО |
Обязательность установки (да/нет) |
Наименование ПО |
Версия |
Продукт, функциональная совместимость с которым подтверждена |
Назначение категории ПО |
|---|---|---|---|---|---|
Операционная система |
Да |
Alt Linux SP8 |
10.0 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована Операционная система (INST) – Platform V SberLinux OS Server, см. раздел «Платформенные зависимости» |
ОС контейнеров для запуска модулей компонента |
Red Hat Enterprise Linux |
8.0 |
Опционально |
|||
Платформа для разработки, доставки и запуска контейнерных приложений |
Да |
19.03.14 и выше |
Рекомендовано |
Платформа контейнеризации с открытым исходным кодом |
|
Среда контейнеризации |
Нет |
Red Hat OpenShift |
4.6 и выше |
Опционально |
Платформа контейнеризации для запуска компонентов сервиса |
Среда оркестрации контейнеров |
Да |
1.19 и выше |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости» |
Открытое программное обеспечение для оркестрации контейнеризированных приложений |
|
Сервис интеграции и оркестрации микросервисов в облаке |
Нет |
RedHat Service Mesh |
2.0.x. и выше |
Опционально |
Service Mesh, базирующийся на Istio (istio.io) c расширенной функциональностью под вендорской лицензией RedHat |
1.6.x. и выше |
Опционально. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости» |
Сервис интеграции микросервисов в облаке |
|||
Система управления секретами |
Нет |
Secret Management System |
1.7.0 и выше |
Рекомендовано |
Система управления аутентификационными данными сервисных аккаунтов или учетных записей |
Сервис централизованного хранения репозиториев артефактов (хранилище артефактов) |
Да |
3.42.0 |
Рекомендовано |
Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО |
|
Nexus Repository Manager PRO |
3.43.0 |
Опционально |
|||
Nexus Repository Manager OSS |
3.43.0 |
Опционально |
|||
Сервис централизованного хранения репозиториев исходного кода |
Да |
15.7 и выше |
Рекомендовано |
Хранение конфигураций при автоматизированной установке |
|
7.6.7 и выше |
Опционально |
||||
Иное |
Нет |
Hashicorp Vault |
1.10 и выше |
Опционально |
Средство хранения чувствительных данных |
Примечание:
*
Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).
Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).
**
Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.
Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.
Платформенные зависимости#
Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:
Наименование продукта |
Код |
Версия продукта |
Код и наименование компонента |
Обязательность установки (да/нет) |
Описание |
Аналог других производителей |
|---|---|---|---|---|---|---|
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
IGEG Граничный прокси |
Нет |
Граничный прокси из состава продукта Platform V Synapse Service Mesh, предназначен для обеспечения управляемого вызова интеграционных сервисов прикладной части в проекте Kubernetes. Компонент REQV добавляется в один деплоймент к IGEG |
- |
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
SVPX Сервисный прокси |
Нет |
Предоставление базовых интеграционных операций прикладной части интеграционного сервиса |
|
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
POLM Управление политиками |
Да |
Панель управления с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в среде контейнеризации Kubernetes |
|
Platform V Synapse Service Mesh |
SSM |
3.9 и выше |
SMDL DevOps инструменты Service Mesh |
Нет |
Сборка, установка и администрирование сервисов на Synapse |
|
Platform V Audit SE |
AUD |
2.3 |
AUDT Аудит |
Нет |
Platform V Audit SE (AUD) предназначен для регистрации и протоколирования действий пользователей при работе в автоматизированных системах. Компонент REQV отправляет логи в систему для последующего хранения и анализа |
- |
Platform V SberLinux OS Server |
SLO |
8.7 |
INST Операционная система |
Нет |
ОС контейнеров для запуска модулей компонента |
ОС Альт 8 СП |
Platform V DropApp |
K8S |
1.1 и выше |
K8SC K8S Core |
Нет |
Дистрибутив Kubernetes со встроенными механизмами мультитенантности и бессерверным исполнением |
Kubernetes, Red Hat OpenShift Container Platform |
Примечание:
***
Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).
Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).
**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей.
Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».
Аппаратные требования#
Минимальные ресурсы, необходимые для режимов работы REQV:
Контейнер |
Режим работы приложения |
CPU Request |
Memory Request |
CPU Limit |
Memory Limit |
|---|---|---|---|---|---|
istio-proxy |
Ingress Gateway |
300 |
300 |
300 |
300 |
istio-proxy |
Egress Gateway |
300 |
300 |
300 |
300 |
Компонент REQV |
sidecar/Отдельный сервис |
300 |
300 |
300 |
300 |
Количество задействованных реплик компонент IGEG и прикладных приложений зависит от объема принимаемых данных.
Состав дистрибутива#
Дистрибутив содержит следующие конфигурации, в директории templates, объединенные в файлы шаблонов Helm:
Элемент дистрибутива |
Описание |
|---|---|
ConfigMap-config.yml |
validator-config - Конфигурация компонента |
ConfigMap-wasm.yml |
validator-wasm - плагин Envoy для маршрутизации запросов |
Configmap-schemas.yml |
validator-schemas - Конфигурация схем валидации |
Deployment.yml |
ingressgateway - Деплоймент Ingress и REQV Sidecar |
EnvoyFilter-ingress.yml |
validator-ingress - Конфигурация IGEG Ingress для валидации запросов |
EnvoyFilter-egress.yml |
validator-egress - Конфигурация IGEG Egress для валидации запросов |
Gateway.yml |
ingressgateway-gw - Конфигурация для IGEG |
Service-ingress.yml |
ingressgateway - Конфигурация сервиса для деплоймента |
VirtualService.yml |
validator-ingress - Конфигурация маршрутизации трафика внутри неймспейса |
Выбор способа установки#
Для компонента REQV рекомендована ручная установка, однако при необходимости и наличию компонента SMDL продукта SSM - установка может быть осуществлена с помощью Jenkins job SynapseInstallerKubernetes из дистрибутива компонента SMDL. Для использования job необходимо ознакомиться с документацией к компоненту SMDL, в документе руководстве оператора, далее перейти в раздел pipelines, и выбрать папку SynapseInstaller.
Подготовка окружения#
Для установки программного компонента Request validator (далее — Валидатор запроса) должно быть выполнено следующее:
Развернут и настроен кластер Платформы (Kubernetes 1.19 и выше) и SSM;
Развернут и настроен компонент POLM, подробное описание по настройке управлению политиками описано в документации на компонент POLM программного продукта SSM Platform V Synapse Service Mesh.
Развернут и настроен компонент SVPX, подробное описание по настройке сервисного прокси, описано в документации на компонент SVPX программного продукта SSM Platform V Synapse Service Mesh.
В кластере Kubernetes должен быть развернут отдельный проект для разработки приложений.
В проекте создана учетная запись с правами на загрузку артефактов
Docker-образ валидатор запроса размещен в целевом Docker-репозитории.
Настроен доступ в Docker-репозиторий для публикации образов разрабатываемых приложений.
В проект добавлен секрет для загрузки docker-образов из целевого Docker-репозитория.
Для доступа в Kubernetes c использованием консоли, на рабочем месте должен быть установлен клиент Kubernetes (kubectl).
При установке в системе контейнеризации все сертификаты, пароли и иная чувствительная информация хранится в одном из типов хранилищ;
в секретах системы управления контейнерами
в файловой системе pod и получены из внешней системы хранения секретов Secret Management System.
Для работы компонента на целевых стендах рекомендуется использование mTLS (версия 1.2).
Валидатор запросов поставляется в виде собранного docker-образа, размещаемого в целевом docker-репозитории, и предназначается для использования в составе прикладных интеграционных решений, разрабатываемых продуктовыми командами. Для этого команды реализующие прикладную интеграцию выпускают дистрибутив, содержащий набор конфигурационных артефактов Kubernetes, обеспечивающих развертывание и настройку отдельного экземпляра Валидатора запросов под требования этой интеграции.
Перед установкой проверьте соблюдение следующих условий:
При работе компоненты REQV с IGEG требуется наличие компонент Platform V Synapse Service Mesh: IGEG, SVPX;
В кластере создан проект в котором будет разворачиваться валидатор запросов. При работе компоненты REQV с IGEG требуется подключить проект к контрольной панели SSM;
В проекте создана учетная запись с правами на загрузку артефактов (администратор проекта);
Получена ссылка на целевой Docker-репозиторий;
В проект добавлен секрет для загрузки docker-образов из целевого Docker-репозитория;*
В проекте имеются свободные ресурсы по лимитам и реквестам не менее, чем зарезервировано в конфигурационных артефактах;
При установке с использованием консоли, на рабочем месте должен быть установлен клиент Helm и клиент Kubernetes (kubectl).
Установка#
Ручная установка сервиса#
Установка сервиса валидации. В зависимости от целей бизнес-сервиса сервис валидации может быть установлен в следующих режимах:
Работа в режиме sidecar в Ingress Gateway Deployment;
Работа в режима sidecar в Egress Gateway Deployment;
Работа в режиме отдельного сервиса Валидации.
Для установки компонента выполните следующие действия:
Создайте директорию установки.
Шаг |
Действия |
Описание |
|---|---|---|
Создайте директорию для установки |
Создайте папку. Пример: validator |
|
Разархивируйте файлы |
Распакуйте в созданную папку архив с конфигурационными артефактами |
|
Соберите докер образ для установки приложения |
Выполните команду находясь в корне распакованного архива: docker build . -t test.ru/reqv/reqv:0.1.0.1 -f extra/Dockerfile |
|
Загрузите полученный докер образ в реджестри |
Выполните команду: docker push test.ru/reqv/reqv:0.1.0.1 |
Подключитесь к проекту.
Для подключения через консоль Платформы:
Шаг |
Действия |
Описание |
|---|---|---|
Установка в Kubernetes: Войдите в консольного клиента платформы |
Введите в окне командной строки в приглашении команды: kubectl login <api-uri кластера> (затем свои учетные данные для входа в Kubernetes) |
|
Установка в Kubernetes: Установка проекта по умолчанию |
Введите команду: kubectl config set-context --current --namespace=<имя неймспейса установки> |
Настройка стендозависимых параметров
Для выбора режима установки необходимо в файле helm/sidecar-validator/reqv-pao/values.yaml отредактировать следующие параметры:
is_istio_se: true - если проект подключен к Istio SE - true. Если проект подключен к RHSM - false
common:
registry: repositoty@tag адрес репозитория с образом валидатора
proxy_image: repositoty@tag адрес репозитория с образом istio-proxy если проект подключен к RHSM
proxy_image_istio_se: repositoty@tag адрес репозитория с образом istio-proxy если проект подключен к Istio SE
controlPanel: "istio-system" - имя контрольной панели к которой подключен проект
istioServiceName: "istiod-istio-system" - имя сервиса istiod
project_name: istio-test - имя проека куда производится установка
include:
ingress: true - если установка в режиме sidecar Ingress Gateway, false - если установка в режиме sidecar Ingress Gateway не требуется
egress: true - если установка в режиме sidecar Egress Gateway, false - если установка в режиме sidecar Egress Gateway не требуется
standalone: true - если требуется установка в режиме отдельного сервиса, false - если не требуется
test_service: true - если требуется установка сервиса "заглушки", false - если не требуется
test_service_image:
repository: repositoty@tag адрес репозитория с образом
jwt_polisy: "third-party-jwt" указать jwt_polisy - third-party-jwt или first-party-jwt
audit: если true, то сообщения в аудит отправляются по HTTPs через egress
HTTPs: true
service_port: 8081 указать port для сервиса аудита
host: example.ru указать host аудита
если HTTPs отключен (.Values.audit.https: false) и требуется отправка напрямую в аудит, указываем URL аудита url: http://audit.ru
когда HTTPs включен (.Values.audit.https: true) если установка в режиме sidecar Ingress Gateway (.Values.include.ingress) или в режиме отдельного сервиса (.Values.include.standalone), за место указываем egress-audit-svc-reqv
если установка в режиме sidecar Egress Gateway (.Values.include.еgress), за место указываем reqv-egressgateway
url: http://.<class 'jinja2.utils.Namespace'>.svc:8081
secman:
enabled: true ниже пример заполненных аннотаций secman. Приведенные значения заменить на свои: SYNAPSE/KV/REQV - путь к сертификатам <пространство в хранилище>/<имя секрета> synapse - роль в SecMan, получаемая при подключении к хранилищу
common:
annotations:
namespace: "''"
role: synapse
authPath: auth/synapse
mTLS:
enabled: true
annotations:
template_tls_key: |
template_ca_crt: |
template_tls_crt: |
_если сообщение требуется отправить в аудит через egress, добавятся аннотации для подгрузки сертификатов
audit:
enabled: true
annotations:
template_audit_tls_key: |
template_audit_ca_crt: |
template_audit_tls_crt: |
Установите валидатор.
Для установки через консольного клиента платформы
Шаг |
Действия |
Описание |
|---|---|---|
Установка конфигурации с клиентом Helm |
Перейдите в каталог helm/sidecar-validator/reqv-pao. В консоли выполните команду: helm install reqv . |
Подробнее о настройке конфигурационного файла описано в документе Руководство по системном администрированию раздел Общая настройка приложения в ConfigMap.
Настройка интеграции#
Настройка интеграции с компонентом IGEG
Описание и настройка интеграции компонента REQV с IGEG описаны в данном руководстве, раздел «Ручная установка сервиса».
Настройка интеграции с компонентом AUDT
Описание и настройка интеграции компонента REQV с AUDT описаны в Руководство по системному администрированию раздел «Базовое конфигурирование».
Обновление#
Для обновления версии сервиса валидации необходимо обновить Deployment, sidecar которого является REQV, либо деплоймента отдельного сервиса REQV. Для этого поменять версию docker-образа сервиса в разделе containers на новую или установить релиз с обновленной версией. Артефакты ConfigMap и EnvoyFilter являются конфигурационными для сервиса, в котором инжектирован REQV, и в случае обновления ставятся из релиза с обновленной версией компоненты REQV. Удаление старой версии перед обновлением не требуется.
Для обновления выполните следующие шаги:
Создайте директорию установки.
Шаг |
Действия |
|---|---|
Создайте директорию для установки |
Создайте папку. Пример: reqv |
Разархивируйте файлы |
Распакуйте в созданную папку архив с конфигурационными артефактами новой версии валидатора |
Подключитесь к проекту.
Для подключения через консоль Платформы проделать шаги раздела «Ручная установка сервиса» пункт 2 данного документа
Загрузите новую версию. Для обновления используется стратегия rolling:
Загрузите новую версию через консоль Платформы, проделав шаги раздела «Ручная установка сервиса» пункт 3,4 данного документа и поменяв версию образа валидатора.
Если при установке использовался Helm, то выполните команду "helm upgrade reqv", что запустит обновление пакета с перезагрузкой pods приложения.
Удаление#
Для удаления компонента необходимо выполнить команду:
Перейдите в каталог helm/sidecar-validator/reqv-pao. Выполните в консоли команду: "helm remove reqv."
Проверка работоспособности#
Проверьте pods сервиса валидации через веб-интерфейс платформы оркестарции (Kubernetes). Pod должен быть в статусе "Running" Данный способ подходит для всех режимов работы REQV.
Проверка корректности работы:
Выберите на вкладке Pods один из pods и кликните правой кнопкой мыши.
Выберите на открывшейся странице вкладку Logs. Выберите контейнер валидатора запросов и убедитесь, что отсутствуют ошибки в консольном выводе.
Валидация при развертывании в Граничном прокси (IGEG).
Проверяемые функции:
Прием сообщений от граничных прокси по протоколу REST
Валидация тела сообщения согласно схемам валидации форматов XML и JSON
Логирование событий приема и валидации сообщений
Действия пользователя |
Ожидаемый результат |
|---|---|
1. Выполните запрос JSON в сервис заглушки с промежуточным прохождением валидации в граничном прокси: |
Получен ответ от сервиса заглушки с кодом HTTP Status 200 |
2. Выполните запрос XML в сервис заглушки с промежуточным прохождением валидации в граничном прокси: |
Получен ответ от сервиса заглушки с кодом HTTP Status 200 |
3. Проверка выполняется путем открытия логов сервиса через веб-консоль: Pods → Ingress Gateway → Logs |
В логах сервиса присутствует запись в виде: "запрос 'POST:/ping' прошел валидацию…" |
4. Выполните запрос JSON в сервис заглушки с промежуточным прохождением валидации в граничном прокси без обязательно поля "last_updated": |
В логах сервиса присутствует запись в виде: запрос 'POST:/ping' не прошел валидацию |
5. Выполните запрос XML в сервис заглушки с промежуточным прохождением валидации в граничном прокси без обязательно поля "street": |
В логах сервиса присутствует запись в виде: запрос 'POST:/ping' не прошел валидацию |
Проверка интеграции с продуктом Platform V Audit SE (AUDT) выполняется в самом продукте AUDT.
###Проверка работоспособности компонента REQV, собранного на SberLinux в DropApp.
а) Откройте веб-терминал DropApp
б) Выберите namespace с развернутым компонентом REQV, в соответствии с инструкцией описанной в документе Руководство по установке
в) Откройте раздел деплоймент и найдите деплоймент компонента REQV
г) Перейдите на вкладку pods и убедитесь, что все pods в статусе Running
д) Откройте запущенный pod компонента REQV
е) Перейдите на вкладку терминал и введите команду cat /etc/os-release - в выводе команды присутствует информация о том, что REQV работает на базовом образе SberLinux.
Проверка наличия и работоспособности Secret Management System определяется наличием в развертываемом компоненте IGEG контейнера с именем vault.
Откат#
Для отката до предыдущей версии сервиса валидации необходимо выполнить команду: helm rollback, находясь в директории шаблонов из раздела «Ручная установка сервиса», пункт 3 данного документа. Удаление текущей версии перед откатом до предыдущей версии не требуется. Максимальное количество версий для отката 2.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Пути решения |
|---|---|
Ошибки добавления схем валидации в прикладной сервис |
Необходимо проверить способ добавления схем и их путей в контейнер сервиса Валидации в Deployment конфигурации |
Отсутствие Ingress Gateway/Egress Gateway в проекте |
Если в проекте отсутствуют экземпляры компонента IGEG, то необходимо проверить наличие развернутого компонента POLM и создать Deployment с Ingress Gateway/Egress Gateway с подключением к контрольной панели |
Чек-лист валидации установки#
Проверка наличия sidecar с сервисом валидации. Открыть Deployment Ingress Gateway/Egress Gateway, либо отдельный сервис REQV, в режиме просмотра и найти работающий контейнер приложения валидации.
Проверка конфигурации сервиса валидации. Открыть раздел ConfigMaps платформы Kubernetes и найти конфигурации с именами «validator-config» и «validator-schemas».
Проверить наличие артефактов с типом EnvoyFilter с именем «validator-ingress» и/или «validator-egress» в случае установки REQV в режиме Ingress/Egress.
Проверка |
Действия |
|---|---|
Все артефакты компонента загружены в проект |
Найдите по списку артефактов все загруженные артефакты в проект REQV в консоли Kubernetes |
Прохождение внешнего траффика с пользовательской конфигурацией через IGEG и SVPX |
После предыдущей проверки перейти в pod ingress gateway и убедиться что присутсвуют записи о входящем запросе |
В проекте namespace присутствует запущенный и работоспособный ingress gateway (IGEG) |
Перейдите во вкладку Workload/Deployment namespace REQV, найдите соответсвующий деплоймент |
Отсутствие ошибок в логах контейнеров |
Проверьте pod компонента REQV на отсутствие ошибок |
Прохождение внешнего траффика с пользовательской конфигурацией через IGEG и SVPX |
Перейдите после предыдущей проверки в pod ingress gateway и убедитесь, что присутствуют записи о входящем запросе |
Отключен режим debug во всех используемых компонентах |
Проверьте отсутствие включенного режима debug |
Успешно стартовал контейнеры SVPX в pod REQV |
Откройте последовательно вкладку с логами pods REQV и убедитесь, что в них запущен контейнер istioproxy, и в логах присутствуют строка о успешном старте |
Проверка наличия и работоспособности Secret Management System |
Определяется наличием в развертываемом компоненте IGEG контейнера с именем vault |
Аудит (AUDT) Platform V Audit SE (AUD) |
1. Выполните вызов API, использующего метод запроса POST |