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

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

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

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

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

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

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

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

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

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

    Примечание

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

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: доменное имя, IP-адрес или URL публичного сервера обновлений для пробок 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-объект с полем пробки и временем последнего получения данных.

Что дальше?