Перейти к основному содержимому

Установка прокси для API пробок

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

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

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

1. Перед установкой

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

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

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

    ОбъектПример значенияКак получить значение
    Endpoint зеркала реестра Dockerdocker.storage.example.local:5000См. Получение артефактов установки
    Секрет Kubernetes для доступа к зеркалу реестра Dockeronpremise-registry-credsСм. Получение артефактов установки
  4. Убедитесь, что удовлетворены требования к ресурсам, приведенные в Helm-чарте. Подробнее о том, как это сделать, смотрите в документе Системные требования.

Примечание

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

2. Установите прокси для API пробок

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

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

    values-traffic-proxy.yaml
    dgctlDockerRegistry: docker.storage.example.local:5000

    imagePullSecrets: [onpremise-registry-creds]

    replicaCount: 1

    proxy:
    host: https://traffic-jams.2gis.com
    worker:
    processes: 2
    connections: 1024
    log:
    customFormats: []
    # - name: small
    # escape: json
    # format: |
    # '{"time_local":"$time_local",'
    # '"remote_addr":"$remote_addr",'
    # '"request":"$request",'
    # '"status":"$status",'
    # '"host":"$host"}'
    errorLog:
    level: error

    accessLog: '/dev/null'
    # accessLog: '/dev/stdout main'

    keepaliveTimeout: 65

    locations: []
    # - path: /test/
    # definition: |
    # default_type text/html;
    # return 200 "<!DOCTYPE html><h2>test page</h2>\n";

    httpServers:
    {}
    # examplecfg: |
    # server {
    # listen 0.0.0.0:8080;

    # location / {
    # default_type text/html;
    # return 200 "<!DOCTYPE html><h2>test page</h2>\n";
    # }
    # }

    resources:
    requests:
    cpu: 10m
    memory: 32Mi
    limits:
    cpu: 500m
    memory: 256Mi

    ingress:
    enabled: true
    className: nginx
    hosts:
    - host: traffic-proxy.example.com
    paths:
    - path: /
    pathType: Prefix
    tls: []
    #- hosts:
    # - traffic-proxy-api.example.com
    # secretName: secret.tls

    Где:

    • dgctlDockerRegistry: endpoint вашего реестра Docker, в котором находятся образы сервисов программного комплекса 2ГИС.
    • imagePullSecrets: Kubernetes Secrets для доступа к реестру Docker, в котором находятся образы сервисов программного комплекса 2ГИС.
    • replicaCount: число реплик сервиса NGINX.
    • proxy: настройки прокси-сервера.
      • host: FQDN публичного сервера обновлений для пробок 2ГИС. Список доступных серверов приведен в разделе Архитектура.
      • worker: настройки рабочих процессов.
        • processes: количество рабочих процессов.
        • connections: количество соединений на одном рабочем процессе.
      • log: настройки логирования.
        • customFormats: список форматов записей логов для использования в конфигурации NGINX.
        • errorLog.level: уровень логирования ошибок. Допустимые значения: debug, info, notice, warn, error, crit, alert, emerg.
        • accessLog: логирование доступа.
      • keepaliveTimeout: таймаут keep-alive соединения.
      • locations: дополнительные блоки location, которые будут включены в конфигурацию NGINX.
      • httpServers: дополнительные блоки server, которые будут включены в конфигурацию NGINX.
    • resources: настройки вычислительных ресурсов для сервиса. Чтобы узнать рекомендуемые значения ресурсов, см. Вычислительные ресурсы.
    • ingress: конфигурация ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. Обратите внимание, что путь для хоста должен указывать на /.
  2. Установите сервис с помощью Helm, используя подготовленный конфигурационный файл values-traffic-proxy.yaml:

    helm upgrade --install --atomic --wait-for-jobs --values ./values-traffic-proxy.yaml traffic-proxy 2gis-on-premise/traffic-proxy

3. Проверьте работоспособность установленного сервиса

1. Проверьте работу прокси для API пробок

В браузере перейдите по адресу, который указан в параметре ingress.hosts[0].host конфигурационного файла для установки прокси для API пробок, и укажите путь /traffic/moses/speeds5.json. Например, traffic-proxy-api.example.com/traffic/moses/speeds5.json.

Либо выполните GET-запрос к аналогичному адресу:

curl -X GET https://traffic-proxy-api.example.com/traffic/moses/speeds5.json

В ответе вы должны получить JSON-объект со списком файлов с данными пробок.

2. Проверьте получение данных пробок со стороны сервиса-потребителя

Чтобы проверить, что сервис Navi-Back получает данные пробок через прокси, выполните следующие шаги:

  1. Выполните любой из подготовительных шагов:

    • Убедитесь, что в конфигурационном файле для установки сервиса Navi-Back задан параметр ingress.enabled: "true". В следующих шагах используйте адрес, который указан в параметре ingress.hosts[0].host конфигурационного файла Navi-Back (например, https://navi-back-ingress.example.com).
    • Пробросьте HTTP-порт контейнера Navi-Back на уровень хост-сети для обращения к сервисным endpoint-ам. В следующих шагах используйте IP-адрес и порт хоста.
  2. Проверьте время последнего получения данных пробок одним из способов ниже:

    • Получите значения метрик Navi-Back в формате Prometheus через endpoint /metrics. Добавьте к адресу из подготовительного шага путь /metrics и отправьте GET-запрос. Пример:

      curl -X GET https://navi-back-ingress.example.com/metrics

      Ответ должен содержать метрики mosesd_jams (временную метку последнего получения данных пробок в формате UNIX timestamp) и mosesd_jams_delay (время, прошедшее с последнего момента получения данных). Если эти метрики отсутствуют, сервис не смог получить данные о пробках через прокси.

    • В браузере перейдите по адресу из подготовительного шага и добавьте к нему путь /city. Например, navi-back-ingress.example.com/city?type=json.

      Вы должны получить HTML-страницу со столбцом пробки и временем последнего получения данных.

    • Отправьте GET-запрос по адресу из подготовительного шага и добавьте к нему путь /city. Например:

      curl -X GET https://navi-back-ingress.example.com/city?type=json

      В ответе вы должны получить JSON-объект с полем пробки и временем последнего получения данных.

Что дальше?