Slide 1

Slide 1 text

Open source, ultralight service mesh for Kubernetes Oliver Gould @olix0r CTO, Buoyant

Slide 2

Slide 2 text

conduit.io Today’s talk ‣ Who am I? ‣ What is Conduit? ‣ What is a service mesh? ‣ How did we get here? ‣ How can I do cool things with Condut? ‣ Demotime

Slide 3

Slide 3 text

conduit.io Who am I? ‣ Twitter engineer 2010—2015 ‣ Creator of Linkerd ‣ CTO @ Buoyant ‣ Occasional tweeter: @olix0r ‣ Dog enthusiast

Slide 4

Slide 4 text

conduit.io Who am I? ‣ Twitter engineer 2010—2015 ‣ Creator of Linkerd ‣ CTO @ Buoyant ‣ Occasional tweeter: @olix0r ‣ Dog enthusiast

Slide 5

Slide 5 text

conduit.io What is Conduit?

Slide 6

Slide 6 text

conduit.io ‣ Ultralight, ultra fast service mesh for Kubernetes ‣ Purpose-built for security & performance: ‣ Data plane proxy in Rust ‣ Control plane services in Go ‣ Open Source: Apache v2; developed in the open

Slide 7

Slide 7 text

conduit.io Goal: Improve visibility, reliability, and security for any application in Kubernetes without config or code

Slide 8

Slide 8 text

conduit.io What is a service mesh?

Slide 9

Slide 9 text

conduit.io The service mesh Service C Service B Service A linkerd Service C Service B Service A linkerd Service C Service B Service A linkerd application HTTP proxied HTTP monitoring & control Node 1 Node 2 Node 3 “Mesh” of user space network proxies, deployed alongside application code. • Lightweight,
 Horizontally scalable • Low operational impact • Centralized control & visibility

Slide 10

Slide 10 text

conduit.io Why? ‣ Add reliability, security, visibility to cloud native apps, without changing code. ‣ Move operational ownership from service owner to platform operator. ‣ Make runtime operations as easy as Kubernetes has made deploy-time ops ‣ Features: request routing, retries, timeouts, circuit breaking, deadlines, distributed tracing, instrumentation, service discovery, TLS, service auth, …

Slide 11

Slide 11 text

conduit.io Uniform visibility

Slide 12

Slide 12 text

conduit.io Uniform reliability ‣ Load balance over requests
 not connections ‣ LB algorithms have an enormous impact on your oncall!

Slide 13

Slide 13 text

conduit.io Uniform, dynamic policy timeout=400ms retries=3 timeout=400ms retries=2 timeout=200ms retries=3 timelines users web db 800ms 600ms

Slide 14

Slide 14 text

conduit.io Processes Guy with the spreadsheet of machines Hardware redundancy Servers IP addresses and DNS Server monitoring Big monolithic application TCP/IP connections “Containers” Orchestrated environment Design for failure Services Service discovery Service monitoring Microservices RPC calls How did we get here? Sys Admin Cloud Native

Slide 15

Slide 15 text

conduit.io This brought a whole new set of problems

Slide 16

Slide 16 text

conduit.io Evolution of the service mesh • Twitter: Finagle
 Google: Stubby
 Netflix: Hysterix • Buoyant: the Service Mesh
 Language- and deployment-agnostic Goal is the same: Solve operational challenges that are fundamental to cloud native architectures.

Slide 17

Slide 17 text

conduit.io ‣ ~2 years old ‣ 1400+ Slack channel members ‣ 3500+ Github stars ‣ 1.5m+ Docker Hub pulls ‣ 60+ contributors

Slide 18

Slide 18 text

conduit.io Why Conduit?

Slide 19

Slide 19 text

conduit.io JVM pros and cons Linkerd is on the JVM. There are some great things about the JVM: ‣ Secure memory model ‣ Plugin architecture ‣ Performance at scale ‣ Rich ecosystem! (Finagle + Scala + Netty) But… The JVM takes a ton of resources! This can be tough for microservices.

Slide 20

Slide 20 text

conduit.io Getting off the JVM Motivation for Conduit: service mesh but without the resource cost. ‣ Minimize resource requirements, maximize performance. (=> Native code) ‣ Provide security and reliability by default. (=> Zero config) ‣ Provide a clear centralized API. (=> Decoupled control plane) ‣ Fits into existing cloud native ecosystem (=> Kubernetes)

Slide 21

Slide 21 text

conduit.io Conduit’s architecture Conduit API Prometheus … Control plane {namespace: “conduit”} app: birds proxy app: rabbits proxy Pod 2 app: dogs proxy Pod 3 … Your app, plus Conduit data plane Pod 1

Slide 22

Slide 22 text

conduit.io Conduit control plane Control plane written is written in Go. ‣ Kinda fast! Well, fast enough for control plane purposes. ‣ Kinda lightweight! Well, compared to the JVM. ‣ No modern features! Oh well. But it’s the lingua franca of Kubernetes, and most importantly: Go is easy to learn and Go projects are easy to get involved in!

Slide 23

Slide 23 text

conduit.io Conduit data plane Data plane written is a proxy written in Rust. ‣ Fast: Native performance, ‣ Type- & Memory-safe: Doesn’t link against C libraries like OpenSSL. ‣ No GC! Very important for proxies where tail latencies are critical to performance. Result: <2mb RSS, <1ms p99, designed for HTTP/2

Slide 24

Slide 24 text

conduit.io Data plane Rust stack ‣ mio: cross-platform API for epoll. Foundation for non-blocking sockets. ‣ futures: Promises/Futures implementation. Zero-cost abstractions on async code ‣ tokio: async I/O ‣ hyper, h2: HTTP libraries ‣ tower: Finagle-esque remote call framework ‣ tower-grpc: gRPC framework All open source libraries available on GitHub.

Slide 25

Slide 25 text

conduit.io Demo time!

Slide 26

Slide 26 text

conduit.io Get involved ‣ Conduit 0.3.1 released today! ‣ Current status: alpha, but rapidly approaching beta ‣ Works with most applications on Kubernetes 1.8+ ‣ github.com/runconduit ‣ [email protected][email protected][email protected] ‣ slack.linkerd.io #conduit channel

Slide 27

Slide 27 text

Thank you! Oliver Gould | CTO | @olix0r conduit.io