Skip to content

ExpediaDotCom/haystack-istio

Repository files navigation

Build Status License

Istio adapter for haystack distributed tracing

This is an Istio adapter that forwards the telemetry data to haystack system. It is compatbile with istio version >= 1.0.4

How it works?

Istio's mixer receives the telemtry data from envoy proxy that runs as a sidecar with microservice app. Mixer can be configured to forward this data to various adapters. We have built a new adapter for haystack that runs as an out-of-process grpc server and can receive telemetry data from mixer.

The adapter internally converts the istio's span object into protobuf format and forwards to haystack-agent. The haystack-agent runs as a sidecar with the adapter. You can run as many replicas in order to scale.

We also provide k8s spec that helps you deploy haystack-adapter and haystack-agent in the same pod.

How to deploy adapter?

Following steps are required to run the adapter:

  1. kubectl apply -f haystack-adapter.yaml
  2. kubectl apply -f tracespan.yaml
  3. kubectl apply -f config/haystack.yaml -f operator/haystack-operator.yaml

The first step installs haystack-agent and adapter(grpc server). The second step installs the tracespan template in istio. You can skip this step if this template is already installed. The third step registers the haystack-adapter within istio, it configures the handler, instance object and rule. For more details read this

How to build this library?

make setup - if you are running for the very first time. This does some hacking to setup the right environment

make -C $GOPATH/src/istio.io/istio/mixer/adapter/haystack build - builds the adapter code

make -C $GOPATH/src/istio.io/istio/mixer/adapter/haystack docker deploy - will build the docker image and deploy in kubernetes cluster.

How to run integration tests?

Install docker and docker-compose. Add following entries in /etc/hosts

$(docker-machine ip) mixs kafkasvc

make -C $GOPATH/src/istio.io/istio/mixer/adapter/haystack integration_tests