SlideShare a Scribd company logo
through Istio
The Life of a Packet
Matt Turner
@mt165pro
mt165.co.uk
Cloud Native London
September 2018
Outline
● How a packet traverses an Istio / Envoy / Kubernetes system
● What control plane calls are made in that process
● Hopefully a useful mental model for reasoning about, and debugging Istio
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
API Serveretcd
istioctl
The life of a packet through Istio @mt165pro
ClusterIP
envoyenvoyenvoyenvoyenvoy
Load Balancer
NodePort
*.example.com
INGRESS
iptables
ClusterIP
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
“Containers”
nginx
net
ipc
user
pid
uts
mnt
supervisord
nginx
The life of a packet through Istio @mt165pro
Kubernetes Pods
net
ipc
user
uts
fluentd
pid
uts
mnt
nginx
nginx
mnt
supervisord
logger
The life of a packet through Istio @mt165pro
Kubernetes Pods
nginx
net
ipc
user
fluentd
pid
uts
mnt
192.168.0.42
eth0
lo
sockets
iptables
routes
fluentd
uts
mnt
nginx
nginx
supervisord
logger
The life of a packet through Istio @mt165pro
Kubernetes Pods
nginx
net
ipc
user
uts
mnt
fluentd
pid
uts
mnt
eth0
lo
sockets
iptables
routes
:8080/tcp nginx fluentd
nginx
supervisord
logger
192.168.0.42
The life of a packet through Istio @mt165pro
Kubernetes Pods
nginx
net
ipc
user
uts
mnt
envoy
pid
uts
mnt
eth0
lo
sockets
iptables
routes
:8080/tcp nginx
nginx
192.168.0.42
The life of a packet through Istio @mt165pro
Sidecar Injection
net
ipc
user
eth0
lo
sockets
iptables
routes
192.168.0.42
The life of a packet through Istio @mt165pro
k8s consul zk
Data plane API
The life of a packet through Istio @mt165pro
Sidecar Injection
alpine
net
ipc
user
eth0
lo
sockets
iptables
routes
sysctl -w kernel.core_pattern=...
192.168.0.42
The life of a packet through Istio @mt165pro
Sidecar Injection
istio/proxy_init
net
ipc
user
eth0
lo
sockets
iptables
routes
/usr/local/bin/prepare_proxy.sh -p 15001 -u 1337
192.168.0.42
The life of a packet through Istio @mt165pro
Sidecar Injection
net
ipc
user
pid
uts
mnt
istio/proxy
pid
uts
mnt
eth0
lo
sockets
iptables
routes
:15001/tcp
nginx envoy
nginx
192.168.0.42
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
?
?
?
The life of a packet through Istio @mt165pro
Services
$ kubectl get services -o wide | grep httpbin
httpbin NodePort 10.0.0.244 <none> 80:30082/TCP 16m app=httpbin
The life of a packet through Istio @mt165pro
Service DNS exposure
# dig httpbin.default.svc.cluster.local
httpbin.default.svc.cluster.local. 23 IN A 10.0.0.244
The life of a packet through Istio @mt165pro
Pods
$ kubectl get pods -o wide | grep httpbin
httpbin-76ddd74666-2m6ds 1/1 Running 0 16m 172.17.0.13 minikube
httpbin-76ddd74666-ls66n 1/1 Running 0 16m 172.17.0.12 minikube
httpbin-76ddd74666-x5ql2 1/1 Running 0 16m 172.17.0.5 minikube
The life of a packet through Istio @mt165pro
Endpoints
$ kubectl get endpoints | grep httpbin
httpbin 172.17.0.12:8000,172.17.0.13:8000,172.17.0.5:8000 21m
The life of a packet through Istio @mt165pro
Endpoints
$ kubectl get endpoints httpbin -o yaml
apiVersion: v1
kind: Endpoints
…
subsets:
- addresses:
- ip: 172.17.0.12
nodeName: minikube
targetRef:
kind: Pod
…
ports:
- name: http
port: 8000
protocol: TCP
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
IP 5-tuple
(src_addr, src_port, dst_addr, dst_port, proto)
The life of a packet through Istio @mt165pro
IP Router Architecture
Interrupt
Kernel module
User process
DATA PLANE
CONTROL PLANE
OSPF ARPBGP STP
Router
Information
Base
Forwarding
Information
Base
The life of a packet through Istio @mt165pro
IP Router Architecture
Interrupt
Kernel module
User process
DATA PLANE
CONTROL PLANE
OSPF ARPBGP STP
Router
Information
Base
Forwarding
Information
Base
PILOT
MIXER
ENVOY
The life of a packet through Istio @mt165pro
Mixer
Mixer Fat
Client
sysdig datadog
REPORT
CHECK
Custom
auth
Custom
classifier
Mixer Fat
Client
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
The life of a packet through Istio @mt165pro
kittenz.com
envoyenvoyenvoyenvoyenvoy
EGRESS
Conclusion / Recap
● A packet traverses
○ Cloud
○ Kubernetes
○ Istio Ingress
○ The Pod construct
○ Envoy
○ Application
○ mTLS tunnel
○ Egress
● Pilot pre-programmes Envoys for Service Discovery
● Mixer sits on the hot path for real-time Policy
● Citadel issues certificates for mTLS
Thanks
@mt165pro

