2ГИС Про | On-Premise | 2GIS Documentation
On-Premise

Установка 2ГИС Про

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

Все пароли и ключи в этом разделе приведены в иллюстративных целях.

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

  1. Ознакомьтесь с основной информацией:

  2. Выполните предварительные шаги:

    1. Подготовка к установке
    2. Получение артефактов установки
    3. Установка сервиса ключей
    4. Установка прокси для API пробок
    5. Установка API для работы с картами
    6. Установка API для работы с поиском
    7. Установка API для работы с навигацией
  3. Соберите необходимые данные, заданные или полученные на предыдущих шагах:

    Объект Пример значения Как получить значение
    Эндпоинт зеркала реестра Docker docker.storage.example.local:5000 См. Получение артефактов установки
    Эндпоинт S3-совместимого хранилища артефактов установки artifacts.storage.local См. Получение артефактов установки
    Имя бакета для хранения артефактов onpremise-artifacts См. Получение артефактов установки
    Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE См. Получение артефактов установки
    Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY См. Получение артефактов установки
    Эндпоинт API сервиса ключей http://keys-api См. Установка сервиса ключей
    Эндпоинт MapGL JS API http://mapgl-js-api См. Установка API для работы с картами
    Эндпоинт Catalog APIs http://catalog-api См. Установка API для работы с поиском
    Эндпоинт Navigation API http://navi-front См. Установка API для работы с навигацией
    API-ключи MAPGL_KEY
    CATALOG_KEY
    NAVI_KEY
    См. Установка сервиса ключей
  4. Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чартах:

    Подробнее о том, как это сделать, смотрите в документе Системные требования.

    Примечание

    Содержание Helm-чартов, описанное в данном разделе, актуально для последней версии On-Premise (см. Релизы). Чтобы изучить параметры для более ранних версий, откройте нужный values.yaml в GitHub и введите номер нужной версии комплекса (например, 1.18.0) в переключателе тегов слева.

  5. Определите доменные имена для сервиса 2ГИС Про. Например:

    • Доменное имя для API-бэкенда: pro-api.example.com
    • Доменное имя для фронтенда: pro-ui.example.com

Разместите кластер PostgreSQL с доменным именем pro-postgresql.storage.example.local в приватной сети. Предполагается, что кластер работает на стандартном порту 5432.

Настройте кластер PostgreSQL для использования в качестве хранилища:

  1. Подключитесь к кластеру от имени суперпользователя (обычно это postgres).

  2. Создайте пользователя базы данных и установите пароль для него:

    create user dbuser_pro password '';
    
  3. Создайте базу данных, принадлежащую этому пользователю:

    create database onpremise_pro owner dbuser_pro;
    

Разместите S3-совместимое хранилище (например, Ceph) с доменным именем pro-s3.storage.example.local в приватной сети. Предполагается, что хранилище работает на стандартном порту 80.

Настройте S3-совместимое хранилище:

  1. Создайте пользователя, который будет использоваться для сервиса:

    • Access key: ``
    • Secret key: ``

    Запомните ключи доступа для этого пользователя.

  2. Определите названия бакетов (buckets), которые будут использоваться для сервиса. Например:

    • Бакет с наборами данных, агрегатами и фильтрами: assets.
    • Бакет с подготовленными данными слоя: layer_data.
    • Бакет с наборами данных, агрегатами и фильтрами, созданными пользователем: user_assets.

Разместите кластер Elasticsearch с доменным именем pro-elastic.storage.example.local в приватной сети. Предполагается, что кластер работает на порту 9200.

Создайте пользователя, который будет использоваться для сервиса:

  • Имя пользователя: ``
  • Пароль: ``

Запомните реквизиты для этого пользователя.

Разместите кластер Apache Kafka с доменным именем pro-kafka.storage.example.local в приватной сети. Предполагается, что кластер работает на стандартном порту 9092.

Создайте пользователя, который будет использоваться для сервиса:

  • username: kafka
  • password: kafka_password

