API навигации | On‑Premise | 2GIS Documentation

Установка API для работы с навигацией

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

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

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

  1. По возможности познакомьтесь с:

  2. Убедитесь, что выполнены необходимые предварительные шаги:

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

    Объект Пример значения Как получить значение
    Endpoint зеркала реестра Docker docker.storage.example.local:5000 См. Получение артефактов установки
    Секрет Kubernetes для доступа к зеркалу реестра Docker onpremise-registry-creds См. Получение артефактов установки
    Домен S3-хранилища с артефактами установки artifacts.example.com См. Получение артефактов установки
    Название бакета с артефактами установки onpremise-artifacts См. Получение артефактов установки
    Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE См. Получение артефактов установки
    Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY См. Получение артефактов установки
    Путь к файлу манифеста manifests/1640661259.json См. Получение артефактов установки
    Endpoint сервиса лицензий https://license См. Установка сервиса лицензий
    API-endpoint сервиса ключей http://keys-api См. Установка сервиса ключей
    Endpoint прокси для API пробок http://traffic-proxy См. Установка прокси для API пробок
    Сервисные токены* DIRECTIONS_TOKEN
    TRUCK_DIRECTIONS_TOKEN
    PUBLIC_TRANSPORT_TOKEN
    DISTANCE_MATRIX_TOKEN
    ISOCHRONE_TOKEN
    MAP_MATCHING_TOKEN
    ROUTES_PLANNER_TOKEN (для работы с 2ГИС Линзой)
    См. Установка сервиса ключей

    * В иллюстративных целях предполагается, что сервисные токены доступны для всех продуктов навигации.

  4. Определите, какие API вам необходимо установить:

    • Базовые API навигации: Directions API, Distance Matrix API, Truck Directions API, Map Matching API, Isochrone API и Public Transport API. Подробнее о сервисах см. в обзоре.
    • Distance Matrix Async API для расчёта матрицы расстояний для большого количества точек. Может быть установлен отдельно или в сочетании с другими API. Подробнее о сервисе см. на странице архитектуры.
    • Restrictions API для получения информации о перекрытиях дорог. Устанавливается в сочетании с другими API. Подробнее о сервисе см. на странице архитектуры.
  5. Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чартах:

    Сервис Для работы каких API необходим
    Navi-Castle Все
    Navi-Back Все
    Navi-Router Базовые API
    Navi-Front Базовые API
    Navi-Restrictions Restrictions API
    Navi-Attractor Distance Matrix Async API
    Distance Matrix Async API Distance Matrix Async API

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

    Примечание

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

  6. Определите доменные имена для сервисов навигации.

    Пример:

    • Доменное имя для Navi-Front: navi-front.example.com
    • Доменное имя для Distance Matrix Async API: navi-async-matrix.example.com
    • Доменное имя для Restrictions API: navi-restrictions.example.com

Настройте хранилище файлов для Navi-Castle. Определите путь, по которому будут находиться файлы с данными.

Пример: /opt/castle/data

Если вы планируете устанавливать Distance Matrix Async API, дополнительно настройте:

  1. PostgreSQL.

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

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

    3. Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.

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

      create database onpremise_navi_async_matrix owner dbuser_navi_async_matrix;
      
  2. S3-совместимое хранилище.

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

    2. Создайте пользователя, который будет использоваться для сервиса. Запомните ключи доступа для этого пользователя.

      Пример:

      • Access key: TRVR4ESNMDDSIXLB3ISV
      • Secret key: 6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK
    3. Определите название бакета (bucket), который будет использоваться для сервиса.

      Пример: navi-async-matrix-bucket

      Примечание

      По умолчанию Distance Matrix Async API удаляет все файлы старше 14 дней в бакете.

  3. Брокер сообщений Apache Kafka.

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

    2. Создайте пользователя, который будет использоваться для сервиса. Запомните реквизиты для этого пользователя.

      Пример:

      • Имя пользователя: kafka-async-matrix
      • Пароль: 1Y2u3gGvi6VjNHUt

Если вы планируете устанавливать Restrictions API, дополнительно настройте PostgreSQL:

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

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

  3. Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.

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

    create database onpremise_restrictions owner dbuser_restrictions;
    

Navi-Back использует файл правил, чтобы указать, какие типы запросов он может обрабатывать. Это позволяет инстансу Navi-Back запрашивать и хранить минимальный набор данных от Navi-Castle, достаточный для обработки указанных типов запросов.

Файл также используется Navi-Router для определения того, какой из нескольких инстансов Navi-Back может обработать запрос.

Создайте файл rules.yaml с необходимым вам набором правил. Скопируйте из примера ниже только те блоки, которые понадобятся для вашей установки:

