Инструкция по развертыванию коробочного решения
Требования
Здесь описаны требования, предъявляемые сервисом ЕСИА Смарт к IT-инфраструктуре, в которую планируется интеграция. Поскольку платформа представляет собой комплексное и конфигурируемое решение, то данные требования носят консультационный характер и могут меняться в зависимости от конкретной выбранной схемы размещения или иных условий.
Системные требования
Рекомедуемое ПО:
- docker - не ниже 20.10.16 (рекомендуемое 24.0.2 (compose встроен));
- docker-compose (отдельный) - не ниже 1.29.2 (рекомндуемое 2.19.0);
- ОС - Linux.
Поскольку требования к аппаратной части сильно зависят от планируемой загрузки (и выбранной схемы размещения), то тут будут приведены минимальные характеристики.
Минимальные требования к аппаратной части:
- 2CPU;
- 4GB Memory;
- 100GB Disk 1.
Минимальные требования к аппаратной части БД:
- 2CPU;
- 4GB Memory.
Технические особенности
Программное обеспечение ЕСИА Смарт
поставляется в виде архива с Ansible скриптами.
Ansible - это система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения.
При развертывании используется Nomad.
Nomad это система оркестрации docker контейнеров от HashiCorp, написанная на Golang.
Безопасность
Требования к безопасности в существенной степени определяются окружением клиента и принятыми внутренними регламентами, уставными документами и иными нормативными и законодательными актами.
Хранение данных
ЕСИА Смарт
не хранит данные локально и представляет из себя read-only
контейнеры. Все данные сохраняются в строго определенных местах: PostgreSQL
и Redis
, которые в свою очередь не являются частью ПО и могут быть настроены и запущены силами специалистов заказчика согласно установленным нормам.
Кроме того, ЕСИА Смарт
спроектирован так, чтобы во время работы не сохранять персональные данные
, с которыми он работает, а хранить лишь информацию о выполненной работе - какой запрос как именно был обработан.
Схемы
Размещение сервисов на виртуальных машинах
На виртуальных машинах, со схем выше, так же запущены consul registrator и nomad client.
Взаимодействие между сервисами
ЕСИА Смарт, Signer и базы данных
Роль Signer в ЕСИА Смарт
Схематичная работа Signer в процессе запроса к ЕСИА
Конфигурация
Конфигурирование хост-машины
Для запуска ЕСИА Смарт
можно использовать современную ОС семейства Linux. Тем не менее есть примерные требования, которые гарантируют нормальную работу и простоту запуска, поскольку они используются при разработке и тестировании платформы. Такие требования являются следующими:
- ОС: Debian 9.5 (x86-64) или выше, Ubuntu 18.04 (x86-64) или выше;
- Наличие на машине доступа к sentinel.harbor.rnds.pro по протоколу HTTPS на порт 443 для скачивания Docker образов сервисов;
- Ansible версии не менее 2.9;
- Плагин для работы с докером в Ansible;
- Python 3.
Конфигурирование сервиса через Ansible inventory
Конфигурирование сервиса выполняется через Ansible inventory. Перед стартом развертывания сервиса необходимо подготовить следующие данные и заполнить их в файле инвентаря по пути inventory/box_single_host.ini: (см приложение А):
-
доменное имя, по которому будет доступен
ЕСИА Смарт
;По доменному имени ЕСИА Смарт должен быть доступен из сети интернет (порты 443 и 80 должны быть перенаправлены на машину установки)
- данные для подключения к базе данных PostgreSQL:
- database_host - IP Address;
- database_port - IP Port;
- database_username - User;
- database_password - Password;
- приложение использует 2 базы данных:
- esia_default_db - Имя технической базы, необходимой для работы фоновых задач;
- esia_main_db_ - Имя основной базы, необходимой для работы приложения;
- сервис Redis:
- redis_host - IP Address;
- redis_port - IP Port.
Установка ПО
Архив Ansible скриптов содержит команды для установки всех необходимых зависимостей и инфраструктуры для работы ЕСИА Смарта
.
Ниже приведен список всех команд в правильной последовательности для успешного разворачивания коробочного решения:
1. Подготовка хост системы перед разворачиванием приложения
Перед установкой системы на хост, необходимо произвести первоначальную настройку ОС, а также файл инвентаря по пути inventory/box_single_host.ini
- Убедиться в правильной установке времени и часового пояса системы.
-
Обновить систему пакетным менеджером до последней стабильной версии:
apt-get update && apt-get upgrade
2.1. Устанавливаем приложениe Docker на хост
ansible-playbook playbook/system/docker.yml -i inventory/box_single_host.ini -l all -D
2.2. Устанавливаем Consul (service discovery) на хост
ansible-playbook playbook/infra/consul.yml -i inventory/box_single_host.ini -D
В случае отсутствия развернутых на стороне заказчика сервисов Redis и PostgreSQL перед дальнейшей установкой (для тестирования работоспособности сервиса) необходимо их установить. ⚠️ Важно: База данных PostgreSQL и Redis поставляемая в коробочном решении не может применяться в боевом режиме. Весь риск и последствия использования тестовых баз данных лежат на заказчике.
ansible-playbook playbook/infra/db.yml -i inventory/box_single_host.ini
ansible-playbook playbook/infra/redis.yml -i inventory/box_single_host.ini
2.3. Устанавливаем Nomad (система оркестрации)
ansible-playbook playbook/nomad.yml -i inventory/box_single_host.ini -D
Убеждаемся что Nomad запущен.
systemctl status nomad
В случае отсутствия ошибок запуска сервиса, на порту 4646 хоста установки должен появиться WEB интерфейс Nomad.
2.4. Ставим Traefic (Web Proxy)
ansible-playbook playbook/infra/traefik-nomad.yml -i inventory/box_single_host.ini -D
2.5. Конфигурируем Tenats
ansible-playbook playbook/add-tenants.yml -i inventory/box_single_host.ini -D
2.6. Ставим SentinelApp
ansible-playbook playbook/sentinel-nomad.yml -i inventory/box_single_host.ini -e replicas=1 -e deploy_tag=latest -D
📝 Важно! После выполнения команды установки SentinelApp, необходимо выждать время необходимое для запуска сервисов.
2.7. Ставим Jigner (сервис для подписания запросов выданным сертификатом)
ansible-playbook playbook/jigner-nomad-box.yml -i inventory/box_single_host.ini -D
Постнастройка и проверка работы сервиса изложена в документации
-
Сервис
ЕСИА Смарт
не занимается хранением данных сам по себе, при необходимости что-то сохранить используются базы данных. Таким образом объём диска требуется только для размещения и запуска сервиса иDocker-
образов. ↩