This document provides an overview of Istio and how it works. It discusses the key components of Istio including Envoy, Pilot, Mixer and Citadel. It explains how these components interact to route traffic between services, enforce policies and collect telemetry. The objectives are to learn how packets flow through an Istio mesh, understand the role of the control plane and build a mental model for debugging Istio.
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, January 2019)
1. Do you need a Service Mesh? @mt165pro
Istio: An Introduction
Matt Turner
@mt165
mt165.co.uk
DevSecOps London
January 2019
2. Istio: an introduction @mt165
Objectives
Learn how a packet traverses an Istio/Envoy/Kubernetes system
See how the control plane is involved in that process
Build a useful mental model for reasoning about, and debugging Istio
3. Istio: an introduction @mt165
Prerequisites
Basic networking knowledge
Intermediate Kubernetes knowledge
An understanding of what Istio is and does
19. Istio: an introduction @mt165
Services
$ kubectl get service -o wide service-b
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service-b ClusterIP 10.98.84.169 <none> 80/TCP 90s app=service-b
20. Istio: an introduction @mt165
Service DNS exposure
$ dig service-b.default.svc.cluster.local.
;; ANSWER SECTION:
service-b.default.svc.cluster.local. 5 IN A 10.98.84.169
22. Istio: an introduction @mt165
Endpoints
$ kubectl get endpoints service-b
NAME ENDPOINTS AGE
service-b 10.32.0.4:8080,10.32.0.5:8080,10.32.0.6:8080 8m55s
27. Istio: an introduction @mt165
Envoy
SvcA
Pilot
Control Plane API
Service A Service B
Config to
Envoys
28. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer
Control Plane API
Service A Service B
Config to
Envoys
Policy checks,
Telemetry
29. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot
Mixer
Control Plane API
Service A Service B
Config to
Envoys
prom ES
REPORT
CHECK
RBAC Rate
limit
Mixer fat client Mixer fat client
31. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer
Control Plane API
Service A Service B
Config to
Envoys
Policy checks,
Telemetry
32. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer Citadel
Control Plane API
Service A Service B
Config to
Envoys
TLS certs
to Envoys
Policy checks,
Telemetry
33. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer Citadel
Control Plane API
Service A Service B
Config to
Envoys
TLS certs
to Envoys
Policy checks,
Telemetry
34. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer Citadel
Control Plane API
Service A Service B
Config to
Envoys
TLS certs
to Envoys
Policy checks,
Telemetry
API Serveretcd
kubectl
35. Istio: an introduction @mt165
Envoy
SvcA
Envoy
SvcB
Pilot Mixer Citadel
Control Plane API
Service A Service B
Config to
Envoys
TLS certs
to Envoys
Policy checks,
Telemetry
Envoy
Envoy
Envoy
Envoy
Envoy
Envoy
Envoy
Envoy
Ingress Egress
36. Istio: an introduction @mt165
Recap
We learned:
● How a packet traverses an Istio/Envoy/Kubernetes system
● What control plane calls are made in that process
● A useful mental model for reasoning about, and debugging Istio
37. Do you need a Service Mesh? @mt165pro
Thanks!
@mt165