rules:
    # режим свободной навигации без маршрута
    - name: free-roam
      queries: ['free_roam']
      routing: []
    # автомобильные маршруты
    - name: directions-car
      queries: ['routing']
      routing: ['driving']
    # пешеходные маршруты
    - name: directions-pedestrian
      queries: ['routing']
      routing: ['pedestrian']
    # велосипедные маршруты
    - name: directions-bicycle
      queries: ['routing']
      routing: ['bicycle']
    # маршруты такси
    - name: directions-taxi
      queries: ['routing']
      routing: ['taxi']
    # маршруты для экстренных служб
    - name: directions-emergency
      queries: ['routing']
      routing: ['emergency']
    # маршруты на общественном транспорте
    - name: public-transport
      queries: ['public_transport']
      routing: ['public_transport']
    # маршруты для грузовиков
    - name: directions-truck
      queries: ['routing']
      routing: ['truck']
    # достижимые области на автомобиле
    - name: isochrone-car
      queries: ['get_hull']
      routing: ['driving']
    # матрица расстояний
    - name: distance-matrix
      queries: ['get_dist_matrix']
      routing: ['driving']
    # Distance Matrix Async API для автомобилей
    - name: async-car
      queries: ['routing']
      routing: ['driving']
    # Distance Matrix Async API для грузовиков
    - name: async-truck
      queries: ['routing']
      routing: ['truck']

Установка Navi-Castle обязательна для работы любых API навигации.

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

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

    values-castle.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    imagePullSecrets: [onpremise-registry-creds]
    
    dgctlStorage:
        host: artifacts.example.com
        bucket: onpremise-artifacts
        accessKey: AKIAIOSFODNN7EXAMPLE
        secretKey: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
        manifest: manifests/latest.json
        secure: false
        region: ''
    
    resources:
        limits:
            cpu: 1000m
            memory: 512Mi
        requests:
            cpu: 500m
            memory: 128Mi
    
    persistentVolume:
        enabled: false
        type: pvc
        accessModes: [ReadWriteOnce]
        storageClass: ''
        size: 5Gi
    
    castle:
        castleDataPath: /opt/castle/data/
    
    cron:
        enabled:
            import: true
        schedule:
            import: '*/10 * * * *'
        concurrencyPolicy: Forbid
        successfulJobsHistoryLimit: 3
        failedJobsHistoryLimit: 3
    
    init:
        enabled:
            import: true
            restriction: false
            restrictionImport: false
    
    replicaCount: 1
    
    customCAs:
        bundle: ''
        # bundle: |
        #   -----BEGIN CERTIFICATE-----
        #   ...
        #   -----END CERTIFICATE-----
        certsPath: ''
    

    Где:

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

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

      • Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета, реквизиты для доступа.
      • manifest: укажите путь до файла с манифестом в формате manifests/latest.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
      • secure: использовать ли HTTPS для работы с S3-совместимым хранилищем. Значение по умолчанию: false.
      • region: регион S3-хранилища.
    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.

    • persistentVolume: настройки для Kubernetes Persistent Volume Claim (PVC), который используется для хранения данных сервиса.

      • enabled: флаг, определяющий, включен ли PVC. Если PVC выключен, то реплика сервиса может потерять свои данные.
      • type: тип хранилища (pvc или ephemeral).
      • accessModes: режим доступа к PVC. Доступны такие же режимы, как и для Persistent Volumes.
      • storageClass: класс хранилища для PVC.
      • size: размер хранилища.

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

      Navi-Castle устанавливается с использованием StatefulSet. Это означает, что каждая реплика Navi-Castle получит своё выделенное хранилище Persistent Storage с указанными настройками.

      Например, если вы задали настройку size со значением 5Gi, то общий объем хранилища для трёх реплик будет равен 15Gi.

    • castle: настройки Navi-Castle.

      • castleDataPath: путь до директории с данными Navi-Castle.
    • cron: настройки cron-заданий (Kubernetes Cron Job). Эти настройки одинаковы для всех реплик сервиса Navi-Castle. Такое cron-задание получает актуальные данные из хранилища артефактов установки и затем обновляет данные на реплике Navi-Castle.

      • enabled.import, enabled.restriction, enabled.restrictionImport: флаги, определяющие, включены ли задания. Если оба задания выключены, то ни одна из реплик Navi-Castle не будет получать обновления данных.
      • schedule.import, schedule.restriction, schedule.restrictionImport: расписания выполнения заданий в cron-формате.
      • concurrencyPolicy: политика одновременного выполнения (concurrency policy) для задания.
      • successfulJobsHistoryLimit: ограничение на размер истории выполненных заданий.
      • failedJobsHistoryLimit: ограничение на размер истории невыполненных заданий.
    • init: настройки импорта данных при старте сервиса.

      • enabled.import: флаг, определяющий, включен ли импорт данных. Если флаг persistentVolume.enabled отключен, то старые данные будут утеряны при новом импорте.
      • enabled.restriction, enabled.restrictionImport: флаги, определяющие, включен ли Restrictions API или импорт данных о дорожных перекрытиях соответственно. Данные флаги не могут быть включены одновременно.
    • replicaCount: число реплик сервиса Navi-Castle. Обратите внимание, что каждая реплика получит своё выделенное cron-задание для получения актуальных данных из хранилища артефактов установки.

    • customCAs: настройки пользовательских сертификатов.

      • bundle: текстовое представление сертификата в формате X.509 PEM public-key.
      • certsPath: директория для монтирования сертификата внутри контейнера.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-castle.yaml:

    helm upgrade --install --version=1.38.0 --atomic --values ./values-castle.yaml navi-castle 2gis-on-premise/navi-castle
    

    При первом запуске реплика Navi-Castle получит данные из хранилища артефактов установки. В дальнейшем, эти данные будут обновляться cron-заданием по расписанию.

  3. Проверьте работоспособность Navi-Castle по инструкции сейчас (рекомендуется) или в конце процедуры установки.

