Обзор | On-Premise | 2GIS Documentation
On-Premise

On-Premise

2GIS On-Premise - это набор сервисов, позволяющих разместить продукты 2GIS на собственных площадках.

По сравнению с использованием готовой инфраструктуры 2GIS, On-Premise обладает следующими преимуществами:

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

Сервисы доступны в виде образов Docker. Один сервис может реализовывать несколько продуктов 2GIS (см. таблицу ниже).

Продукт 2GIS Сервис On-Premise
Карты
MapGL JS API MapGL JS API
Tileserver API
Поиск
Places API
Geocoder API
Suggest API
Categories API
Regions API
Catalog API
Sapphire API
Навигация
Directions API
Distance Matrix API
Truck Direction API
Pairs Direction API
Map Matching API
Moses
Isochrone API
Public Transport API
TSP API
Untitled Service

Для запуска сервисов рекомендуются использовать Kubernetes (проверена работа на версии 1.19). Для многих сервисов доступны готовые Helm-чарты, облегчающие развёртывание.

Дополнительно необходимы:

  • S3-хранилище - для скачивания и хранения данных сервисов;
  • Реестр Docker - для хранения образов сервисов и их нативного развёртывания с помощью Kubernetes.

На схеме ниже представлен процесс развёртывания сервисов на площадке клиента.

Артефакты для развёртывания сервисов (образы сервисов и дополнительные данные) формируются на площадке 2GIS и скачиваются с помощью специального приложения в открытый контур клиента. Затем артефакты переносятся силами эксплуатации клиента в закрытый контур и запускаются с использованием Kubernetes.

Внимание!
Процесс переноса артефактов из открытого контура в закрытый (отмечен на схеме красными стрелками) остаётся на усмотрение клиента. В качестве варианта решения может быть рассмотрен запуск дополнительных копий S3-хранилища и реестра Docker и настройка синхронизации между контурами.

Схема развёртывания сервисов

Модули на площадке 2GIS:

  • DGCtl Server - сервер, формирующий и отдающий по запросу артефакты для развёртывания сервисов;
  • S3 Storage - хранилище, в которое сохраняются артефакты;
  • Контроль ключей - приложение для авторизации по ключу клиента.

Модули на площадке клиента:

  • DGCtl Client (2GIS CLI) - приложение, которое получает артефакты от DGCtl Server и сохраняет их в хранилищах на стороне клиента;
  • Docker Registry - реестр Docker, в который сохраняются образы сервисов;
  • S3 Storage - хранилище, в которое сохраняются дополнительные данные для сервисов;
  • Helm - приложение для автоматического развёртывания и обновления сервисов;
  • Импортер данных - приложение, которое скачивает данные из S3 Storage, обрабатывает их и сохраняет в хранилище данных для использования сервисами;
  • Хранилище данных - различные хранилища, используемые сервисами в процессе работы (PostgreSQL, Apache Cassandra и другие).

Алгоритм работы:

  1. Клиент запускает DGCtl Client, который обращается к DGCtl Server для получения артефактов.
  2. DGCtl Server авторизует запрос при помощи модуля «Контроль ключей» и передает клиенту нужные артефакты из S3 Storage на стороне 2GIS.
  3. DGCtl Client принимает артефакты и сохраняет их в соответствующие хранилища на стороне клиента: образы сервисов в Docker Registry, данные для сервисов в S3 Storage.
  4. Клиент запускает приложение Helm, которое разворачивает скачанные образы сервисов при помощи Kubernetes.
  5. Клиент запускает приложение «Импортер данных» (уникальное для каждого сервиса), которое копирует данные из S3 Storage в хранилища, используемые сервисами.

Примечание: Текущая версия 2GIS CLI сохраняет образы сервисов не в реестр Docker, а в то же S3-хранилище, что и данные для сервисов. Поэтому после скачивания образов их нужно вручную загрузить в Docker Registry.

2GIS CLI - это приложение для скачивания и обновления образов On-Premise сервисов и их данных. Приложение распространяется в виде образа Docker, доступного на Docker Hub.

При запуске приложения нужно указать ключ доступа, который связан с индивидуальным набором продуктов 2GIS для скачивания. Чтобы получить ключ, заполните форму по адресу dev.2gis.ru/order и укажите список нужных продуктов 2GIS.

На данный момент поддерживается только скачивание образов сервисов в S3-хранилище (объектное хранилище, совместимое с Amazon Simple Storage Service). Параметры хранилища и ключ доступа для скачивания образов нужно указать в виде YAML-файла.

config.yaml

key: <Ключ для получения On-Premise сервисов>
log-format: <Формат логов: text или json. Логи записываются в stdout.>
storage:
  type: s3
  host: <Адрес хранилища в формате hostname:port>
  bucket: <Название бакета>
  access-key: <Ключ доступа>
  secret-key: <Секретный ключ>

Чтобы скачать образы, нужно вызвать команду pull и указать имя YAML-файла в качестве значения параметра --config:

docker run --rm -v $(pwd)/config.yaml:/config.yaml 2gis/dgctl:v1.2.0 pull --config=/config.yaml

Дополнительно можно указать параметр --workers, чтобы изменить количество потоков скачивания (3 по умолчанию, 8 максимум).

Образы сервисов будут скачаны в указанное S3-хранилище в виде tar-архивов в директорию <название сервиса>/apps/<версия>. Если для работы сервиса требуются дополнительные данные, они будут скачаны в директорию <название сервиса>/data/<версия>.

Скачанные образы нужно затем достать из S3-хранилища в файловую систему (например, при помощи утилиты S3cmd) и загрузить с помощью команды docker load:

docker load -i service.tar

После этого образы нужно отправить в требуемый реестр (Docker Registry) с помощью команд login, tag и push:

docker image tag service:latest localhost:5000/myadmin/service:latest
docker login localhost:5000
docker image push localhost:5000/myadmin/service:latest