More Related Content

What's hot

OAuth and STUN, TURN in WebRTC context RFC7635
OAuth and STUN, TURN  in WebRTC context RFC7635OAuth and STUN, TURN  in WebRTC context RFC7635
OAuth and STUN, TURN in WebRTC context RFC7635
Mihály Mészáros
 
Webrtc puzzle
Webrtc puzzleWebrtc puzzle
Webrtc puzzle
Mihály Mészáros
 
The Concierge Paradigm
The Concierge ParadigmThe Concierge Paradigm
The Concierge Paradigm
Gareth Brown
 
OVS Hardware Offload with TC Flower
OVS Hardware Offload with TC FlowerOVS Hardware Offload with TC Flower
OVS Hardware Offload with TC Flower
Netronome
 
LF_OVS_17_LXC Linux Containers over Open vSwitch
LF_OVS_17_LXC Linux Containers over Open vSwitchLF_OVS_17_LXC Linux Containers over Open vSwitch
LF_OVS_17_LXC Linux Containers over Open vSwitch
LF_OpenvSwitch
 
Containers from scratch
Containers from scratchContainers from scratch
Containers from scratch
J On The Beach
 
Sipwise rtpengine
Sipwise rtpengineSipwise rtpengine
Sipwise rtpengine
Andreas Granig
 
Super-Charging Kamailio
Super-Charging KamailioSuper-Charging Kamailio
Super-Charging Kamailio
Andreas Granig
 
Kubernetes Intro
Kubernetes IntroKubernetes Intro
Kubernetes Intro
Antonio Ojea Garcia
 
Metrics spark meetup
Metrics spark meetupMetrics spark meetup
Metrics spark meetup
Steven Le Roux
 
Salottino MIX 2017 - ARouteServer - IXP Automation Made Easy
Salottino MIX 2017 - ARouteServer - IXP Automation Made EasySalottino MIX 2017 - ARouteServer - IXP Automation Made Easy
Salottino MIX 2017 - ARouteServer - IXP Automation Made Easy
Pier Carlo Chiodi
 
Castoro / RubyKaigi2010
Castoro / RubyKaigi2010Castoro / RubyKaigi2010
Castoro / RubyKaigi2010
Toshiyuki Terashita
 
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - NokiaSummit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
OPNFV
 
Quic Tools Presentation
Quic Tools PresentationQuic Tools Presentation
Quic Tools Presentation
kmunro1973
 
Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...
Alessandro Confetti
 
Kubernetes at Datadog Scale - Ara Pulido
Kubernetes at Datadog Scale - Ara PulidoKubernetes at Datadog Scale - Ara Pulido
Kubernetes at Datadog Scale - Ara Pulido
PROIDEA
 
"Developing a multicurrency, multisignature wallet" by Alex Melville
"Developing a multicurrency, multisignature wallet" by Alex Melville  "Developing a multicurrency, multisignature wallet" by Alex Melville
"Developing a multicurrency, multisignature wallet" by Alex Melville
ICOVO
 
Zero cloud adrian_otto
Zero cloud adrian_ottoZero cloud adrian_otto
Zero cloud adrian_otto
Data Con LA
 
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
PROIDEA
 
An introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the massesAn introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the masses
Dominik Obermaier
 

What's hot (20)

OAuth and STUN, TURN in WebRTC context RFC7635
OAuth and STUN, TURN  in WebRTC context RFC7635OAuth and STUN, TURN  in WebRTC context RFC7635
OAuth and STUN, TURN in WebRTC context RFC7635
 
Webrtc puzzle
Webrtc puzzleWebrtc puzzle
Webrtc puzzle
 
The Concierge Paradigm
The Concierge ParadigmThe Concierge Paradigm
The Concierge Paradigm
 
OVS Hardware Offload with TC Flower
OVS Hardware Offload with TC FlowerOVS Hardware Offload with TC Flower
OVS Hardware Offload with TC Flower
 
LF_OVS_17_LXC Linux Containers over Open vSwitch
LF_OVS_17_LXC Linux Containers over Open vSwitchLF_OVS_17_LXC Linux Containers over Open vSwitch
LF_OVS_17_LXC Linux Containers over Open vSwitch
 
Containers from scratch
Containers from scratchContainers from scratch
Containers from scratch
 
Sipwise rtpengine
Sipwise rtpengineSipwise rtpengine
Sipwise rtpengine
 
Super-Charging Kamailio
Super-Charging KamailioSuper-Charging Kamailio
Super-Charging Kamailio
 
Kubernetes Intro
Kubernetes IntroKubernetes Intro
Kubernetes Intro
 
Metrics spark meetup
Metrics spark meetupMetrics spark meetup
Metrics spark meetup
 
Salottino MIX 2017 - ARouteServer - IXP Automation Made Easy
Salottino MIX 2017 - ARouteServer - IXP Automation Made EasySalottino MIX 2017 - ARouteServer - IXP Automation Made Easy
Salottino MIX 2017 - ARouteServer - IXP Automation Made Easy
 
Castoro / RubyKaigi2010
Castoro / RubyKaigi2010Castoro / RubyKaigi2010
Castoro / RubyKaigi2010
 
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - NokiaSummit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
Summit 16: ARM Mini-Summit - OpenFastPath is Open and Fast - Nokia
 
Quic Tools Presentation
Quic Tools PresentationQuic Tools Presentation
Quic Tools Presentation
 
Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...
 
Kubernetes at Datadog Scale - Ara Pulido
Kubernetes at Datadog Scale - Ara PulidoKubernetes at Datadog Scale - Ara Pulido
Kubernetes at Datadog Scale - Ara Pulido
 
"Developing a multicurrency, multisignature wallet" by Alex Melville
"Developing a multicurrency, multisignature wallet" by Alex Melville  "Developing a multicurrency, multisignature wallet" by Alex Melville
"Developing a multicurrency, multisignature wallet" by Alex Melville
 
Zero cloud adrian_otto
Zero cloud adrian_ottoZero cloud adrian_otto
Zero cloud adrian_otto
 
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
DOD 2016 - Kamil Szczygieł - Patching 100 OpenStack Compute Nodes with Zero-d...
 
An introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the massesAn introduction to MQTT - Pub / Sub for the masses
An introduction to MQTT - Pub / Sub for the masses
 

Similar to The life of a packet through Istio

The Life of a Packet III - Service Mesh London
The Life of a Packet III - Service Mesh LondonThe Life of a Packet III - Service Mesh London
The Life of a Packet III - Service Mesh London
Matt Turner
 
The Life of a Packet through Istio III
The Life of a Packet through Istio IIIThe Life of a Packet through Istio III
The Life of a Packet through Istio III
Matt Turner
 
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Michael Man
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
James Titcumb
 
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Andrew Randall
 
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
Natan Silnitsky
 
HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!
Daniel Stenberg
 
SDN Training - Open daylight installation + example with mininet
SDN Training - Open daylight installation + example with mininetSDN Training - Open daylight installation + example with mininet
SDN Training - Open daylight installation + example with mininet
SAMeh Zaghloul
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
Daniel Stenberg
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
Eueung Mulyana
 
Http3 fullstackfest-2019
Http3 fullstackfest-2019Http3 fullstackfest-2019
Http3 fullstackfest-2019
Daniel Stenberg
 
tit
tittit
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Kiwamu Okabe
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issues
Michael Klishin
 
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Natan Silnitsky
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Stefan Schimanski
 
Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?
APNIC
 
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみるK8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
JUNICHI YOSHISE
 
Securing & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave NetSecuring & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave Net
Luke Marsden
 
Scaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @NetflixScaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @Netflix
C4Media
 

Similar to The life of a packet through Istio (20)

The Life of a Packet III - Service Mesh London
The Life of a Packet III - Service Mesh LondonThe Life of a Packet III - Service Mesh London
The Life of a Packet III - Service Mesh London
 
The Life of a Packet through Istio III
The Life of a Packet through Istio IIIThe Life of a Packet through Istio III
The Life of a Packet through Istio III
 
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
Adding 1.21 Gigawatts to Applications with RabbitMQ (DPC 2015)
 
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
 
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
Polyglot, fault-tolerant event-driven programming with kafka, kubernetes and ...
 
HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!
 
SDN Training - Open daylight installation + example with mininet
SDN Training - Open daylight installation + example with mininetSDN Training - Open daylight installation + example with mininet
SDN Training - Open daylight installation + example with mininet
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
 
Http3 fullstackfest-2019
Http3 fullstackfest-2019Http3 fullstackfest-2019
Http3 fullstackfest-2019
 
tit
tittit
tit
 
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ Nagoya
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issues
 
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?Are we really ready to turn off IPv4?
Are we really ready to turn off IPv4?
 
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみるK8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
K8s上の containerized cloud foundryとcontainerized open stackをprometheusで監視してみる
 
Securing & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave NetSecuring & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave Net
 
Scaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @NetflixScaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @Netflix
 

More from Matt Turner

Automated Cloud-Native Incident Response with Kubernetes and Service Mesh
Automated Cloud-Native Incident Response with Kubernetes and Service MeshAutomated Cloud-Native Incident Response with Kubernetes and Service Mesh
Automated Cloud-Native Incident Response with Kubernetes and Service Mesh
Matt Turner
 
apiserver-Only "Clusters" for fun and profit
apiserver-Only "Clusters" for fun and profitapiserver-Only "Clusters" for fun and profit
apiserver-Only "Clusters" for fun and profit
Matt Turner
 
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenariosIstio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
Matt Turner
 
Why Is Istio That Shape?
Why Is Istio That Shape?Why Is Istio That Shape?
Why Is Istio That Shape?
Matt Turner
 
Dynamically Testing Individual Microservice Releases In Production
  Dynamically Testing Individual Microservice Releases In Production  Dynamically Testing Individual Microservice Releases In Production
Dynamically Testing Individual Microservice Releases In Production
Matt Turner
 
Gateway APIs, Envoy Gateway, and API Gateways
Gateway APIs, Envoy Gateway, and API GatewaysGateway APIs, Envoy Gateway, and API Gateways
Gateway APIs, Envoy Gateway, and API Gateways
Matt Turner
 
Cloud-Native Progressive Delivery
Cloud-Native Progressive DeliveryCloud-Native Progressive Delivery
Cloud-Native Progressive Delivery
Matt Turner
 
An Introduction to Bazel
An Introduction to BazelAn Introduction to Bazel
An Introduction to Bazel
Matt Turner
 
What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your Microservices
Matt Turner
 
Debugging an RBAC Problem in Istio
Debugging an RBAC Problem in IstioDebugging an RBAC Problem in Istio
Debugging an RBAC Problem in Istio
Matt Turner
 
Software Networking and Interfaces on Linux
Software Networking and Interfaces on LinuxSoftware Networking and Interfaces on Linux
Software Networking and Interfaces on Linux
Matt Turner
 
Do You Need a Service Mesh? @ London Devops, January 2019
Do You Need a Service Mesh? @ London Devops, January 2019Do You Need a Service Mesh? @ London Devops, January 2019
Do You Need a Service Mesh? @ London Devops, January 2019
Matt Turner
 
Bash is Testing
Bash is TestingBash is Testing
Bash is Testing
Matt Turner
 
Fluency
FluencyFluency
Fluency
Matt Turner
 
An Introduction to User Space Filesystem Development
An Introduction to User Space Filesystem DevelopmentAn Introduction to User Space Filesystem Development
An Introduction to User Space Filesystem Development
Matt Turner
 

More from Matt Turner (15)

Automated Cloud-Native Incident Response with Kubernetes and Service Mesh
Automated Cloud-Native Incident Response with Kubernetes and Service MeshAutomated Cloud-Native Incident Response with Kubernetes and Service Mesh
Automated Cloud-Native Incident Response with Kubernetes and Service Mesh
 
apiserver-Only "Clusters" for fun and profit
apiserver-Only "Clusters" for fun and profitapiserver-Only "Clusters" for fun and profit
apiserver-Only "Clusters" for fun and profit
 
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenariosIstio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
Istio + SPIRE for cross-domain traffic trust in hybrid-cloud scenarios
 
Why Is Istio That Shape?
Why Is Istio That Shape?Why Is Istio That Shape?
Why Is Istio That Shape?
 
Dynamically Testing Individual Microservice Releases In Production
  Dynamically Testing Individual Microservice Releases In Production  Dynamically Testing Individual Microservice Releases In Production
Dynamically Testing Individual Microservice Releases In Production
 
Gateway APIs, Envoy Gateway, and API Gateways
Gateway APIs, Envoy Gateway, and API GatewaysGateway APIs, Envoy Gateway, and API Gateways
Gateway APIs, Envoy Gateway, and API Gateways
 
Cloud-Native Progressive Delivery
Cloud-Native Progressive DeliveryCloud-Native Progressive Delivery
Cloud-Native Progressive Delivery
 
An Introduction to Bazel
An Introduction to BazelAn Introduction to Bazel
An Introduction to Bazel
 
What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your Microservices
 
Debugging an RBAC Problem in Istio
Debugging an RBAC Problem in IstioDebugging an RBAC Problem in Istio
Debugging an RBAC Problem in Istio
 
Software Networking and Interfaces on Linux
Software Networking and Interfaces on LinuxSoftware Networking and Interfaces on Linux
Software Networking and Interfaces on Linux
 
Do You Need a Service Mesh? @ London Devops, January 2019
Do You Need a Service Mesh? @ London Devops, January 2019Do You Need a Service Mesh? @ London Devops, January 2019
Do You Need a Service Mesh? @ London Devops, January 2019
 
Bash is Testing
Bash is TestingBash is Testing
Bash is Testing
 
Fluency
FluencyFluency
Fluency
 
An Introduction to User Space Filesystem Development
An Introduction to User Space Filesystem DevelopmentAn Introduction to User Space Filesystem Development
An Introduction to User Space Filesystem Development
 

Recently uploaded

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 

Recently uploaded (20)

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 

The life of a packet through Istio

  • 1. through Istio The Life of a Packet Matt Turner @mt165pro mt165.co.uk Cloud Native London September 2018
  • 2. Outline ● How a packet traverses an Istio / Envoy / Kubernetes system ● What control plane calls are made in that process ● Hopefully a useful mental model for reasoning about, and debugging Istio
  • 3. The life of a packet through Istio @mt165pro
  • 4. The life of a packet through Istio @mt165pro
  • 5. The life of a packet through Istio @mt165pro API Serveretcd istioctl
  • 6. The life of a packet through Istio @mt165pro ClusterIP envoyenvoyenvoyenvoyenvoy Load Balancer NodePort *.example.com INGRESS iptables ClusterIP
  • 7. The life of a packet through Istio @mt165pro
  • 8. The life of a packet through Istio @mt165pro
  • 9. The life of a packet through Istio @mt165pro “Containers” nginx net ipc user pid uts mnt supervisord nginx
  • 10. The life of a packet through Istio @mt165pro Kubernetes Pods net ipc user uts fluentd pid uts mnt nginx nginx mnt supervisord logger
  • 11. The life of a packet through Istio @mt165pro Kubernetes Pods nginx net ipc user fluentd pid uts mnt 192.168.0.42 eth0 lo sockets iptables routes fluentd uts mnt nginx nginx supervisord logger
  • 12. The life of a packet through Istio @mt165pro Kubernetes Pods nginx net ipc user uts mnt fluentd pid uts mnt eth0 lo sockets iptables routes :8080/tcp nginx fluentd nginx supervisord logger 192.168.0.42
  • 13. The life of a packet through Istio @mt165pro Kubernetes Pods nginx net ipc user uts mnt envoy pid uts mnt eth0 lo sockets iptables routes :8080/tcp nginx nginx 192.168.0.42
  • 14. The life of a packet through Istio @mt165pro Sidecar Injection net ipc user eth0 lo sockets iptables routes 192.168.0.42
  • 15. The life of a packet through Istio @mt165pro k8s consul zk Data plane API
  • 16. The life of a packet through Istio @mt165pro Sidecar Injection alpine net ipc user eth0 lo sockets iptables routes sysctl -w kernel.core_pattern=... 192.168.0.42
  • 17. The life of a packet through Istio @mt165pro Sidecar Injection istio/proxy_init net ipc user eth0 lo sockets iptables routes /usr/local/bin/prepare_proxy.sh -p 15001 -u 1337 192.168.0.42
  • 18. The life of a packet through Istio @mt165pro Sidecar Injection net ipc user pid uts mnt istio/proxy pid uts mnt eth0 lo sockets iptables routes :15001/tcp nginx envoy nginx 192.168.0.42
  • 19. The life of a packet through Istio @mt165pro
  • 20. The life of a packet through Istio @mt165pro ? ? ?
  • 21. The life of a packet through Istio @mt165pro Services $ kubectl get services -o wide | grep httpbin httpbin NodePort 10.0.0.244 <none> 80:30082/TCP 16m app=httpbin
  • 22. The life of a packet through Istio @mt165pro Service DNS exposure # dig httpbin.default.svc.cluster.local httpbin.default.svc.cluster.local. 23 IN A 10.0.0.244
  • 23. The life of a packet through Istio @mt165pro Pods $ kubectl get pods -o wide | grep httpbin httpbin-76ddd74666-2m6ds 1/1 Running 0 16m 172.17.0.13 minikube httpbin-76ddd74666-ls66n 1/1 Running 0 16m 172.17.0.12 minikube httpbin-76ddd74666-x5ql2 1/1 Running 0 16m 172.17.0.5 minikube
  • 24. The life of a packet through Istio @mt165pro Endpoints $ kubectl get endpoints | grep httpbin httpbin 172.17.0.12:8000,172.17.0.13:8000,172.17.0.5:8000 21m
  • 25. The life of a packet through Istio @mt165pro Endpoints $ kubectl get endpoints httpbin -o yaml apiVersion: v1 kind: Endpoints … subsets: - addresses: - ip: 172.17.0.12 nodeName: minikube targetRef: kind: Pod … ports: - name: http port: 8000 protocol: TCP
  • 26. The life of a packet through Istio @mt165pro
  • 27. The life of a packet through Istio @mt165pro IP 5-tuple (src_addr, src_port, dst_addr, dst_port, proto)
  • 28. The life of a packet through Istio @mt165pro IP Router Architecture Interrupt Kernel module User process DATA PLANE CONTROL PLANE OSPF ARPBGP STP Router Information Base Forwarding Information Base
  • 29. The life of a packet through Istio @mt165pro IP Router Architecture Interrupt Kernel module User process DATA PLANE CONTROL PLANE OSPF ARPBGP STP Router Information Base Forwarding Information Base PILOT MIXER ENVOY
  • 30. The life of a packet through Istio @mt165pro Mixer Mixer Fat Client sysdig datadog REPORT CHECK Custom auth Custom classifier Mixer Fat Client
  • 31. The life of a packet through Istio @mt165pro
  • 32. The life of a packet through Istio @mt165pro
  • 33. The life of a packet through Istio @mt165pro
  • 34. The life of a packet through Istio @mt165pro
  • 35. The life of a packet through Istio @mt165pro kittenz.com envoyenvoyenvoyenvoyenvoy EGRESS
  • 36. Conclusion / Recap ● A packet traverses ○ Cloud ○ Kubernetes ○ Istio Ingress ○ The Pod construct ○ Envoy ○ Application ○ mTLS tunnel ○ Egress ● Pilot pre-programmes Envoys for Service Discovery ● Mixer sits on the hot path for real-time Policy ● Citadel issues certificates for mTLS