Установка Navi-Attractor обязательна, если вы планируете использовать Distance Matrix Async API.

С помощью Distance Matrix Async API вы можете строить маршруты для двух типов транспорта: автомобилей и грузовиков. Для каждого типа транспорта необходимо установить отдельную сущность Navi-Attractor. Выполните шаги ниже для каждого устанавливаемого типа навигации:

  1. Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь. Присвойте файлу имя по схеме values-attractor-<transport>.yaml (например, values-attractor-truck.yaml).

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

    values-attractor-TRANSPORT.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    navigroup: dma-car
    rules: []
    
    kafka:
        enabled: true
        groupId: navi-async
        properties:
            bootstrap.servers: kafka.example.local:9092
            security.protocol: SASL_PLAINTEXT
            sasl.mechanism: SCRAM-SHA-512
            sasl.username: kafka-async-matrix
            sasl.password: 1Y2u3gGvi6VjNHUt
        distanceMatrix:
            taskTopic: car_attract_task_topic
            cancelTopic: cancel_topic
            statusTopic: attract_topic
    
    s3:
        enabled: true
        host: navi-async-matrix-s3.storage.example.local:80
        bucket: navi-async-matrix-bucket
        accessKey: TRVR4ESNMDDSIXLB3ISV
        secretKey: 6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK
    
    attractor:
        app_rule: async-car
        castleUrl: http://navi-castle
        ecaUrl: http://traffic-proxy
        dmSourcesLimit: 4000
        dmTargetsLimit: 4000
    
    resources:
        requests:
            cpu: 100m
            memory: 1024Mi
        limits:
            cpu: 2
            memory: 4000Mi
    

    Где:

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

    • navigroup: идентификатор группы для построения маршрутов. Этот параметр необходим, если в одном пространстве имён используются либо несколько сущностей Navi-Front и Navi-Router, либо отдельные сущности Navi-Back и Distance Matrix Async API для расчёта асинхронных матриц.

    • rules: список правил из файла rules.yaml для установки в текущей сущности Navi-Attractor.

    • kafka: настройки доступа к брокеру Apache Kafka для взаимодействия с Distance Matrix Async API.

      • groupId: идентификатор группы, к которой принадлежит сервис.

      • properties: параметры для доступа к серверу Kafka:

        Примечание

        В этом примере конфигурационного файла описан способ подключения к серверу Kafka по логину и паролю. Вы также можете настроить аутентификацию по SSL или подключение без аутентификации: см. пояснения к блоку параметров kafka.properties на GitHub.

        • bootstrap.servers: URL сервера Kafka.
        • sasl.username: имя пользователя Kafka.
        • sasl.password: пароль для пользователя Kafka.
      • distanceMatrix: названия топиков для взаимодействия с сервисом Distance Matrix Async API.

        • taskTopic: название топика для получения новых задач.
        • cancelTopic: название топика для отмены или завершения задач.
        • statusTopic: название топика для получения информации о статусе задач.
    • s3: настройки доступа к S3-совместимому хранилищу для взаимодействия с Distance Matrix Async API.

      • host: endpoint S3-хранилища.
      • bucket: имя бакета для хранения данных запросов.
      • accessKey: идентификатор ключа (S3 access key).
      • secretKey: секретный ключ (S3 secret key).
    • attractor: настройки сервиса Navi-Attractor.

      • app_rule: имя правила из списка rules для устанавливаемого типа навигации.
      • castleUrl: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
      • ecaUrl: доменное имя прокси для API пробок. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
      • dmSourcesLimit и dmTargetsLimit: ограничение размера матрицы.
    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.

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

    helm upgrade --install --version=1.38.0 --atomic --values ./rules.yaml --values ./values-attractor-<transport>.yaml navi-attractor-<transport> 2gis-on-premise/navi-attractor
    
  3. Повторите шаги выше для следующего типа транспорта, если необходимо.

Установка Navi-Back обязательна для работы любых API навигации.

