Может ли envoy в istio отслеживать внешний https api?

Мы используем istio для использования распределенной трассировки. Наши микросервисы иногда нуждаются в обращении к внешним API, которые обычно обмениваются данными по https.

Чтобы измерить точную производительность всей системы, мы хотим отслеживать обмен данными при обращении к внешнему API.
Однако распределенная трассировка требует доступа к заголовку запроса, но https не разрешает доступ, поскольку заголовок зашифрован.
Для подтверждения я развернул bookinfo на GKE с включенным istio, ввел контейнер страницы продукта модуля страницы продукта и выполнил следующую команду.

$ curl http://google.com
$ curl https://google.com

На zipkin отображалось только http-соединение.

Можно ли получить серию трассировок, включая API, использующие внешний https?


person yu saito    schedule 27.01.2020    source источник
comment
На основе github по умолчанию частота дискретизации отслеживание составляет 1%. Не могли бы вы попробовать изменить его на 100%, а затем попробовать? Дай мне знать, если это сработает.   -  person Jakub    schedule 27.01.2020
comment
Этот тест был проведен после установки частоты дискретизации на 100%.   -  person yu saito    schedule 28.01.2020
comment
Посмотрите эти 2 ссылки: посланник, stackoverflow, исходя из этого, я бы сказал невозможно использовать zipkin для отслеживания https. Дайте мне знать, если это ответит на ваш вопрос.   -  person Jakub    schedule 28.01.2020
comment
Спасибо за информацию. Я прочитал вашу ссылку и понимаю, что посланник не предоставляет трассировщик https.   -  person yu saito    schedule 29.01.2020


Ответы (2)


Вам следует использовать egress-gateway. Когда все внешние вызовы поступают на шлюз, istio может получить метаданные и выполнить некоторые работы по трассировке. Использование шлюза входа / выхода дает множество преимуществ:

  • Повышение безопасности: мы можем установить все правила безопасности на шлюзе.
  • Абстрагирование логики приложения: вместо настройки параметров на каждом микросервисе.
  • Обработка TLS: как и в приведенном выше примере, посланник может иметь все необходимые данные в запросах HTTPS.
person hqt    schedule 27.01.2020
comment
Вам также нужно сделать простой HTTP-вызов службы и позволить выходному шлюзу выполнять TLS-источник? - person David Maze; 27.01.2020
comment
К сожалению, это не работает ... Я подписался на egress-gateway, мне не удалось получить информацию о диапазоне. Я думаю, что исходящий шлюз отслеживает информацию о запросах https, но это не часть трассировки. - person yu saito; 29.01.2020

На основе документация envoy не поддерживает трассировку https.

Конфигурация трассировки определяет глобальные настройки для трассировщика HTTP, используемого Envoy. Конфигурация определяется полем трассировки Bootstrap. Envoy может поддерживать другие трассировщики в будущем, но сейчас поддерживается только HTTP-трассировщик.

И этот пост в stackoverflow

HTTPS (HTTP через SSL) отправляет весь HTTP-контент через SSL-туннель, поэтому HTTP-контент и заголовки также зашифрованы.

Я даже пытался воспроизвести это, но, как и в вашем случае, zipkin работал только для http.

Исходя из этого, я бы сказал, что использовать zipkin для отслеживания https невозможно.

person Jakub    schedule 30.01.2020