Upgrade to Pro — share decks privately, control downloads, hide ads and more …

xDS Overview

xDS Overview

The Linux configuration landscape is very fragmented. What can we learn from the success of Envoy's xDS?

Steven Borrelli

September 24, 2020
Tweet

More Decks by Steven Borrelli

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

  3. Envoy Ecosystem
    Multiple Control Planes

    View full-size slide

  4. Linux is Fragmented
    Traditional
    Traditional Container

    View full-size slide

  5. 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

    View full-size slide

  6. What can we learn from
    xDS?

    View full-size slide

  7. 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

    View full-size slide

  8. 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

    View full-size slide

  9. 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)

    View full-size slide

  10. 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

    View full-size slide

  11. 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

    View full-size slide

  12. 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)

    View full-size slide

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

    View full-size slide