Запомните реквизиты для этого пользователя.

  1. Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.

    Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.

    values-pro-api.yaml
    dgctlDockerRegistry: ''
    
    dgctlStorage:
        host: artifacts.storage.example.local:443
        bucket: onpremise-artifacts
        accessKey: AKIAIOSFODNN7EXAMPLE
        secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
        manifest: manifests/1640661259.json
        secure: false
        region: ''
        disablePayloadSigning: false
    
    s3:
        assetsDataBucket: ''
        userAssetsDataBucket: ''
        layerDataBucket: ''
        snapshotBucket: ''
        resourcesBucket: ''
    
    api:
        serviceAccount: ''
        tempPath: /tmp
        allowAnyOrigin: false
        licensePartner: ''
        loggingFormat: simple
    
    postgres:
        connectionString: ''
        connectionStringReadonly: ''
        password: ''
    
    kafka:
        bootstrapServers: ''
        securityProtocol: SaslPlaintext
        sasl:
            mechanism: ScramSha512
            username: ''
            password: ''
        assetTopicsReaderGroupId: ''
        importTasksTopic:
            name: ''
            readerGroupId: ''
        assetDataTopic:
            name: ''
        eventsTopic:
            name: ''
            readerGroupId: ''
    
    keys:
        url: ''
        token: ''
    
    elastic:
        host: ''
        credentials: ''
    
    redis:
        host: ''
        port: ''
    
    catalog:
        url: ''
        key: ''
    
    navi:
        url: ''
        key: ''
    
    search:
        url: ''
    
    appAssetImporterName: asset-importer
    appUserAssetImporterName: user-asset-importer
    
    assetImporter:
        repository: 2gis-on-premise/pro-importer
        schedule: 0 18 * * *
        backoffLimit: 2
        successfulJobsHistoryLimit: 3
        nodeSelector: {}
        maxParallelJobs: 4
        enabled: true
        startOnDeploy: true
    
    resources:
        requests:
            cpu: 400m
            memory: 256M
        limits:
            cpu: 1
            memory: 1024M
    
    ingress:
        enabled: true
        className: nginx
        hosts:
            - host: pro-api.example.com
              paths:
                  - path: /
                    pathType: Prefix
        tls: []
        #- hosts:
        #  - pro-api.example.com
        #  secretName: secret.tls
    

    Где:

    • dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов On-Premise. Пример: HOST:PORT.

    • dgctlStorage: настройки хранилища артефактов развертывания.

      • Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета, реквизиты для доступа.
      • manifest: укажите путь до файла с манифестом в формате manifests/1640661259.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
      • secure: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию: false.
      • region: регион S3-хранилища.
      • disablePayloadSigning: отключить ли проверку целостности данных. Если S3-совместимое хранилище не поддерживает AWS Signature Version 4 streaming, значение должно быть true. Значение по умолчанию: false.
    • s3: настройки хранилища S3.

      • assetsDataBucket: имя бакета S3 с подготовленными наборами данных, агрегатами и фильтрами.
      • userAssetsDataBucket: имя бакета S3 с наборами данных, агрегатами и фильтрами, созданными пользователем.
      • layerDataBucket: имя бакета S3 с подготовленными данными слоя.
      • snapshotBucket: имя бакета S3 для хранения моментальных снимков (snapshots) пошагового обновления данных.
      • resourcesBucket: имя бакета S3 для хранения статичных ресурсов.
    • api: переменные окружения.

      • serviceAccount: учетная запись службы Kubernetes.
      • tempPath: путь к директории, используемой для временных данных.
      • allowAnyOrigin: политика CORS — разрешить любому источнику выполнять запросы к сервису Pro API.
      • licensePartner: имя партнёра, для которого выписывается лицензия. Указано в файле лицензии.
      • loggingFormat: формат ведения журнала логирования. Возможные значения: default — компактный JSON, renderedCompactJson — отображаемый JSON, simple — простой текст.
    • postgres: настройки доступа к серверу PostgreSQL.

      • connectionString: строка с данными для подключения к БД PostgreSQL вида Server=SERVER_URL;Database=DB_NAME;UID=USER_NAME;.
      • connectionStringReadonly: строка с данными для подключения к БД PostgreSQL, доступной только для чтения вида Server=SERVER_URL;Database=DB_NAME;UID=USER_NAME;.
      • password: пароль для подключения к БД PostgreSQL.
    • kafka: настройки Apache Kafka.

      • bootstrapServers: эндпоинты брокера Kafka. Пример: HOST1:PORT1,HOST2:PORT2.

      • securityProtocol: протокол безопасности Kafka.

      • sasl: настройки SASL.

        • mechanism: механизм SASL.
        • username: имя пользователя SASL.
        • password: пароль пользователя SASL.
      • assetTopicsReaderGroupId: ID потребительской группы Kafka для чтения данных из стриминговых ассетов.

      • importTasksTopic: настройки топика Kafka для выполнения задач импорта.

        • name: название топика.
        • readerGroupId: ID потребительской группы Kafka для чтения задач импорта.
      • assetDataTopic: настройки топика Kafka для обновления данных ассетов.

        • name: название топика.
      • eventsTopic: настройки топика Kafka для управления событиями.

        • name: название топика.
        • readerGroupId: ID потребительской группы Kafka для чтения событий.
    • keys: настройки доступа к сервису управления ключами.

      • url: URL-адрес сервиса keys.api для управления ключами. Пример: HTTP(S)://HOST.
      • token: токен доступа для keys.api.
    • elastic: настройки ElasticSearch.

      • host: адрес хоста ElasticSearch. Пример: HTTP(S)://HOST:PORT.
      • credentials: имя пользователя и пароль для подключения к ElasticSearch вида USER_NAME:PASSWORD.
    • redis: настройки Redis.

      • host: адрес хоста Redis. Пример: HTTP(S)://HOST.
      • port: номер порта.
    • catalog: настройки доступа к Catalog APIs.

    • navi: настройки доступа к Isochrone API.

    • search: настройки доступа к Search API.

      • url: URL-адрес Search API. Пример: HTTP(S)://HOST.
    • appAssetImporterName: имя cron-задания для импорта данных.

    • appUserAssetImporterName: имя пользовательского cron-задания для импорта данных.

    • assetImporter: настройки cron-задания для импорта данных.

      • repository: адрес репозитория с Docker-образом.
      • schedule: расписание выполнения задания в cron-формате. Например: */10 * * * *.
      • backoffLimit: количество повторных попыток, после которых задание будет считаться неуспешным.
      • successfulJobsHistoryLimit: ограничение на размер истории выполненных заданий.
      • nodeSelector: селектор узлов Kubernetes.
      • maxParallelJobs: количество заданий импорта, которые могут быть запущены одновременно.
      • enabled: включен AssetImporter или нет.
      • startOnDeploy: импорт данных должен начинаться при установке или обновлении сервиса.
    • resources: настройки вычислительных ресурсов для сервиса. Актуальная информация о рекомендуемых значениях настроек представлена в таблице с системными требованиями.

    • ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметре ingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.

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

    helm upgrade --install --version=1.23.0 --atomic --values ./values-pro-api.yaml pro-api 2gis-on-premise/pro-api
    
  1. Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.

    Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.

    values-pro-ui.yaml
    dgctlDockerRegistry: ''
    
    dgctlStorage:
        host: artifacts.storage.example.local:443
        bucket: onpremise-artifacts
        accessKey: AKIAIOSFODNN7EXAMPLE
        secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
        manifest: manifests/1640661259.json
        secure: false
        region: ''
        disablePayloadSigning: false
    
    ui:
        appLocale: en_AE
    
        appInitialMapCenter: '[37.64, 55.74]'
    
        api:
            url: 'https://pro-api.example.com/'
    
        mapgl:
            host: 'mapgl-js-api.example.com'
            key: ''
            styleUrl: ''
            stylePreview: ''
    
        resources:
            requests:
                cpu: 300m
                memory: 256Mi
            limits:
                cpu: 1
                memory: 384Mi
    
        ingress:
            enabled: true
            className: nginx
            hosts:
                - host: pro-ui.example.com
                  paths:
                      - path: /
                        pathType: Prefix
            tls: []
            #- hosts:
            #  - pro-ui.example.com
            #  secretName: secret.tls
    

    Где:

    • dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов On-Premise. Пример: HOST:PORT.

    • dgctlStorage: настройки хранилища артефактов развертывания.

      • Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета, реквизиты для доступа.
      • manifest: укажите путь до файла с манифестом в формате manifests/1640661259.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
      • secure: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию: false.
      • region: регион S3-хранилища.
      • disablePayloadSigning: отключить ли проверку целостности данных. Если S3-совместимое хранилище не поддерживает AWS Signature Version 4 streaming, значение должно быть true. Значение по умолчанию: false.
    • ui.appLocale: язык приложения. Возможные значения: en_AE, ru_RU.

    • ui.appInitialMapCenter: координаты карты по умолчанию. Состоят из двух чисел в массиве: [lng, lat]. Например: [55.27, 25.2] для Дубая, [37.64, 55.74] для Москвы.

    • ui.api.url: базовый URL для Pro API со слешем в конце. Пример: HTTP(S)://HOST/.

    • ui.mapgl.host: хост сервиса MapGL JS API без протокола и без слеша в конце. Пример: HOST.

    • ui.mapgl.key: API-ключ для сервиса MapGL JS API.

    • ui.mapgl.styleUrl: путь к директории с конфигурационным файлом (styles.json) для управления стилями карты. Пример: //mapgl.ingress.host/style.

    • ui.mapgl.stylePreview: URL для миниатюры изображения, которая будет отображаться в менеджере стилей карты для стиля по умолчанию.

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

    • ui.ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметре ingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.

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

    helm upgrade --install --version=1.23.0 --atomic --values ./values-pro-ui.yaml pro-ui 2gis-on-premise/pro-ui
    

Выполните запрос с использованием cURL или аналогичного инструмента:

https://2GIS_API_HOST/building/items?bounds=POLYGON%20%28%2854.605596%2024.429549%2C%2054.539606%2024.429549%2C%2054.539606%2024.413378%2C%2054.605596%2024.413378%2C%2054.605596%2024.429549%29%29

Ответ должен иметь код состояния HTTP 200 и содержать список элементов в формате JSON.

Узнайте, как обновить сервисы:

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