Для каждого типа навигации необходимо установить отдельную сущность Navi-Back. Выполните шаги ниже для каждого устанавливаемого типа навигации:

  1. Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь. Присвойте файлу имя по схеме values-back-<service>.yaml (например, values-back-directions-car.yaml).

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

    values-back-SERVICE.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    navigroup: routing-car
    rules: []
    
    naviback:
        app_rule: directions-car
        castleUrl: navi-castle.svc
        ecaUrl: http://traffic-proxy
        appPort: 443
        simpleNetwork:
            emergency: false
        dmSourcesLimit: 4000 # если вы используете Distance Matrix Async API
        dmTargetsLimit: 4000 # если вы используете Distance Matrix Async API
    
    replicaCount: 1
    
    resources:
        limits:
            cpu: 2000m
            memory: 16000Mi
        requests:
            cpu: 1000m
            memory: 1024Mi
    
    license:
        url: 'https://license'
    
    # Только если вы используете Distance Matrix Async API
    kafka:
        enabled: true
        groupId: navi-back
        properties:
            bootstrap.servers: kafka.example.local:9092
            security.protocol: SASL_PLAINTEXT
            sasl.mechanism: SCRAM-SHA-512
            sasl.username: kafka-async-matrix
            sasl.password: 1Y2u3gGvi6VjNHUt
        distanceMatrix:
            taskTopic: car_task_topic
            cancelTopic: cancel_topic
            statusTopic: one_to_many_topic
    
    # Только если вы используете Distance Matrix Async API
    s3:
        enabled: true
        host: navi-async-matrix-s3.storage.example.local:80
        bucket: navi-async-matrix-bucket
        accessKey: TRVR4ESNMDDSIXLB3ISV
        secretKey: 6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK
    
    customCAs:
        bundle: ''
        # bundle: |
        #   -----BEGIN CERTIFICATE-----
        #   ...
        #   -----END CERTIFICATE-----
        certsPath: ''
    

    Где:

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

    • navigroup: идентификатор группы для построения маршрутов. Этот параметр необходим, если в одном пространстве имён используются либо несколько сущностей Navi-Front и Navi-Router, либо отдельные сущности Navi-Back и Distance Matrix Async API для расчёта асинхронных матриц.

    • rules: список правил из файла rules.yaml для установки в текущей сущности Navi-Back.

    • naviback: настройки сервиса Navi-Back.

      • app_rule: имя правила из списка rules для устанавливаемого типа навигации.

      • castleUrl: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.

      • ecaUrl: доменное имя прокси для API пробок. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.

      • appPort: HTTP-порт для сервиса Navi-Back.

      • simpleNetwork.emergency: включить поддержку построения маршрутов для экстренных служб.

        Обратите внимание, что для построения таких маршрутов необходимо также добавить тип маршрутизации emergency в один из проектов в вашем файле правил.

      • dmSourcesLimit и dmTargetsLimit: ограничение размера матрицы для Distance Matrix Async API.

    • replicaCount: число реплик сервиса Navi-Back.

    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.

    • license: настройки сервиса лицензий.

      • url: URL-адрес сервиса лицензий. Пример: https://license.
    • kafka: настройки доступа к брокеру Apache Kafka для взаимодействия с Distance Matrix Async API.

      • groupId: идентификатор группы, к которой принадлежит сервис.

      • properties: параметры для доступа к серверу Kafka:

        Примечание

        В этом примере конфигурационного файла описан способ подключения к серверу Kafka по логину и паролю. Вы также можете настроить аутентификацию по SSL или подключение без аутентификации: см. пояснения к блоку параметров kafka.properties на GitHub.

        • bootstrap.servers: URL сервера Kafka.
        • sasl.username: имя пользователя Kafka.
        • sasl.password: пароль для пользователя Kafka.
      • distanceMatrix: названия топиков для взаимодействия с сервисом.

        • taskTopic: название топика для получения новых задач.
        • cancelTopic: название топика для отмены или завершения задач.
        • statusTopic: название топика для обмена статусами между Navi-Back и Distance Matrix Async API.
    • s3: настройки доступа к S3-совместимому хранилищу для взаимодействия с Distance Matrix Async API.

      • host: endpoint S3-хранилища.
      • bucket: имя бакета для хранения данных запросов.
      • accessKey: идентификатор ключа (S3 access key).
      • secretKey: секретный ключ (S3 secret key).
    • customCAs: настройки пользовательских сертификатов.

      • bundle: текстовое представление сертификата в формате X.509 PEM public-key.
      • certsPath: директория для монтирования сертификата внутри контейнера.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-back-<service>.yaml:

    helm upgrade --install --version=1.38.0 --atomic --values ./rules.yaml --values ./values-back-<service>.yaml navi-back-<service> 2gis-on-premise/navi-back
    

    Пример команды для установки Directions API для автомобильных маршрутов:

    helm upgrade --install --version=1.38.0 --atomic --values ./rules.yaml --values ./values-back-directions-car.yaml navi-back-directions-car 2gis-on-premise/navi-back
    
  3. Проверьте работоспособность Navi-Back по инструкции сейчас (рекомендуется) или в конце процедуры установки.

  4. Повторите шаги выше для следующего типа навигации.

Установка Navi-Router обязательна, если вы планируете использовать базовые API навигации.

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

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

    values-router.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    navigroup: routing-car
    rules: []
    
    router:
        logLevel: Warning
        castleUrl: http://navi-castle.svc
    
    keys:
        enabled: true
        url: http://keys-api/service/v1/keys
        refreshIntervalSec: 30
        downloadTimeoutSec: 30
        apis:
            comboroutes-api: ''
            directions-api: ''
            distance-matrix-api: ''
            freeroam-api: ''
            isochrone-api: ''
            map-matching-api: ''
            pairs-directions-api: ''
            ppnot-api: ''
            public-transport-api: ''
            truck-directions-api: ''
            truck-distance-matrix-api: ''
            routing-api: ''
            route-planner-api: '' # для работы с 2ГИС Линзой
    
    replicaCount: 2
    
    resources:
        limits:
            cpu: 2000m
            memory: 1024Mi
        requests:
            cpu: 500m
            memory: 128Mi
    

    Где:

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

    • navigroup: идентификатор группы для построения маршрутов. Этот параметр необходим, если в одном пространстве имён используются либо несколько сущностей Navi-Front и Navi-Router, либо отдельные сущности Navi-Back и Distance Matrix Async API для расчёта асинхронных матриц.

    • rules: список правил из файла rules.yaml для установки в текущей сущности Navi-Back.

    • router: настройки сервиса Navi-Router.

      • logLevel: уровень логирования, по умолчанию Warning. Доступные уровни: Verbose, Info, Warning, Error, Fatal.
      • castleUrl: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
    • keys: настройки сервиса ключей. Если не задавать эти настройки, то проверка API-ключа для запроса будет пропущена.

      • enabled: включено ли использование сервиса ключей.
      • url: URL API-endpoint сервиса ключей. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
      • refreshIntervalSec: интервал обновления ключей в секундах.
      • downloadTimeoutSec: таймаут загрузки ключей в секундах.
      • apis: сервисные токены для сохранения статистики использования (см. Сервис ключей).
    • replicaCount: число реплик сервиса Navi-Router.

    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.

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

    helm upgrade --install --version=1.38.0 --atomic --values ./rules.yaml --values ./values-router.yaml navi-router 2gis-on-premise/navi-router
    
  3. Проверьте работоспособность Navi-Router по инструкции сейчас (рекомендуется) или в конце процедуры установки.

