GIS-платформа | Программный комплекс | 2GIS Documentation
Программный комплексbeta

GIS-платформа

GIS-платформа — решение по работе с ГИС, реализованное в виде веб-приложения. В нем можно выполнять все задачи производственного цикла, связанные с работой над растровыми и векторными геопространственными слоями (geospatial layers): управление и обмен слоями, их импорт и экспорт, создание и редактирование слоев, настройку визуализации. Также с помощью GIS-платформы можно решать задачи, связанные с аналитикой геоданных, используя слои и встроенные инструменты для гео-аналитики.

GIS-платформа состоит из фронтенда и бэкенда, которые взаимодействуют между собой через RESTful API. Все коммуникации защищены с помощью SSL (иными словами, обмен данными идет по HTTPS).

Архитектура GIS-платформы

Фронтенд используется для взаимодействия с GIS-платформой.

Он предоставляет доступ к:

  1. Веб-интерфейсу ГИС-инструментов, позволяющих работать с геопространственными слоями: изменять слои, править информацию в слоях (геометрию и атрибуты), обрабатывать и анализировать геоданные (строить буферные зоны и зоны достижимости для объектов, выполнять пространственные запросы), настраивать визуализации, экспортировать слои в виде фигур, в GeoJSON, CSV и других форматах.
  2. Веб-интерфейсу администратора для управления конфигурацией сервиса, пользователями и ролями.

Фронтенд аутентифицирует пользователей по логину и паролю.

SPCore

Бэкенд-сервис SPCore реализует всю необходимую логику для работы с геопространственными слоями. Фронтенд в основном взаимодействует именно с этим сервисом.

SPCore использует:

  • Apache ZooKeeper в качестве очереди сообщений, необходимой при выполнении длительных задач (например, при расчете буферных зон).

  • Другие развернутые сервисы программного комплекса 2ГИС:

    • Сервис карт: растровое Tiles API используется для получения базовой карты 2ГИС (2GIS Basemap). Также ГИС-инструменты используют обратный прокси, получающий данные о пробках, чтобы с его помощью отрисовывать данные о пробках на слое карты.

    • Сервис поиска: Geocoder API используется для работы с геокодированными данными. Suggest API используется для формирования подсказок о различных объектах на слое карты.

    • Сервис навигации: Isochrone API используется через Navi-Front для определения области на карте, которая достижима от указанной точки за указанное время на автомобиле.

    • Прокси для пробок.

      Если этот сервис развернут и настроен, чтобы получать данные о пробках в реальном времени с серверов 2ГИС, то конечные пользователи и приложения затем могут с помощью GIS Platform отобразить пробки в виде цветных линий на отдельном слое карты. Для предоставления такой возможности SPCore взаимодействует с прокси для пробок.

    GIS-платформа использует данные от этого сервиса, чтобы отобразить пробки в виде цветных линий на отдельном слое карты.

SPCore хранит:

  • Растровые изображения — в S3-совместимом хранилище. Это позволяет, например, хранить тайлированные спутниковые снимки для дальнейшего использования.
  • Информацию о пользователях, ролях, слоях с данными и текущей конфигурации — в базах данных PostgreSQL.

ZooKeeper

Бэкенд-сервис ZooKeeper используется в качестве очереди сообщений, необходимой при выполнении длительных задач (например, при расчете буферных зон).

Общая инфраструктура:

  • S3-совместимое хранилище для растровых изображений. Для GIS-платформы необходимо два бакета в этом хранилище: для растровых изображений и для эскизов этих изображений, отображаемых при предпросмотре (previews).
  • Хранилище PostgreSQL для данных GIS-платформы. Требуется PostgreSQL 12+ с расширением PostGIS v3.

Сервисы программного комплекса 2ГИС:

Программное обеспечение на машине, которая используется для развертывания сервисов GIS-платформы:

Детальные требования для каждого сервиса описаны в обзорном документе. Дополнительную информацию можно найти в разделе Что нужно учесть перед развертыванием этого документа.

Важное примечание:

