Service Mesh sh Interface Brendan Burns QCon New York 2019 This - - PowerPoint PPT Presentation

service mesh sh interface
SMART_READER_LITE
LIVE PREVIEW

Service Mesh sh Interface Brendan Burns QCon New York 2019 This - - PowerPoint PPT Presentation

Service Mesh sh Interface Brendan Burns QCon New York 2019 This Photoby Unknown Author is licensed under CC BY-SA The e Service ice Me Mesh Landsc scape This Photoby Unknown Author is licensed under CC BY-NC-ND The problem for users


slide-1
SLIDE 1

Service Mesh sh Interface

Brendan Burns – QCon New York – 2019

This Photoby Unknown Author is licensed under CC BY-SA

slide-2
SLIDE 2

The e Service ice Me Mesh Landsc scape

This Photoby Unknown Author is licensed under CC BY-NC-ND

slide-3
SLIDE 3

The problem for users

slide-4
SLIDE 4

The problem for users – Adoption timeline

Excitement Adoption Production

slide-5
SLIDE 5

Problem for users - Complexity

This Photoby Unknown Author is licensed under CC BY-SA

slide-6
SLIDE 6

The problem for the ecosystem

Tools Ecosystem Mesh A Mesh B Mesh C

slide-7
SLIDE 7

The solution? Moar Abstraction!

Tools Ecosystem Mesh A Mesh B Mesh C Adapter Interface

slide-8
SLIDE 8

Service Mesh Interface: Community

https://smi-spec.io

slide-9
SLIDE 9

Service Mesh Interface: Goals

Isolate concepts from implementation Provide the “core concepts” of service mesh Release and iterate Build a community around Service Mesh as a concept

slide-10
SLIDE 10

This isn't a new pattern...

  • Open Container Image
  • Container Network Interface
  • Container Storage Interface
  • Storage Volumes
  • Ingress
  • NetworkPolicy
  • ...
slide-11
SLIDE 11

Good reasons for this approach

USERS NEED CONCEPTS NOT IMPLEMENTATION TOOL VENDORS NEED ABSTRACTION, NOT SPECIALIZATION IMPLEMENTORS NEED ISOLATION FROM USERS

slide-12
SLIDE 12

Service Mesh Interface – API Overview

TrafficSpec TrafficTarget TrafficSplit TrafficMetrics

slide-13
SLIDE 13

Service Mesh Interface: Routes

apiVersion: v1beta1 kind: HTTPRouteGroup metadata: name: api-route matches:

  • name: api

pathRegex: /api methods:

  • GET
slide-14
SLIDE 14

Service Mesh Interface: Routes

apiVersion: v1beta1 kind: TCPRoute metadata: name: my-db-route

slide-15
SLIDE 15

Service Mesh Interface: TrafficTarget

kind: TrafficTarget apiVersion: access.smi-spec.io/v1alpha1 metadata: name: example-target destination: # destination spec here specs: # route spec here sources: # source spec(s) here

slide-16
SLIDE 16

Service Mesh Interface: Destinations

… destination: # This selects a set of Pods kind: ServiceAccount name: my-api-impl # This defines the traffic port: 8080 …

slide-17
SLIDE 17

Service Mesh Interface: TrafficTarget

kind: TrafficTarget apiVersion: access.smi-spec.io/v1alpha1 metadata: name: example-target destination: # destination spec here specs: # route spec here sources: # source spec(s) here

slide-18
SLIDE 18

Service Mesh Interface: Routes

… # This selects a set of paths specs:

  • kind: HTTPRouteGroup

name: api-route matches:

  • api

slide-19
SLIDE 19

Service Mesh Interface: TrafficTarget

kind: TrafficTarget apiVersion: access.smi-spec.io/v1alpha1 metadata: name: example-target destination: # destination spec here specs: # route spec here sources: # source spec(s) here

slide-20
SLIDE 20

Service Mesh Interface: Sources

… # This identifies the allowed sources sources: # This selects a set of Pods

  • kind: ServiceAccount

name: my-api-callers …

slide-21
SLIDE 21

Putting it all together…

SMI TrafficTarget ServiceAccount: my-api-impl Destination ServiceAccount: my-api-callers Sources SMI HTTPRouteGroup https://service:8080/api

slide-22
SLIDE 22

Service Mesh Interface: TrafficSplit

kind: TrafficSplit apiVersion: split.smi-spec.io/v1alpha1 metadata: name: one-percent-experiment spec: backends:

  • service: experiment

weight: 1

  • service: canary

weight: 10

  • service: production

weight: 100

slide-23
SLIDE 23

Service Mesh Interface – Traffic Split

SMI TrafficSplit my-experiment experiment Service canary Service production Service Kubernetes Services my-experiment Service

slide-24
SLIDE 24

Service Mesh Interface - TrafficMetrics

kind: TrafficMetrics … resource: name: my-pod-asdae kind: Pod edge: … timestamp: 2019-06-26T12:00:00 window: 30s metrics: …

slide-25
SLIDE 25

Service Mesh Interface - TrafficMetrics

# all in-bound traffic edge: direction: to resource: {} # all out-bound traffic to Pod foobar edge: direction: from resource: name: foobar kind: Pod

slide-26
SLIDE 26

Service Mesh Interface - TrafficMetrics

# all in-bound traffic from a Service edge: direction: to resource: name: my-service kind: Service

slide-27
SLIDE 27

Service Mesh Interface - TrafficMetrics

… metrics:

  • name: p99_response_latency

unit: seconds value: 987m

  • name: p90_response_latency

unit: seconds value: 250m …

slide-28
SLIDE 28

Service Mesh Interface – TrafficMetrics Overview

Kubernetes API Server traffic.metrics.k8s.io Traffic Metrics Server Prometheus, etc. metrics scrape/push

slide-29
SLIDE 29

Concerns: Lowest Common Denominators

slide-30
SLIDE 30

Service Mesh Interface: Approach to iteration

slide-31
SLIDE 31

Service Mesh Interface: Iteration plan.

Start with the basics Lots of custom extensions Adopt the common extensions to v+1

slide-32
SLIDE 32

Service Mesh Interface: State of the art.

  • Consul
  • LinkerD
  • Istio

Implementations:

  • Flagger (WeaveWorks)
  • Rio (Rancher)
  • ...

Tooling:

slide-33
SLIDE 33

Service Mesh Interface: Futures

  • Come and join us!
  • https://smi-spec.io
  • https://github.com/deislabs/smi-spec
  • https://github.com/deislabs/smi-sdk-go
  • https://github.com/weaveworks/flagger/blob/

master/docs/gitbook/tutorials/flagger-smi- istio.md

  • https://github.com/hashicorp/microsoft-smi-

webinar

slide-34
SLIDE 34

Questions?