Установка Navi-Front обязательна, если вы планируете использовать базовые API навигации.

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

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

    values-front.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    navigroup: routing-car
    
    replicaCount: 2
    
    resources:
        limits:
            cpu: 100m
            memory: 128Mi
        requests:
            cpu: 100m
            memory: 128Mi
    
    ingress:
        enabled: true
        className: nginx
        hosts:
            - host: navi-front.example.com
              paths:
                  - path: /
                    pathType: Prefix
        tls: []
        #- hosts:
        #  - navi-front.example.com
        #  secretName: secret.tls
    

    Где:

    • dgctlDockerRegistry: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС.
    • navigroup: идентификатор группы для построения маршрутов. Этот параметр необходим, если в одном пространстве имён используются либо несколько сущностей Navi-Front и Navi-Router, либо отдельные сущности Navi-Back и Distance Matrix Async API для расчёта асинхронных матриц.
    • replicaCount: число реплик сервиса Navi-Front.
    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.
    • ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметре ingress.hosts.host, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-front.yaml:

    helm upgrade --install --version=1.38.0 --atomic --values ./values-front.yaml navi-front 2gis-on-premise/navi-front
    
  3. Проверьте работоспособность Navi-Front по инструкции сейчас (рекомендуется) или в конце процедуры установки.

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

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

    values-navi-async-matrix.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    
    dm:
        citiesUrl: http://navi-castle/cities.conf
        archiver:
            enabled: true
            fetchLogs: true
            resources:
                requests:
                    cpu: 100m
                    memory: 100Mi
                limits:
                    cpu: 1
                    memory: 1Gi
    
    rbac:
        create: true
    
    serviceAccount:
        create: true
    
    s3:
        host: http://navi-async-matrix-s3.storage.example.local:80
        bucket: navi-async-matrix-bucket
        accessKey: TRVR4ESNMDDSIXLB3ISV
        secretKey: 6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK
        region: ''
    
    db:
        host: navi-async-matrix-postgresql.storage.example.local
        port: 5432
        name: onpremise_navi_async_matrix
        user: dbuser_navi_async_matrix
        password: wNgJamrIym8UAcdX
        schema: public
        tls:
            enabled: false
            rootCert: ''
            cert: ''
            key: ''
            mode: verify-full
    
    kafka:
        groupId: navi_async
        properties:
            bootstrap.servers: kafka.example.local:9092
            security.protocol: SASL_PLAINTEXT
            sasl.mechanism: SCRAM-SHA-512
            sasl.plain.username: kafka-async-matrix
        sensitiveProperties:
            sasl.plain.password: 1Y2u3gGvi6VjNHUt
        statusTopic: status_topic
        cancelTopic: cancel_topic
        archiveTopic: archive_topic
        attractTopic: attract_topic
        oneToManyTopic: one_to_many_topic
        taskTopicRules:
        - topic: car_task_topic
            default: true
            type: car
        attractTopicRules:
        - topic: car_attract_task_topic
            default: true
            type: car
    
    keys:
        url: http://keys-api/service/v1/keys
        token: DISTANCE_MATRIX_TOKEN # для автомобильных маршрутов
        truckToken: TRUCK_DIRECTIONS_TOKEN # для грузовых маршрутов
    
    ingress:
        enabled: true
        className: nginx
        hosts:
            - host: navi-async-matrix.example.com
              paths:
                  - path: /
                    pathType: Prefix
        tls: []
        #- hosts:
        #  - navi-async-matrix.example.com
        #  secretName: secret.tls
    
    customCAs:
        bundle: ''
        # bundle: |
        #   -----BEGIN CERTIFICATE-----
        #   ...
        #   -----END CERTIFICATE-----
        certsPath: ''
    

    Где:

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

    • dm: настройки сервиса Distance Matrix Async API.

      • citiesUrl: URL информации о городах, предоставляемой сервисом Navi-Castle.
      • archiver: настройки задания архивирования.
    • rbac.create: использовать ли RBAC.

    • serviceAccount.create: создать ли сервисный аккаунт.

    • s3: настройки доступа к S3-совместимому хранилищу.

      • host: endpoint S3-хранилища.
      • bucket: имя бакета для хранения данных запросов. По умолчанию Distance Matrix Async API удаляет все файлы старше 14 дней в бакете.
      • accessKey: идентификатор ключа (S3 access key).
      • secretKey: секретный ключ (S3 secret key).
      • region: регион S3-хранилища.
    • db: настройки доступа к серверу PostgreSQL.

      • host: имя хоста или IP-адрес сервера.

      • port: порт, на котором слушает сервер.

      • name: имя базы данных.

      • user и password: реквизиты для доступа к базе данных, указанной в параметре name. Пользователь должен быть либо владельцем этой базы данных, либо суперпользователем.

      • schema: используемая схема PostgreSQL. Значение по умолчанию - public.

      • tls: настройки mTLS-соединения с базой данных.

        • enabled: включено ли mTLS-соединение с сервером PostgreSQL.

        • rootCert: файл корневого сертификата.

        • cert: сертификат сервера PostgreSQL.

        • key: ключ сервера PostgreSQL.

        • mode: уровень защиты, один из следующих:

          • verify-full (рекомендуется): обеспечивается защита от прослушивания и атаки посредника.
          • verify-ca: обеспечивается защита от прослушивания, защита от атаки посредника зависит от политики центра сертификации.
          • require: обеспечивается защита от прослушивания.
          • prefer: возможна защита от прослушивания, если это поддерживает сервер.
          • allow: возможна защита от прослушивания, если этого требует сервер.
          • disable: защита не обеспечивается.
    • kafka: настройки доступа к брокеру Apache Kafka.

      • groupId: идентификатор группы, к которой принадлежит сервис.

      • properties: параметры для доступа к серверу Kafka:

        Примечание

        В этом примере конфигурационного файла описан способ подключения к серверу Kafka по логину и паролю. Вы также можете настроить аутентификацию по SSL или подключение без аутентификации: см. пояснения к блоку параметров kafka.properties на GitHub.

        • bootstrap.servers: URL сервера Kafka.
        • sasl.plain.username: имя пользователя Kafka.
      • sensitiveProperties.sasl.plain.password: пароль для пользователя Kafka.

      • statusTopic: название топика для получения информации о статусе задач.

      • cancelTopic: название топика для отмены задач или получения информации об их завершении.

      • attractTopic: название топика для получения результатов задач Navi-Attractor.

      • oneToManyTopic: название топика для связи Navi-Back и Distance Matrix Async API.

      • taskTopicRules: информация о топиках, в которые сервис будет направлять запросы. Задаётся как список, в каждом элементе которого должны присутствовать два параметра:

        • topic: название топика.

        • projects или default: параметры, определяющие, какие запросы направлять в этот топик.

          Distance Matrix Async API распределяет запросы по топикам в зависимости от проекта, к которому они относятся. Для всех топиков, кроме топика по умолчанию, должна быть указана настройка projects, содержащая список проектов (см. файл правил). Для топика по умолчанию должна быть указана настройка default: true. В топик по умолчанию будут направляться запросы, относящиеся к проектам, не упомянутым в projects для других топиков.

          В конфигурации должен быть задан один и только один топик с настройкой default: true.

        • type: тип транспорта для построения маршрутов (car или truck).

      • attractTopicRules: правила для соотнесения типов запросов с топиками.

        • topic: название топика.

        • projects или default: параметры, определяющие, какие запросы направлять в этот топик.

          Distance Matrix Async API распределяет запросы по топикам в зависимости от проекта, к которому они относятся. Для всех топиков, кроме топика по умолчанию, должна быть указана настройка projects, содержащая список проектов (см. файл правил). Для топика по умолчанию должна быть указана настройка default: true. В топик по умолчанию будут направляться запросы, относящиеся к проектам, не упомянутым в projects для других топиков.

          В конфигурации должен быть задан один и только один топик с настройкой default: true.

        • type: тип транспорта для построения маршрутов (car или truck).

    • keys: настройки сервиса ключей.

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

    • customCAs: настройки пользовательских сертификатов.

      • bundle: текстовое представление сертификата в формате X.509 PEM public-key.
      • certsPath: директория для монтирования сертификата внутри контейнера.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-navi-async-matrix.yaml.

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

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

    values-restrictions.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000
    imagePullSecrets: [onpremise-registry-creds]
    
    naviBackHost: 'navi-back-directions-car'
    naviCastleHost: 'navi-castle'
    
    postgres:
        host: navi-restrictions-postgresql.storage.example.local
        port: 5432
        name: onpremise_restrictions
        user: dbuser_restrictions
        password: jwbK65iFrCCcNrkg
    
    api:
        key: ''
    
        ingress:
            enabled: true
            className: nginx
            hosts:
                - host: navi-restrictions.example.com
                  paths:
                      - path: /
                        pathType: Prefix
            tls: []
            #- hosts:
            #  - navi-restrictions.example.com
            #  secretName: secret.tls
    
    cron:
        enabled: true
        schedule: '1 * * * *'
        concurrencyPolicy: Forbid
        successfulJobsHistoryLimit: 3
        failedJobsHistoryLimit: 3
        projects:
            - moscow
        maxAttributesFetcherRps: 25
    
    customCAs:
        bundle: ''
        # bundle: |
        #   -----BEGIN CERTIFICATE-----
        #   ...
        #   -----END CERTIFICATE-----
        certsPath: ''
    

    Где:

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

    • naviBackHost: имя хоста любого установленного сервиса Navi-Back.

    • naviCastleHost: имя хоста Navi-Castle.

    • postgres: настройки доступа к серверу PostgreSQL.

      • host: имя хоста или IP-адрес сервера.
      • port: порт, на котором слушает сервер.
      • name: имя базы данных.
      • user and password: реквизиты для доступа к базе данных, указанной в параметре name. Пользователь должен быть либо владельцем этой базы данных, либо суперпользователем.
    • api: настройки API сервиса.

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

      • successfulJobsHistoryLimit: ограничение на размер истории выполненных заданий.
      • failedJobsHistoryLimit: ограничение на размер истории невыполненных заданий.
      • projects: список проектов Navi-Back (см. Файл правил).
      • maxAttributesFetcherRps: максимальное количество запросов к edgeAttributesUrlTemplate в секунду.
    • customCAs: настройки пользовательских сертификатов.

      • bundle: текстовое представление сертификата в формате X.509 PEM public-key.
      • certsPath: директория для монтирования сертификата внутри контейнера.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-restrictions.yaml:

    helm upgrade --install --version=1.38.0 --atomic --wait-for-jobs --values ./values-restrictions.yaml navi-restrictions 2gis-on-premise/navi-restrictions
    
  3. Отредактируйте настройки castle.restrictions и cron в конфигурационном файле Navi-Castle следующим образом:

    castle:
        restrictions:
            key: secret
            host: http://navi-restrictions.example.local
    
    cron:
        enabled:
            import: true
            restriction: true
        schedule:
            import: '*/10 * * * *'
            restriction: '*/10 * * * *'
        concurrencyPolicy: Forbid
        successfulJobsHistoryLimit: 3
        failedJobsHistoryLimit: 3
    

    Где:

    • castle: настройки Navi-Castle.

      • restrictions.key: ключ для взаимодействия с сервисом Restrictions API. Любая строка.
      • restrictions.host: URL сервиса Restrictions API. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
    • cron: настройки cron-заданий (Kubernetes Cron Job). Эти настройки одинаковы для всех реплик сервиса Navi-Castle. Такое cron-задание получает актуальные данные из хранилища артефактов установки и затем обновляет данные на реплике Navi-Castle.

      • enabled.import, enabled.restriction: флаги, определяющие, включены ли задания. Если оба задания выключены, то ни одна из реплик Navi-Castle не будет получать обновления данных.
      • schedule.import, schedule.restriction: расписания выполнения заданий в cron-формате.
  4. Обновите сервис Navi-Castle, используя отредактированный конфигурационный файл values-castle.yaml:

    helm upgrade --install --version=1.38.0 --atomic --values ./values-castle.yaml navi-castle 2gis-on-premise/navi-castle
    

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

  1. Пробросьте порт сервиса с помощью kubectl:

    kubectl port-forward navi-castle-0 7777:8080
    
  2. Отправьте GET-запрос на корневой endpoint (/) с использованием cURL или аналогичного инструмента:

    curl -Lv http://127.0.0.1:7777/
    

    Вы должны получить в ответ HTML-страницу со списком всех файлов и папок, подобную этой:

    <html>
        <head>
            <title>Index of /</title>
        </head>
        <body>
            <h1>Index of /</h1>
            <hr />
            <pre>
                <a href="../">../</a>
                <a href="lost%2Bfound/">lost+found/</a>          09-Mar-2022 13:33        -
                <a href="packages/">packages/</a>                09-Mar-2022 13:33        -
                <a href="index.json">index.json</a>              09-Mar-2022 13:33      634
                <a href="index.json.zip">index.json.zip</a>      09-Mar-2022 13:33      357
            </pre>
            <hr />
        </body>
    </html>
    

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

  1. Пробросьте порт сервиса с помощью kubectl:

    kubectl port-forward service/navi-back-<service> 7777:8080
    

    Где navi-back-<service> — имя инстанса, который вы указывали на этапе установки Navi-Back (например, navi-back-directions-car).

  2. Создайте файл data.json с телом запроса к API навигации. Примеры запросов мы можете найти в документации сервисов навигации:

    • Directions API: маршруты для автомобилей, велосипедов, такси, экстренных служб и пешеходов.
    • Truck Directions API: маршруты для грузового транспорта.
    • Public Transport API: маршруты для общественного транспорта.
    • Isochrone API: достижимые области на автомобиле.
    • Distance Matrix API: матрицы расстояний.

    Проверку сервиса Distance Matrix Async API см. ниже.

    Пример ниже содержит тело запроса к Directions API для построения автомобильного маршрута (приведён пример для Москвы):

    data.json

    {
        "alternative": 1,
        "locale": "en",
        "point_a_name": "start",
        "point_b_name": "finish",
        "type": "jam",
        "points": [
            {
                "start": true,
                "type": "walking",
                "x": 37.616489,
                "y": 55.751225
            },
            {
                "start": false,
                "type": "walking",
                "x": 37.418451,
                "y": 55.68355
            }
        ]
    }
    
  3. Отправьте запрос с использованием cURL или аналогичного инструмента (пример для Directions API):

    curl -Lv http://127.0.0.1:7777/carrouting/6.0.0/global -d @data.json
    

    Вы должны получить ответ со следующей структурой (пример для Directions API):

    {
      "query": {..},
      "result": [{..}, {..}]
      "type": "result"
    }
    

    Примеры ответов для других сервисов навигации мы можете найти в их документации.

