Инструкция по развертыванию коробочного решения

Требования

Здесь описаны требования, предъявляемые сервисом ЕСИА Смарт к 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 в ЕСИА Смарт

Схематичная работа 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

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

  1. Сервис ЕСИА Смарт не занимается хранением данных сам по себе, при необходимости что-то сохранить используются базы данных. Таким образом объём диска требуется только для размещения и запуска сервиса и Docker-образов. 

  • Инструкция по развертыванию коробочного решения
  • Требования
  • Системные требования
  • Технические особенности
  • Безопасность
  • Хранение данных
  • Схемы
  • Размещение сервисов на виртуальных машинах
  • Взаимодействие между сервисами
  • Роль Signer в ЕСИА Смарт
  • Конфигурация
  • Конфигурирование хост-машины
  • Конфигурирование сервиса через Ansible inventory
  • Установка ПО