45

An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift
Page 2: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

An introduction to Istio

bit.ly/sail-into-cloud

Sail smoothly in the Cloud

Page 3: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

I am a Developer

● Active Open Source Contributor○ Knative○ Minishift○ Eclipse Che○ fabric8 Platform https://fabric8.io/

● Creator vert.x-maven-plugin → https://vmp.fabric8.io/

kameshsampath

Kamesh Sampath Director of Developer Experience at Red Hat

@kamesh_sampath

[email protected]

Page 4: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Demo: bit.ly/msa-instructionsSlides: bit.ly/microservicesdeepdive Video Training: bit.ly/microservicesvideo

bit.ly/reactivemicroservicesbookbit.ly/javamicroservicesbook

@kamesh_sampath

bit.ly/istio-book

bit.ly/mono2microdb

Kubernetes for Java Developers

Page 5: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.

These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

Martin Fowler

What is a microservice ?

@kamesh_sampath

Page 6: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

ContinuousIntegration

via XP1999

AWS EC22006

DropWizardMay 2011

AgileManifesto

Feb2001

NETFLIX to AWS

2010

RibbonMarch 2012

HystrixMarch 2012

EurekaJuly 2012

MicroservicesAssess

ThoughtworksRadar

March 2012

Spring BootSept 2013

MicroservicesDefined

ThoughtworksFowler, LewisMarch 2014

KubernetesJune 2014

Java EE62009

DevOps2009

DockerMarch2013

Short History of Microservices

@kamesh_sampath

Page 7: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

OSJVM

Service C

Microservices == Distributed Computing

@kamesh_sampath

OSJVM

Service B

OSJVM

Service A

Page 8: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Distributed Computing == Network of Services

@kamesh_sampath

Page 9: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

MyService

Tracing

API

Discovery

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Monitoring

Microservices'ilities

@kamesh_sampath

Page 10: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

MyService

Tracing

API

Discovery

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Monitoring

Microservices'ilities

@kamesh_sampath

Page 11: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Java Microservices Platform circa 2014-

Config Server

NETFLIX Ribbon

@kamesh_sampath

Page 12: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DevOps Challenges for Multiple Containers▪ How to scale?▪ How to avoid port conflicts?▪ How to manage them on

multiple hosts?▪ What happens if a host has

trouble?▪ How to keep them running?▪ How to update them?▪ Where are my containers?

Node

Node Node

Node Node

Logger

Node

@kamesh_sampath

Page 13: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

@kamesh_sampath

Page 14: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

MyService

Monitoring

Tracing

API

Discovery

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Microservices'ilities + Kubernetes

@kamesh_sampath

Page 15: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

MyService

Monitoring

Tracing

API

Discovery

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Microservices'ilities + OpenShift

@kamesh_sampath

Page 16: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Better Spring Boot Microservices Platform circa 2016

Config Server

NETFLIX Ribbon

@kamesh_sampath

Page 17: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Better Spring Boot Microservices Platform circa 2017

Config Server

NETFLIX Ribbon

@kamesh_sampath

Page 18: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

● Discovery ● Distributed Tracing ● Circuit Breakers● Metrics and Monitoring● Operational Requirements

○ A/B Testing○ Canary Release○ Rate Limiting○Access Policies

Microservice(Yes) Pain Points

@kamesh_sampath

Page 19: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Istio - Sail(Kubernetes - Helmsman or ship’s pilot)

@kamesh_sampath

Page 20: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

MyService

Monitoring

Tracing

API

Discovery

Invocation

Resilience

Pipeline

Authentication

Logging Elasticity

Microservices'ilities + Istio

@kamesh_sampath

Page 21: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Better Spring Boot Microservices Platform circa 2018

Config Server

NETFLIX Ribbon

@kamesh_sampath

Page 22: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

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.

What is a service mesh ?

NETWORK

Circuit Breaker

Discovery

Tracing

Circuit Breaker

Discovery

Tracing

Service A Service B

Proxy Proxy

Machine A (Monolith)

Machine B

@kamesh_sampath

https://www.cncf.io/blog/2017/04/26/service-mesh-critical-component-cloud-native-stack/

Page 23: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Java Only

Adds a lot of libraries to YOUR code

What's Wrong with Netflix OSS?

@kamesh_sampath

Page 24: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Microservices embedding Capabilities

ContainerJVM

Service BDiscovery

Load-balancerResiliency

MetricsTracing

ContainerJVM

Service ADiscovery

Load-balancerResiliency

MetricsTracing

ContainerJVM

Service CDiscovery

Load-balancerResiliency

MetricsTracing

Before Istio

@kamesh_sampath

Page 25: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Microservices externalizing Capabilities

PodContainer

JVMService A

Sidecar Container

PodContainer

JVMService C

Sidecar Container

PodContainer

JVMService B

Sidecar Container

After Istio

@kamesh_sampath

Page 26: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

SideCars

git-sync ngnix

● Two or more containers deployed to same pod

● Share ○ same namespace○ same Pod IP○ Shared lifecycle

● Used to enhance the containers

Composite Container Application

Source: http://blog.kubernetes.io/2015/06/the-distributed-system-toolkit-patterns.html

Pod

web-sources(Volume)

@kamesh_sampath

Page 27: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Kubernetes, Istio, Envoy

PodContainer

JVMService A

Sidecar Container

PodContainer

JVMService C

Sidecar Container

PodContainer

JVMService B

Sidecar Container

@kamesh_sampath

Page 28: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

PodContainer

JVM

Service A

Envoy Side-car

PodContainer

JVM

Service B

Envoy Side-car

PodContainer

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, TelemetryRate Limiting, ACL

CA, SPIFFE

@kamesh_sampath

Istio Control Plane

Page 29: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Next Generation Microservices - Service Mesh

Code Independent (Polyglot)

• Intelligent Routing and Load-Balancing• A/B Tests• Smarter Canary Releases

• Chaos: Fault Injection• Resilience: Circuit Breakers• Observability: Metrics and Tracing• Fleet wide policy enforcement

@kamesh_sampath

Page 30: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift
Page 31: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.

Source: https://martinfowler.com/bliki/CanaryRelease.html

Microservice Architecture - PrinciplesCanary Release

@kamesh_sampath

Page 32: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 33: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 34: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 35: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 36: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 37: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 38: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 39: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 40: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 41: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

DEVELOPMENT QA STAGING PRODUCTION ROUTER USERS

SCM

Canary Deployment

@kamesh_sampath

Page 42: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Customer

Preferences

Recommendations v1

Recommendations v2

75%

25%

90%

10%

100%

100%

Demo

Page 43: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

Demo: bit.ly/msa-instructionsSlides: bit.ly/microservicesdeepdive Video Training: bit.ly/microservicesvideo

bit.ly/reactivemicroservicesbookbit.ly/javamicroservicesbook

@kamesh_sampath

bit.ly/istio-book

bit.ly/mono2microdb

Kubernetes for Java Developers

Page 44: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift

▪ Minishift ▪ https://istio.io ▪ bit.ly/sail-into-cloud

○ Demo sources https://github.com/workspace7/kubeboot

▪ https://kiali.io/ ▪ Istio Tutorials

○bit.ly/istio-tutorial ○learn.openshift.com/servicemesh

Summary @kamesh_sampath

Page 45: An introduction to Istio - DeveloperMarch · An introduction to Istio bit.ly/sail-into-cloud Sail smoothly in the Cloud . I am a Developer Active Open Source Contributor Knative Minishift