Для запроса к сервису понадобится API-ключ, сгенерированный в сервисе ключей. Подробнее см. в разделе Ключи и токены.

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

  1. Пробросьте порт сервиса с помощью kubectl:

    kubectl port-forward navi-router-6864944c7-vrpns 7777:8080
    
  2. Создайте файл data.json с телом запроса к сервису навигации, идентичный файлу из раздела Проверка работоспособности Navi-Back.

  3. Отправьте запрос с использованием cURL или аналогичного инструмента (пример для Directions API):

    curl -Lv http://127.0.0.1:7777/carrouting/6.0.0/global?key=API_KEY -d @data.json
    

    Где API_KEY — API-ключ для доступа к сервисам навигации.

    Вы должны получить ответ, содержащий имя правила, например:

    directions-car
    

Для запроса к сервису понадобится API-ключ, сгенерированный в сервисе ключей. Подробнее см. в разделе Ключи и токены.

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

  1. Создайте файл data.json с телом запроса к сервису навигации, идентичный файлу из раздела Проверка работоспособности Navi-Back.

  2. Отправьте запрос с использованием cURL или аналогичного инструмента (пример для Directions API):

    curl -Lv http://navi-front.example.com:7777/carrouting/6.0.0/global?key=API_KEY -d @data.json
    

    Где API_KEY — API-ключ для доступа к сервисам навигации.

    Вы должны получить ответ со следующей структурой:

    {
      "query": {..},
      "result": [{..}, {..}]
      "type": "result"
    }
    

