Slide 1

Slide 1 text

xDS Overview Stefano Borrelli @stedvendborrelli Sept 2020: Linux COSI project

Slide 2

Slide 2 text

• High-Performance Load Balancer • Feature-rich: L3-L7 proxying, Pluggable filters, etc. • Dynamic configuration via API: • “The universal data plane”

Slide 3

Slide 3 text

Envoy Ecosystem Multiple Control Planes

Slide 4

Slide 4 text

Linux is Fragmented Traditional Traditional Container

Slide 5

Slide 5 text

Traditional

Slide 6

Slide 6 text

Linux is Fragmented Traditional • No standard API • Cloud-init is a separate system • Diverse Init Systems (Systemd, OpenRC, custom) • Diverse communication: API vs. Shell • Push vs. Pull configuration • Kubelet has many OS responsibilities •

Slide 7

Slide 7 text

What can we learn from xDS?

Slide 8

Slide 8 text

xDS Overview • “…a simple API that abstracts the data plane from the control plane.” — Matt Klein • The data plane is meant to be simple. Opinionated decisions are implemented at the control plane. • This decouples envoy from higher-level orchestration. • Use a generic common bootstrap (file), then can subscribe to any number of control planes. https://blog.envoyproxy.io/the-universal-data-plane-api-d15cec7a

Slide 9

Slide 9 text

xDS Overview • Typed Interfaces in Protocol Buffers v3 • Utilizes gRPC: Bi-directional streaming, etc. Also supports JSON/REST Metadata support • Supports static (file-based) and dynamic (streaming gRPC) configurations • Eventually consistent

Slide 10

Slide 10 text

xDS Overview Traditional https://blog.christianposta.com/envoy/guidance-for-building-a-control-plane-to-manage-envoy-proxy-based-infrastructure/ Endpoint Discovery Service (EDS) Cluster Discovery Service (CDS) Route Discovery Service (RDS) Listener Discovery Service (LDS) Health Discovery Service (HDS) Secret Discovery Service (SDS) Aggregated Discovery Service (ADS)

Slide 11

Slide 11 text

Transport Features xDS supports delta and complete (State of the World) updates, allows multiple subscriptions or connection to an aggregated resource server: • State of the World (Basic xDS): SotW, separate gRPC stream for each resource type (DiscoveryRequest/DiscoveryResponse proto3) • Incremental xDS: incremental, separate gRPC stream for each resource type (DeltaDiscoveryRequest/DeltaDiscoveryResponse proto3) • Aggregated Discovery Service (ADS): SotW, aggregate stream for all resource types • Incremental ADS: incremental, aggregate stream for all resource types

Slide 12

Slide 12 text

Native gRPC support for xDS https://github.com/grpc/proposal/blob/master/A27-xds-global-load- balancing.md Replace grpclb Merged into gRPC 1.6 ADS SotW only for now, no plans for incremental for file config

Slide 13

Slide 13 text

xDS Examples • step-sds (how to craft a raw xDS Discovery Response) • Health Discovery Service Protobuf (Distributed Health check) • go-control-plane (How to build an xDS Control Plane)

Slide 14

Slide 14 text

Summary • xDS is a great example of building out a data-plane API • Opportunity for COSI to define core Linux primitives •