Установка API для работы с навигацией
Важное примечание:
Все пароли и ключи в этом разделе приведены в иллюстративных целях.
При реальной установке рекомендуется использовать более сложные и надёжные пароли.
1. Перед установкой
-
По возможности познакомьтесь с:
-
Убедитесь, что выполнены необходимые предварительные шаги:
-
Соберите необходимые данные, заданные или полученные на предыдущих шагах:
Объект Пример значения Как получить значение Эндпоинт зеркала реестра Docker docker.storage.example.local:5000
См. Получение артефактов установки Секрет Kubernetes для доступа к зеркалу реестра Docker onpremise-registry-creds
См. Получение артефактов установки Домен S3-хранилища с артефактами установки artifacts.example.com
См. Получение артефактов установки Название бакета с артефактами установки onpremise-artifacts
См. Получение артефактов установки Идентификатор ключа для доступа к артефактам установки AKIAIOSFODNN7EXAMPLE
См. Получение артефактов установки Секрет ключа для доступа к артефактам установки wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
См. Получение артефактов установки Путь к файлу манифеста manifests/1640661259.json
См. Получение артефактов установки Эндпоинт API сервиса ключей http://keys-api
См. Установка сервиса ключей Эндпоинт прокси для API пробок http://traffic-proxy
См. Установка прокси для API пробок Сервисные токены* DIRECTIONS_TOKEN
PAIRS_DIRECTIONS_TOKEN
TRUCK_DIRECTIONS_TOKEN
PUBLIC_TRANSPORT_TOKEN
ROUTES_TOKEN
DISTANCE_MATRIX_TOKEN
TSP_TOKEN
ISOCHRONE_TOKEN
MAP_MATCHING_TOKEN
См. Установка сервиса ключей * В иллюстративных целях предполагается, что сервисные токены доступны для всех продуктов навигации.
-
Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чартах:
Подробнее о том, как это сделать, смотрите в документе Системные требования.
-
Определите доменные имена для сервисов навигации.
Пример:
- Доменное имя для Navi-Castle:
navi-castle.example.com
- Доменное имя для Navi-Back:
navi-back.example.com
- Доменное имя для Distance Matrix Async API:
navi-async-matrix.example.com
- Доменное имя для Restrictions API:
navi-restrictions.example.com
- Доменное имя для Navi-Castle:
2. Подготовьте инфраструктуру, необходимую для работы сервисов
Настройка PostgreSQL для Distance Matrix Async API
Разместите кластер PostgreSQL с доменным именем navi-async-matrix-postgresql.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 5432
.
Настройте кластер PostgreSQL для использования в качестве хранилища:
-
Подключитесь к кластеру от имени суперпользователя (обычно это
postgres
). -
Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.
create user dbuser_navi_async_matrix password 'wNgJamrIym8UAcdX';
-
Создайте базу данных, принадлежащую этому пользователю.
create database onpremise_navi_async_matrix owner dbuser_navi_async_matrix;
Настройка PostgreSQL для Restrictions API
Разместите кластер PostgreSQL с доменным именем navi-restrictions-postgresql.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 5432
.
Настройте кластер PostgreSQL для использования в качестве хранилища:
-
Подключитесь к кластеру от имени суперпользователя (обычно это
postgres
). -
Создайте пользователя базы данных, который будет использоваться для сервиса. Установите пароль для него.
create user dbuser_restrictions password 'jwbK65iFrCCcNrkg';
-
Создайте базу данных, принадлежащую этому пользователю.
create database onpremise_restrictions owner dbuser_restrictions;
Настройка S3-хранилища для Navi-Back
Разместите S3-совместимое хранилище (например, Ceph) с доменным именем navi-back-s3.storage.example.local
в приватной сети. В этом руководстве предполагается, что хранилище работает на стандартном порту 80
.
Настройте S3-совместимое хранилище:
-
Создайте пользователя, который будет использоваться для сервиса. Запомните ключи доступа для этого пользователя.
Пример:
- Access key:
HZJQSA1JMOMLXALINTVY
- Secret key:
I2dAfvW0RRbjKj6ESn4gq5mwRJQ5ZCRSEqTWUWAf
- Access key:
-
Определите название бакета (bucket), который будет использоваться для сервиса.
Пример:
naviback-bucket
Настройка S3-хранилища для Distance Matrix Async API
Разместите S3-совместимое хранилище (например, Ceph) с доменным именем navi-async-matrix-s3.storage.example.local
в приватной сети. В этом руководстве предполагается, что хранилище работает на стандартном порту 80
.
Настройте S3-совместимое хранилище:
-
Создайте пользователя, который будет использоваться для сервиса. Запомните ключи доступа для этого пользователя.
Пример:
- Access key:
TRVR4ESNMDDSIXLB3ISV
- Secret key:
6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK
- Access key:
-
Определите название бакета (bucket), который будет использоваться для сервиса.
Пример:
navi-async-matrix-bucket
Настройка Apache Kafka для Navi-Back
Разместите хранилище Apache Kafka с доменным именем navi-back-kafka.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 9092
.
Создайте пользователя, который будет использоваться для сервиса. Запомните реквизиты для этого пользователя.
Пример:
- Имя пользователя:
kafka-navi-back
- Пароль:
Ea6fNe5Bbx56Y1s0
Настройка Apache Kafka для Distance Matrix Async API
Разместите хранилище Apache Kafka с доменным именем navi-async-matrix-kafka.storage.example.local
в приватной сети. В этом руководстве предполагается, что кластер работает на стандартном порту 9092
.
Создайте пользователя, который будет использоваться для сервиса. Запомните реквизиты для этого пользователя.
Пример:
- Имя пользователя:
kafka-async-matrix
- Пароль:
1Y2u3gGvi6VjNHUt
Настройка хранилища файлов для Navi-Castle
Сервис Navi-Castle хранит некоторые данные в виде файлов. Определите путь, по которому будут находиться эти файлы.
Пример: /opt/castle/data
3. Установите сервисы навигации
Установка сервиса Navi-Castle
-
Создайте конфигурационный файл для 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/1640661259.json resources: limits: cpu: 1000m memory: 512Mi requests: cpu: 500m memory: 128Mi ingress: enabled: true className: nginx hosts: - host: navi-castle.example.com paths: - path: / pathType: Prefix tls: [] # hosts: # navi-castle.example.com # secretName: secret.tls persistentVolume: enabled: false accessModes: [ReadWriteOnce] storageClass: ceph-csi-rbd size: 5Gi castle: castleDataPath: /opt/castle/data/ # Только если вы используете Restrictions API restrictions: key: secret host: http://navi-restrictions.example.com cron: enabled: import: true restriction: true schedule: import: '*/10 * * * *' restriction: '*/10 * * * *' concurrencyPolicy: Forbid successfulJobsHistoryLimit: 3 replicaCount: 1
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
dgctlStorage
: настройки хранилища артефактов установки.- Укажите общие настройки для доступа к хранилищу: endpoint, имя бакета, реквизиты для доступа.
manifest
: укажите путь до файла с манифестом в форматеmanifests/1640661259.json
. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы. См. Жизненный цикл артефактов установки.
-
resources
: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL. -
persistentVolume
: настройки для Kubernetes Persistent Volume Claim (PVC), который используется для хранения данных сервиса.enabled
: флаг, определяющий, включен ли PVC. Если PVC выключен, то реплика сервиса может потерять свои данные.accessModes
: режим доступа к PVC. Доступные режимы такие же, как и для persistent volumes.storageClass
: класс хранилища для PVC.size
: размер хранилища.
Важное примечание:
Navi-Castle устанавливается с использованием StatefulSet. Это означает, что каждая реплика Navi-Castle получит своё выделенное хранилище Persistent Storage с указанными настройками.
Например, если вы задали настройку
size
со значением5Gi
, то общий объем хранилища для трёх реплик будет равен15Gi
. -
castle
: настройки Navi-Castle.castleDataPath
: путь до директории с данными 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-формате.concurrencyPolicy
: политика одновременного выполнения (concurrency policy) для задания.successfulJobsHistoryLimit
: ограничение на размер истории выполненных заданий.
-
replicaCount
: число реплик сервиса Navi-Castle. Обратите внимание, что под каждой реплики получит своё выделенное cron-задание для получения актуальных данных из хранилища артефактов установки.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-castle.yaml
:helm upgrade --install --version=1.14.0 --atomic --values ./values-castle.yaml navi-castle 2gis-on-premise/navi-castle
При первом запуске реплика Navi-Castle получит данные из хранилища артефактов установки. В дальнейшем, эти данные будут обновляться cron-заданием по расписанию.
Установка сервиса Navi-Back
-
Создайте файл правил rules.conf с требуемым набором правил.
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-back.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 affinity: {} hpa: enabled: false minReplicas: 1 maxReplicas: 100 scaleDownStabilizationWindowSeconds: '' scaleUpStabilizationWindowSeconds: '' targetCPUUtilizationPercentage: 80 targetMemoryUtilizationPercentage: '' naviback: castleHost: navi-castle ecaHost: traffic-proxy forecastHost: traffic-proxy appPort: 443 simpleNetwork: emergency: false replicaCount: 1 resources: limits: cpu: 2000m memory: 16000Mi requests: cpu: 1000m memory: 1024Mi ingress: enabled: true className: nginx hosts: - host: navi-back.example.com paths: - path: / pathType: Prefix tls: [] #- hosts: # - navi-back.example.com # secretName: secret.tls # Только если вы используете Distance Matrix Async API kafka: enabled: true server: navi-back-kafka.storage.example.local port: 9092 groupId: group_id user: kafka-navi-back password: Ea6fNe5Bbx56Y1s0 distanceMatrix: taskTopic: request_topic cancelTopic: cancel_topic # Только если вы используете Distance Matrix Async API s3: enabled: true host: navi-back-s3.storage.example.local:80 bucket: naviback-bucket accessKey: HZJQSA1JMOMLXALINTVY secretKey: I2dAfvW0RRbjKj6ESn4gq5mwRJQ5ZCRSEqTWUWAf
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
affinity
: настройки node affinity. -
hpa
: настройки автомасштабирования (Horizontal Pod Autoscaling). -
naviback
: настройки сервиса Navi-Back.-
castleHost
: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
ecaHost
: доменное имя прокси для API пробок. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
forecastHost
: URL сервиса прогноза пробок. См. Traffic Proxy service. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
appPort
: HTTP-порт для сервиса Navi-Back. -
simpleNetwork.emergency
: включить поддержку построения маршрутов для экстренных служб.Обратите внимание, что для построения таких маршрутов необходимо также добавить тип маршрутизации
emergency
в один из проектов в вашем файле правил.
-
-
replicaCount
: число реплик сервиса Navi-Back. -
resources
: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL. -
kafka
: настройки доступа к брокеру Apache Kafka для взаимодействия с Distance Matrix Async API.-
server
: имя хоста или IP-адрес брокера Kafka. -
port
: порт брокера Kafka. -
groupId
: идентификатор группы, к которой принадлежит сервис. -
user
иpassword
: реквизиты для доступа к серверу Kafka. -
distanceMatrix
: названия топиков для взаимодействия с сервисом.taskTopic
: название топика для получения новых задач.cancelTopic
: название топика для отмены или завершения задач.
-
-
s3
: настройки доступа к S3-совместимому хранилищу для взаимодействия с Distance Matrix Async API.host
: endpoint S3-совместимого хранилища.bucket
: имя бакета для хранения данных запросов.accessKey
: идентификатор ключа (S3 access key).secretKey
: секретный ключ (S3 secret key).
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-back.yaml
:helm upgrade --install --version=1.14.0 --atomic --values ./values-back.yaml navi-back 2gis-on-premise/navi-back
Установка сервиса Navi-Router
-
Создайте файл правил rules.conf с требуемым набором правил.
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-router.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 router: logLevel: Warning castleHost: http://navi-castle keyManagementService: enabled: true host: http://keys-api/service/v1/keys refreshIntervalSec: 30 downloadTimeoutSec: 30 apis: # directions: "DIRECTIONS_TOKEN" # distance-matrix: "DISTANCE_MATRIX_TOKEN" # pairs-directions: "PAIRS_DIRECTIONS_TOKEN" # truck-directions: "TRUCK_DIRECTIONS_TOKEN" # public-transport: "PUBLIC_TRANSPORT_TOKEN" # isochrone: "ISOCHRONE_TOKEN" # map-matching : "MAP_MATCHING_TOKEN" # ppnot: "PPNOT_TOKEN" # combo-routes: "COMBO_ROUTES_TOKEN" # free-roam: "FREE_ROAM_TOKEN" replicaCount: 2 resources: limits: cpu: 2000m memory: 1024Mi requests: cpu: 500m memory": 128Mi ingress: enabled: true className: nginx hosts: - host: navi-router.example.com paths: - path: / pathType: Prefix tls: [] #- hosts: # - navi-router.example.com # secretName: secret.tls
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
router
: настройки сервиса Navi-Router.-
logLevel
: уровень логирования, по умолчаниюWarning
. Доступные уровни:Verbose
,Info
,Warning
,Error
,Fatal
. -
castleHost
: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
keyManagementService
: настройки сервиса ключей. Если не задавать эти настройки, то проверка API-ключа для запроса будет пропущена.enabled
: включено ли использование сервиса ключей.host
: URL API-endpoint сервиса ключей. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.refreshIntervalSec
: интервал обновления ключей в секундах.downloadTimeoutSec
: таймаут загрузки ключей в секундах.apis
: сервисные токены для сохранения статистики использования (см. Сервис ключей).
-
-
replicaCount
: число реплик сервиса Navi-Router. -
resources
: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-router.yaml
:helm upgrade --install --version=1.14.0 --atomic --values ./values-router.yaml navi-router 2gis-on-premise/navi-router
Установка сервиса Navi-Front
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-front.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 affinity: {} hpa: enabled: true minReplicas: 2 maxReplicas: 6 targetCPUUtilizationPercentage: 90 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ГИС. -
affinity
: настройки node affinity. -
hpa
: настройки автомасштабирования (Horizontal Pod Autoscaling). -
replicaCount
: число реплик сервиса Navi-Front. -
resources
: настройки вычислительных ресурсов для сервиса. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-front.yaml
:helm upgrade --install --version=1.14.0 --atomic --values ./values-front.yaml navi-front 2gis-on-premise/navi-front
Установка сервиса Distance Matrix Async API
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-navi-async-matrix.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 dm: citiesUrl: http://navi-castle/cities.conf s3: host: http://navi-async-matrix-s3.storage.example.local:80 bucket: navi-async-matrix-bucket accessKey: TRVR4ESNMDDSIXLB3ISV secretKey: 6gejRs5fyRGKIFjwkiBDaowadGLtmWs2XjEH18YK 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: bootstrap: navi-async-matrix-kafka.storage.example.local:9092 groupId: group_id user: kafka-async-matrix password: 1Y2u3gGvi6VjNHUt consumerCancelTopic: cancel_topic topicRules: - topic: request_topic default: true - topic: moscow_request_topic projects: - moscow keys: url: http://keys-api/service/v1/keys token: DISTANCE_MATRIX_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
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
dm.citiesUrl
: URL информации о городах, предоставляемой сервисом Navi-Castle. -
s3
: настройки доступа к S3-совместимому хранилищу.host
: endpoint S3-совместимого хранилища.bucket
: имя бакета для хранения данных запросов.accessKey
: идентификатор ключа (S3 access key).secretKey
: секретный ключ (S3 secret key).
-
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.-
bootstrap
: URL брокера Kafka. -
groupId
: идентификатор группы, к которой принадлежит сервис. -
user
иpassword
: реквизиты для доступа к серверу Kafka. -
consumerCancelTopic
: название топика для отмены задач или получения информации об их завершении. -
topicRules
: информация о топиках, в которые сервис будет направлять запросы. Задаётся как список, в каждом элементе которого должны присутствовать два параметра:-
topic
: название топика. -
projects
илиdefault
: параметры, определяющие, какие запросы направлять в этот топик.Distance Matrix Async API распределяет запросы по топикам в зависимости от проекта, к которому они относятся. Для всех топиков, кроме топика по умолчанию, должна быть указана настройка
projects
, содержащая список проектов (см. Файл правил). Для топика по умолчанию должна быть указана настройкаdefault: true
. В топик по умолчанию будут направляться запросы, относящиеся к проектам, не упомянутым вprojects
для других топиков.В конфигурации должен быть задан один и только один топик с настройкой
default: true
.
-
-
-
keys
: настройки сервиса ключей.url
: URL сервиса ключей. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.token
: сервисный токен (см. Установка сервиса ключей).
-
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-navi-async-matrix.yaml
.helm upgrade --install --version=1.14.0 --atomic --values ./values-navi-async-matrix.yaml navi-async-matrix 2gis-on-premise/navi-async-matrix
Установка сервиса Restrictions API
-
Добавьте следующие настройки в конфигурационный файл Navi-Castle:
castle: restrictions: key: secret host: http://navi-restrictions.example.com cron: enabled: import: true restriction: true schedule: import: '11 * * * *' restriction: '*/5 * * * *'
Где:
-
restrictions.key
: ключ для взаимодействия с сервисом Restrictions API. Любая строка. -
restrictions.host
: URL сервиса Restrictions API. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
cron.schedule
: интервал обновления информации о перекрытиях дорог в формате cron.
-
-
Добавьте следующие расположения в настройки NGINX сервиса Navi-Front:
locationsBlock: | location /attract { proxy_pass http://navi-back.example.local; } location /edge { proxy_pass http://navi-back.example.local; }
-
Создайте конфигурационный файл для Helm. Подробное описание доступных параметров см. здесь.
Пример файла уже заполнен всеми необходимыми данными, собранными на предыдущих этапах.
values-restrictions.yaml
dgctlDockerRegistry: docker.storage.example.local:5000 db: host: navi-restrictions-postgresql.storage.example.local port: 5432 name: onpremise_restrictions user: dbuser_restrictions password: jwbK65iFrCCcNrkg api: attractor_url: 'http://navi-back.example.com/attract' 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: edges_url_template: 'http://navi-castle.example.com/restrictions_json/{project}/{date_str}_{hour}.json' edge_attributes_url_template: 'http://navi-back.example.com/edge?edge_id={edge_id}&offset=200&routing=carrouting' projects: - moscow api_key: secret
Где:
-
dgctlDockerRegistry
: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС. -
db
: настройки доступа к серверу PostgreSQL.host
: имя хоста или IP-адрес сервера.port
: порт, на котором слушает сервер.name
: имя базы данных.user
andpassword
: реквизиты для доступа к базе данных, указанной в параметреname
. Пользователь должен быть либо владельцем этой базы данных, либо суперпользователем.
-
api
: настройки API сервиса.-
attractor_url
: URL сервиса Navi-Back. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes. -
ingress
: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. URL, указанный в параметреingress.hosts.host
, должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.
-
-
cron
: настройки для получения информации от сервисов навигации.edges_url_template
: URL сервиса Navi-Castle. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.edge_attributes_url_template
: URL сервиса Navi-Back. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.projects
: список проектов Navi-Back (см. Файл правил).
-
api_key
: ключ для взаимодействия с сервисами навигации. Должен совпадать с настройкойrestrictions.key
сервиса Navi-Castle.
-
-
Установите сервис с помощью Helm, используя подготовленный конфигурационный файл
values-restrictions.yaml
:
helm upgrade --install --version=1.14.0 --atomic --wait-for-jobs --values ./values-restrictions.yaml navi-restrictions 2gis-on-premise/navi-restrictions
4. Проверьте работоспособность установленных сервисов
Проверка сервиса Navi-Castle
Чтобы проверить работоспособность сервиса Navi-Castle:
-
Пробросьте порт сервиса с помощью
kubectl
:kubectl port-forward navi-castle-0 7777:8080
-
Отправьте GET-запрос на корневой endpoint (
/
) с использованием cURL или аналогичного инструмента:curl -Lv http://navi-castle.example.com: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
Чтобы проверить работоспособность сервиса Navi-Back:
-
Пробросьте порт сервиса с помощью
kubectl
:kubectl port-forward navi-back-6864944c7-vrpns 7777:8080
-
Создайте следующий файл с телом запроса к 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 } ] }
-
Отправьте запрос с использованием cURL или аналогичного инструмента:
curl -Lv http://navi-back.example.com:7777/carrouting/6.0.0/global -d @data.json
Вы должны получить ответ со следующей структурой:
{ "query": {..}, "result": [{..}, {..}] "type": "result" }
См. документацию сервисов навигации для получения примеров запросов и ответов.
Проверка сервиса Navi-Router
Чтобы проверить работоспособность сервиса Navi-Router:
-
Пробросьте порт сервиса с помощью
kubectl
:kubectl port-forward navi-router-6864944c7-vrpns 7777:8080
-
Создайте файл с телом запроса к Directions API, идентичный файлу из раздела Проверка работоспособности Navi-Back.
-
Отправьте запрос с использованием cURL или аналогичного инструмента:
curl -Lv http://navi-router.example.com:7777/carrouting/6.0.0/global -d @data.json
Вы должны получить ответ, содержащий имя правила:
moscow_cr
Проверка сервиса Navi-Front
Чтобы проверить работоспособность сервиса Navi-Front:
-
Пробросьте порт сервиса с помощью
kubectl
:kubectl port-forward navi-front-6864944c7-vrpns 7777:8080
-
Создайте файл с телом запроса к Directions API, идентичный файлу из раздела Проверка работоспособности Navi-Back.
-
Отправьте запрос с использованием cURL или аналогичного инструмента:
curl -Lv http://navi-front.example.com:7777/carrouting/6.0.0/global -d @data.json
Вы должны получить ответ со следующей структурой:
{ "query": {..}, "result": [{..}, {..}] "type": "result" }
Проверка сервиса Distance Matrix Async API
Чтобы проверить работоспособность сервиса Distance Matrix Async API:
-
Пробросьте порт сервиса с помощью
kubectl
:kubectl port-forward navi-async-matrix-6864944c7-vrpns 7777:8080
-
Создайте следующий файл с телом запроса (приведён пример для Москвы):
{ "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] }
-
Отправьте запрос с использованием cURL или аналогичного инструмента:
curl -Lv https://navi-async-matrix.example.com/create_task/get_dist_matrix --header 'Content-Type: application/json' -d @data.json
Вы должны получить ответ со следующей структурой:
{ "task_id": "{TASK_ID}", "status ": "TASK_CREATED" }
-
Выполните запрос статуса задачи, подставив в 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": "start_time_ms=16516816106601123 calc_time_ms=14419 attract_time=4 build_time=28 points_count=3 source_count=1 target_count=2", "result_link": "http://navi-async-matrix-s3.storage.example.local:80/dm/{TASK_ID}.response.json" }
-
Скачайте результат вычислений по URL, полученному в поле
result_link
на предыдущем шаге. Убедитесь, что результат представляет собой валидный JSON-файл.
Проверка сервиса Restrictions API
Чтобы проверить, что сервис работает, отправьте GET-запрос на endpoint /healthcheck
.
Что дальше?
-
Узнайте, как обновить сервисы навигации:
-
Установите другие продукты программного комплекса 2ГИС: