Istio: Canaries and Kubernetes
burr@redhat.com
Link
Recording: https://www.youtube.com/watch?v=YQLOcjvbo9s
Demo: bit.ly/msa-instructions
Slides: bit.ly/microservicesdeepdive
Video Training: bit.ly/microservicesvideo
Free eBooks from developers.redhat.com
Microservices Introductory Materials
@burrsutter
Microservices Advanced Materials
Monolith
MyApp
@burrsutter
Microservices
@burrsutter
Microservices
@burrsutter
Microservices
@burrsutter
Microservices
@burrsutter
Microservices
@burrsutter
Microservices
@burrsutter
Network of Services
@burrsutter
Microservices == Distributed Computing
OS
JVM
Service C
@burrsutter
OS
JVM
Service B
OS
JVM
Service A
Microservices'ilities
MyService
Monitoring
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging
Elasticity
@burrsutter
Short History of Microservices
Continuous
Integration
via XP
1999
AWS EC2
2006
DropWizard
May 2011
Agile
Manifesto
Feb
2001
NETFLIX
to AWS
2010
Ribbon
March 2012
Hystrix
March 2012
Eureka
July 2012
Spring Boot
Sept 2013
Kubernetes
June 2014
Java EE6
2009
DevOps
2009
@burrsutter
What's Wrong with Netflix OSS?
Java Only
Adds a lot of libraries to YOUR code
Microservices embedding Capabilities
@burrsutter
Container
JVM
Service B
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service A
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service C
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Microservices'ilities
MyService
Monitoring
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging
Elasticity
@burrsutter
@burrsutter
Microservices'ilities + Kubernetes
MyService
Monitoring
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging
Elasticity
@burrsutter
Microservices'ilities + OpenShift
MyService
Monitoring
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging
Elasticity
@burrsutter
Istio - Sail
(Kubernetes - Helmsman or ship’s pilot)
@burrsutter
Service Mesh Defined
A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware
Microservices'ilities + Istio
MyService
Monitoring
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging
Elasticity
@burrsutter
Microservices embedding Capabilities
@burrsutter
Container
JVM
Service B
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service A
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service C
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Before Istio
Microservices externalizing Capabilities
@burrsutter
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
After Istio
Kubernetes, Istio, Envoy
@burrsutter
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
Next Generation Microservices - Service Mesh
Code Independent (Polyglot)
@burrsutter
Istio Control Plane
Pod
Container
JVM
Service A
Envoy Side-car
Pod
Container
JVM
Service B
Envoy Side-car
Pod
Container
JVM
Service C
Envoy Side-car
HTTP1.1, HTTP2, gRPC, TCP w/TLS
HTTP1.1, HTTP2, gRPC, TCP w/TLS
HTTP1.1, HTTP2, gRPC, TCP w/TLS
Istio Pilot
Istio Mixer
Istio Auth
istioctl, API, config
Quota, Telemetry�Rate Limiting, ACL
CA, SPIFFE
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canary Deployment
DEVELOPMENT
QA
STAGING
PRODUCTION
ROUTER
USERS
SCM
@burrsutter
Canaries with Kubernetes
Pod
Container
JVM
Service A v1
Pod
Container
JVM
Service A v2
Service
Route/
Ingress
50%
50%
@burrsutter
Canaries with Istio
Pod
Container
JVM
Service A v1
Pod
Container
JVM
Service A v2
Service
Route/
Ingress
90%
10%
@burrsutter
@burrsutter
Demo: bit.ly/msa-instructions
Slides: bit.ly/microservicesdeepdive
Video Training: bit.ly/microservicesvideo
Free eBooks from developers.redhat.com
Microservices Introductory materials
@burrsutter
Microservices Advanced Materials