Для запроса к сервису понадобится API-ключ, сгенерированный в сервисе ключей. Подробнее см. в разделе Ключи и токены.

Чтобы проверить работоспособность сервиса Distance Matrix Async API:

  1. Создайте файл data.json с телом запроса (приведён пример для Москвы):

    {
        "points": [
            {
                "lon": 37.573289,
                "lat": 55.699926
            },
            {
                "lon": 37.614402,
                "lat": 55.706847
            },
            {
                "lon": 37.552182,
                "lat": 55.675928
            },
            {
                "lon": 37.620315,
                "lat": 55.669625
            }
        ],
        "sources": [0, 1],
        "targets": [2, 3]
    }
    
  2. Отправьте запрос с использованием cURL или аналогичного инструмента:

    curl -Lv https://navi-async-matrix.example.com/create_task/get_dist_matrix?key=API_KEY --header 'Content-Type: application/json' -d @data.json
    

    Где API_KEY — API-ключ для доступа к сервисам навигации.

    Вы должны получить ответ со следующей структурой:

    {
        "task_id": "{TASK_ID}",
        "message": "success add task",
        "status ": "success"
    }
    
  3. Выполните запрос статуса задачи, подставив в URL параметр TASK_ID, полученный в ответе на предыдущем шаге.

    curl -Lv https://navi-async-matrix.example.com/result/get_dist_matrix/{TASK_ID}
    

    При необходимости выполните запрос несколько раз, пока задача будет выполняться. Спустя какое-то время в ответ на очередной запрос вы должны получить ответ со следующей структурой:

    {
        "task_id": "{TASK_ID}",
        "status": "TASK_DONE",
        "code": 200,
        "message": "1670066296399691644\ncalc_time_ms=485\nattract_time=21\nbuild_time=58\npoints_count=4\nsource_count=2\ntarget_count=2",
        "result_link": "http://artifacts.example.com/navi-async-matrix/{TASK_ID}.response.json"
    }
    
  4. Скачайте результат вычислений по URL, полученному в поле result_link на предыдущем шаге. Убедитесь, что результат представляет собой валидный JSON-файл. Пример:

    {
        "generation_time": 94.0,
        "routes": [
        {
        "status": "OK",
        "source_id": 0,
        "target_id": 2,
        "distance": 7996,
        "duration": 728,
        "reliability": 1.0
        },
        ...
        ],
        "attract_time": 21.0,
        "build_matrix_time": 58.0
    }
    

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

  1. Создайте файл data.json с телом запроса (приведён пример для Москвы):

    {
        "start_time": "2022-07-03T20:30:00.000Z",
        "end_time": "2029-08-28T23:59:00.000Z",
        "lat": 55.75291,
        "lon": 37.6113,
        "is_whole_road": false
    }
    
  2. Отправьте запрос с использованием cURL или аналогичного инструмента:

    curl -Lv http://navi-restrictions:7777/points/ --header 'Content-Type: application/json' -d @data.json
    

    Вы должны получить ответ со следующей структурой:

    [
        {
            "edge_geometry": "LINESTRING(37.610827 55.752269, 37.610958 55.752424, 37.611215 55.752690, 37.611287 55.752790, 37.611356
            55.752894, 37.611798 55.753816)",
            "restriction_id": "{RESTRICTION_ID}",
            "start_time": "2022-07-05T14:13:35.936000+00:00",
            "end_time": "2029-08-28T23:59:00+00:00",
            "is_2gis": false
        }
    ]
    
  3. Проверьте, что перекрытие появилось в системе:

    curl -Lv http://navi-restrictions:7777/restrictions/
    
  4. Удалите перекрытие:

    curl --request "DELETE" http://navi-restrictions:7777/restrictions/{RESTRICTION_ID}
    

    Где {RESTRICTION_ID} — значение поля restriction_id в ответе на запрос в шаге 2.

Что дальше?