Istio is a recently launched project to provide "an open platform to connect, manage and secure microservices" - currently within a Kubernetes context.
It uses Envoy to provide the proxy, and is currently using Zipkin to provide distributed tracing capabilities (I believe via Envoy integration).
Would like to explore options for using Jaeger with Istio.
This page shows the high level architecture and the role played by the 'mixer' component. This component currently uses the Go opentracing API (with basic tracer) to apparently provide logging of the mixer.
In a recent presentation, they showed what I believe is their intended approach to tracing (slide 16):
https://istio.io/talks/istio_talk_gluecon_2017.pdfThis shows the Zipkin span data being passed from Envoy via adapters in the mixer which (if necessary) would transform the Zipkin format into an appropriate format for the backend.
The various options I can see are:
1) Implement a C++ provider for Jaeger, which would integrate into Envoy. The pro for this is that it could propagate baggage, which any other option based on using the Zipkin data would not be able to.
2) Capture Zipkin data and route it to the Jaeger backend - this may be the only short term option. One other consideration with this, and any other option based on the Zipkin data, is how the service would participate in the tracing - i.e. whether a Jaeger or Zipkin client should be used by the service.
3) Provide an adapter in the mixer (once this approach is supported in the project). Main benefit I see of this approach is having more control over the client, for sampling strategies, etc.
Thoughts?