---
title: "Getting Started with Jaeger to Build an Istio Service Mesh"
source: "https://www.tigera.io/blog/getting-started-with-jaeger-to-build-an-istio-service-mesh/"
---

[Technical Blog](https://www.tigera.io/category/technical-blog/)

# Getting Started with Jaeger to Build an Istio Service Mesh

By [Daniel Oh](https://www.tigera.io/blog/author/daniel-oh/) on Jul 18, 2019 • 5 min read

[Service mesh](https://www.tigera.io/learn/guides/service-mesh/) provides a dedicated network for service-to-service communication in a transparent way. [Istio](http://istio.io/docs/concepts/what-is-istio/) aims to help developers and operators address [service mesh](https://www.tigera.io/learn/guides/service-mesh/) features such as dynamic service discovery, mutual transport layer security (TLS), circuit breakers, rate limiting, and tracing. [Jaeger](http://www.jaegertracing.io/docs/1.9/) with Istio augments monitoring and tracing of cloud-native apps on a distributed networking system. This article explains how to get started with Jaeger to build an Istio [service mesh](https://www.tigera.io/learn/guides/service-mesh/) on the Kubernetes platform.

## Spinning up a Kubernetes cluster

[Minikube](http://opensource.com/article/18/10/getting-started-minikube) allows you to run a single-node Kubernetes cluster based on a virtual machine such as [KVM](http://www.linux-kvm.org/page/Main_Page), [VirtualBox](http://www.virtualbox.org/wiki/Downloads), or [HyperKit](http://github.com/moby/hyperkit) on your local machine. [Install Minikube](http://kubernetes.io/docs/tasks/tools/install-minikube/) and use the following shell script to run it:

```
`#!/bin/bash export MINIKUBE_PROFILE_NAME=istio-jaeger minikube profile $MINIKUBE_PROFILE_NAME minikube config set cpus 3 minikube config set memory 8192 # You need to replace appropriate VM driver on your local machine minikube config set vm-driver hyperkit minikube start`
```

In the above script, replace the **–vm-driver=xxx**option with the appropriate virtual machine driver on your operating system (OS).

## Deploying Istio service mesh with Jaeger

Download the Istio installation file for your OS from the [Istio release page](http://github.com/istio/istio/releases). In the Istio package directory, you will find the Kubernetes installation YAML files in **install/** and the sample applications in **sample/**. Use the following commands:

```
`$ curl -L http://git.io/getLatestIstio | sh - $ cd istio-1.0.5 $ export PATH=$PWD/bin:$PATH`
```

The easiest way to deploy Istio with Jaeger on your Kubernetes cluster is to use [Custom Resource Definitions](http://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions). Install Istio with mutual TLS authentication between sidecars with these commands:

```
`$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml $ kubectl apply -f install/kubernetes/istio-demo-auth.yaml`
```

Check if all pods of Istio on your Kubernetes cluster are deployed and running correctly by using the following command and review the output:

```
`$ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE grafana-59b8896965-p2vgs 1/1 Running 0 3h istio-citadel-856f994c58-tk8kq 1/1 Running 0 3h istio-cleanup-secrets-mq54t 0/1 Completed 0 3h istio-egressgateway-5649fcf57-n5ql5 1/1 Running 0 3h istio-galley-7665f65c9c-wx8k7 1/1 Running 0 3h istio-grafana-post-install-nh5rw 0/1 Completed 0 3h istio-ingressgateway-6755b9bbf6-4lf8m 1/1 Running 0 3h istio-pilot-698959c67b-d2zgm 2/2 Running 0 3h istio-policy-6fcb6d655f-lfkm5 2/2 Running 0 3h istio-security-post-install-st5xc 0/1 Completed 0 3h istio-sidecar-injector-768c79f7bf-9rjgm 1/1 Running 0 3h istio-telemetry-664d896cf5-wwcfw 2/2 Running 0 3h istio-tracing-6b994895fd-h6s9h 1/1 Running 0 3h prometheus-76b7745b64-hzm27 1/1 Running 0 3h servicegraph-5c4485945b-mk22d 1/1 Running 1 3h`
```

 

## Building sample microservice apps

You can use the [Bookinfo](http://github.com/istio/istio/tree/master/samples/bookinfo) app to learn about Istio’s features. Bookinfo consists of four microservice apps: *productpage*, *details*, *reviews*, and *ratings* deployed independently on Minikube. Each microservice will be deployed with an Envoy sidecar via Istio by using the following commands:

```
`// Enable sidecar injection automatically $ kubectl label namespace default istio-injection=enabled $ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml // Export the ingress IP, ports, and gateway URL $ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml $ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}') $ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}') $ export INGRESS_HOST=$(minikube ip) $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT`
```

 

## Accessing the Jaeger dashboard

To view tracing information for each HTTP request, create some traffic by running the following commands at the command line:

```
`$ while true; do curl -s http://${GATEWAY_URL}/productpage > /dev/null echo -n .; sleep 0.2 done`
```

You can access the Jaeger dashboard through a web browser with [http://localhost:16686](http://localhost:16686/) if you set up port forwarding as follows:

```
`kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=jaeger -o jsonpath='{.items[0].metadata.name}') 16686:16686 &`
```

You can explore all traces by clicking “Find Traces” after selecting the *productpage* service. Your dashboard will look similar to this:

![No alt text provided for this image](/app/uploads/2019/06/new-1.png)

You can also view more details about each trace to dig into performance issues or elapsed time by clicking on a certain trace.

![No alt text provided for this image](/app/uploads/2019/06/new-2.png)

## Conclusion

A distributed tracing platform allows you to understand what happened from service to service for individual ingress/egress traffic. Istio sends individual trace information automatically to Jaeger, the distributed tracing platform, even if your modern applications aren’t aware of Jaeger at all. In the end, this capability helps developers and operators do troubleshooting easier and quicker at scale.

This article is published originally at [http://opensource.com/article/19/3/getting-started-jaeger](http://opensource.com/article/19/3/getting-started-jaeger)

This article originated from [http://www.linkedin.com/pulse/getting-started-jaeger-build-istio-service-mesh-daniel-oh/](http://www.linkedin.com/pulse/getting-started-jaeger-build-istio-service-mesh-daniel-oh/)

[Daniel Oh](http://kr.linkedin.com/in/daniel-oh-083818112) works as a principal technical product marketing manager at Red Hat as well as CNCF ambassador to encourage developers’ participation of cloud-native app development at scale and speed.

————————————————-

[**Free Online Training**](https://www.tigera.io/events/)

Access Live and On-Demand Kubernetes Tutorials

[**Calico Enterprise – Free Trial**](https://www.calicocloud.io/home)

Solve Common Kubernetes Roadblocks and Advance Your Enterprise Adoption

[How-To](https://www.tigera.io/tags/how-to/)[Open Source](https://www.tigera.io/tags/open-source/)[Service Mesh](https://www.tigera.io/tags/service-mesh/)

## Related posts

[![Save the Address, Save the Cloud: A Hands-on KubeVirt Live Migration Workshop](https://www.tigera.io/app/uploads/2026/07/Save-the-Address-Save-the-Cloud-A-Hands-on-KubeVirt-Live-Migration-Workshop.png)](https://www.tigera.io/blog/save-the-address-save-the-cloud-a-hands-on-kubevirt-live-migration-workshop/)

#### [Save the Address, Save the Cloud: A Hands-on KubeVirt Live Migration Workshop](https://www.tigera.io/blog/save-the-address-save-the-cloud-a-hands-on-kubevirt-live-migration-workshop/)

By [Reza Ramezanpour](https://www.tigera.io/blog/author/rezar/)
on Jul 9, 2026

In the previous post in this series, we covered why Virtual Machine (VM) Live Migration in Kubernetes is difficult: a VM’s IP is its identity, and the “new” VM on the destination node has to...

[Read more](https://www.tigera.io/blog/save-the-address-save-the-cloud-a-hands-on-kubevirt-live-migration-workshop/)

[![What’s new in Calico: Spring 2026 Release](https://www.tigera.io/app/uploads/2026/06/Whats-New-in-Calico-NEW-TEMPLATE-2026.png)](https://www.tigera.io/blog/whats-new-in-calico-spring-2026-release/)

[Company Blog](https://www.tigera.io/category/company-blog/)

#### [What’s new in Calico: Spring 2026 Release](https://www.tigera.io/blog/whats-new-in-calico-spring-2026-release/)

By [Veronika Smolik](https://www.tigera.io/blog/author/veronika-smolik/)
on Jun 2, 2026

Kubernetes has come a long way since its debut in 2014. It’s gone from running a couple of containerized microservices to orchestrating fleets of production workloads spanning everything from AI agents to full scale VMs...

[Read more](https://www.tigera.io/blog/whats-new-in-calico-spring-2026-release/)

[![Kubernetes Operational Maturity: Secure and Resilient Cluster Federation with Cluster Mesh](https://www.tigera.io/app/uploads/2026/05/Kubernetes-Operational-Maturity-Secure-and-Resilient-Cluster-Federation-with-Cluster-Mesh.png)](https://www.tigera.io/blog/kubernetes-operational-maturity-secure-and-resilient-cluster-federation-with-cluster-mesh/)

#### [Kubernetes Operational Maturity: Secure and Resilient Cluster Federation with Cluster Mesh](https://www.tigera.io/blog/kubernetes-operational-maturity-secure-and-resilient-cluster-federation-with-cluster-mesh/)

By [Veronika Smolik](https://www.tigera.io/blog/author/veronika-smolik/)
on May 25, 2026

Practically no one runs a single Kubernetes cluster in production these days. Maybe that’s how it started but data sovereignty requirements, acquisitions, AI initiatives and the need for edge servers, among other considerations, have pulled...

[Read more](https://www.tigera.io/blog/kubernetes-operational-maturity-secure-and-resilient-cluster-federation-with-cluster-mesh/)

<!-- plugin=object-cache-pro client=phpredis metric#hits=6545 metric#misses=18 metric#hit-ratio=99.7 metric#bytes=2029734 metric#prefetches=415 metric#store-reads=30 metric#store-writes=15 metric#store-hits=423 metric#store-misses=7 metric#sql-queries=31 metric#ms-total=1214.72 metric#ms-cache=24.77 metric#ms-cache-avg=0.5629 metric#ms-cache-ratio=2.0 sample#redis-hits=30506059 sample#redis-misses=7380318 sample#redis-hit-ratio=80.5 sample#redis-ops-per-sec=17 sample#redis-evicted-keys=0 sample#redis-used-memory=134646680 sample#redis-used-memory-rss=111788032 sample#redis-memory-fragmentation-ratio=0.8 sample#redis-connected-clients=1 sample#redis-tracking-clients=0 sample#redis-rejected-connections=0 sample#redis-keys=105007 -->