Все шаги, описанные ниже, должны выполняться с машины, на которую установлены Helm и необходимое программное обеспечение. Также с этой машины должен быть доступ к вашему кластеру Kubernetes.

Выполните следующие шаги:

  1. Выполните общие шаги по развертыванию.

  2. Разверните прокси для пробок, если он ещё не развёрнут (см. раздел Требования).

  3. Создайте конфигурационный файл values-gis-platform.yaml:

    dgctlDockerRegistry: <Docker Registry hostname and port>/2gis-on-premise
    
    external_hostname: <FQDN of the GIS Platform service>
    
    spcore:
        admin:
            email: <email of the administrator user>
            password: <password for the administrator user>
    
        catalog:
            url: <http(s)://FQDN of Catalog API endpoint>
            key: <a dedicated API service key to access Search APIs>
    
        jwt:
            token_admin: <token for the administrator user>
            token_key: <token for JWT cookies generation>
    
        pg:
            host: <hostname or IP address of PostgreSQL>
            port: <PostgreSQL port>
            user: <user name>
            password: <password>
            dbname: <database name>
    
        replicaCount: <number of the SPCore service replicas>
    
        resources:
            requests:
                cpu: 800m
                memory: 4096Mi
            limits:
                cpu: 800m
                memory: 4096Mi
    
        s3:
            access_key: <S3 access key>
            secret_key: <S3 secret key>
            host: <S3-compatible storage endpoint>
            region: <S3 region>
            bucket: <bucket for raster images>
            preview_bucket: <bucket for previews>
    
    zookeeper:
        replicaCount: <number of the ZooKeeper service replicas, from 1 to 3>
    
        resources:
            requests:
                cpu: 300m
                memory: 1024Mi
            limits:
                cpu: 500m
                memory: 2048Mi
    
    portal:
        replicaCount: <number of Portal service replicas>
    
        max_body_size: 100m
    
        resources:
            requests:
                cpu: 100m
                memory: 512Mi
            limits:
                cpu: 100m
                memory: 512Mi
    
    ingress:
        hosts:
            - host: gis-platform.host
    

    Где:

    1. dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС.

    2. external_hostname: FQDN для сервисов GIS-платформы. Веб-интерфейсы будут доступны по этому FQDN через HTTPS.

    3. spcore: настройки бэкенд-сервиса SPCore.

      1. admin: учетные данные администратора.

        1. email: email администратора.
        2. password: пароль администратора.
      2. catalog: настройки доступа к сервису Catalog API. Этот сервис обеспечивает взаимодействие с Geocoder API и Suggest API.

        1. url: FQDN эндпоинта Catalog API. Значение должно быть задано в формате http(s)://catalog-api.host, без слеша / в конце. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
        2. key: отдельный сервисный API-ключ для доступа к сервисам поиска. Подробнее см. в документации сервиса API Keys.
      3. jwt: настройки генерации веб-токенов JSON (JSON Web Tokens, JWT).

        1. token_admin: токен администратора, с которым будет производиться вход в веб-интерфейс администратора. Значением должна быть случайная строка не короче 32 символов.
        2. token_key: токен для генерации JWT cookies. Token for JWT cookies generation. Значением должна быть случайная строка не короче 32 символов.
      4. pg: настройки доступа к серверу PostgreSQL.

        1. host: имя хоста или IP-адрес сервера.
        2. port: порт, на котором слушает сервер. Например, 5432.
        3. user and password: реквизиты для доступа к базе данных, указанной в параметре dbname. Пользователь должен быть либо владельцем этой базы данных, либо суперпользователем.
        4. dbname: имя базы данных.
      5. replicaCount: число реплик сервиса SPCore.

      6. resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.

      7. s3: настройки S3-совместимого хранилища (для хранения растровых изображений).

        1. access_key: идентификатор ключа (S3 access key).
        2. secret_key: секретный ключ (S3 secret key).
        3. host: FQDN эндпоинта S3-совместимого хранилища.
        4. region: регион S3.
        5. bucket: имя бакета для хранения растровых изображений.
        6. preview_bucket: имя бакета для хранения эскизов этих изображений.
    4. zookeeper: настройки бэкенд-сервиса ZooKeeper.

      1. replicaCount: число реплик сервиса ZooKeeper. Значение этой настройки может задаваться в пределах от 1 до 3.
      2. resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.
    5. portal: настройки фронтенд-сервиса Portal.

      1. replicaCount: число реплик сервиса Portal.
      2. max_body_size: максимальный размер файла, который можно загрузить через веб-интерфейс Portal.
      3. resources: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.
    6. ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметре ingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.

  4. Выполните начальное развертывание GIS-платформы.

    В результате этой операции произойдет следующее:

    1. Значение настройки spcore.replicaCount будет принудительно установлено равным 1.
    2. Все сервисы будут сброшены до изначального состояния.
    3. Будут инициализированы требуемые структуры данных и будет выполнена миграция баз данных.

    Выполните первое развертывание с помощью Helm, используя подготовленный конфигурационный файлvalues-gis-platform.yaml:

    helm upgrade --install --version=1.0.3 --atomic --wait-for-jobs --values ./values-gis-platform.yaml gis-platform 2gis-on-premise/gis-platform --set spcore.reset_cluster=true
    

    Дождитесь завершения операции. Когда первое развертывание будет завершено, в логах пода spcore будут присутствовать похожие сообщения:

    Now listening on: http://[::]:5051
    Application started. Press Ctrl+C to shut down.
    
  5. Выполните начальную конфигурацию GIS-платформы:

    1. Задайте значения следующих переменных среды окружения Bash:

      export GIS_PLATFORM_URL=<external_hostname from values-gis-platform.yaml>
      export GIS_PLATFORM_PASS=<spcore.admin.password from values-gis-platform.yaml>
      export GIS_PLATFORM_TILES_API=<http(s)://TILES_API_FQDN>
      export GIS_PLATFORM_TRAFFIC_API=<http(s)://TRAFFIC_PROXY_FQDN>
      
    2. Запустите конфигурационный скрипт:

      helm pull --untar 2gis-on-premise/gis-platform && \
      cd gis-platform/gis-platform-config && \
      ./configure.sh
      

      Дождитесь завершения работы скрипта.

      Примечание:

      Начиная с версии 1.1.0 сервисов программного комплекса 2ГИС, можно передать скрипту configure.sh аргумент -k.

      Этот аргумент позволяет пропустить проверку безопасности соединения при подключении по HTTPS. Таким образом, любые возможные ошибки, связанные с использованием недоверенных SSL-сертификатов (например, самоподписанных сертификатов) сервисами GIS-платформы, будут проигнорированы.

  6. Проверьте работоспособность сервисов GIS-платформы:

    1. Откройте адрес external_hostname в браузере.

    2. Войдите в веб-интерфейс, используя следующие учетные данные:

      1. Имя пользователя: admin.
      2. Пароль: значение настройки spcore.admin.password.

    Вы должны успешно войти в веб-интерфейс.

  7. После успешной попытки входа, выполните второй этап развертывания с помощью Helm, используя подготовленный конфигурационный файлvalues-gis-platform.yaml:

    helm upgrade --install --version=1.0.3 --atomic --wait-for-jobs --values ./values-gis-platform.yaml gis-platform 2gis-on-premise/gis-platform
    

    Важное примечание:

    Эта команда отличается от приведенной выше: в ней отсутствует аргумент --set spcore.reset_cluster=true, так как сервисы были сброшены в исходное состояние ранее. Не используйте команду для выполнения начального развертывания из шага 2.

Чтобы обновить GIS-платформу, выполните следующую команду:

helm upgrade --version=1.0.3 --atomic --wait-for-jobs --values ./values-gis-platform.yaml gis-platform 2gis-on-premise/gis-platform

Чтобы проверить работоспособность сервисов:

  1. Откройте адрес external_hostname в браузере.

  2. Войдите в веб-интерфейс, используя следующие учетные данные:

    1. Имя пользователя: admin.
    2. Пароль: значение настройки spcore.admin.password.

    Вы должны успешно войти в веб-интерфейс.