@antweiss
Envoy, WASM and Rust -
the Mighty Trio
Ant Weiss
Otomato Software Delivery : https://otomato.io
@antweiss
@antweiss
Envoy, WASM and Rust - the Mighty Trio
@antweiss
● L4/L7 Proxy
● Modern C++
● Performant
● Configurable
● Extensible
@antweiss
● Service Meshes
@antweiss
● Service Meshes
○ AWS App Mesh
@antweiss
● Service Meshes
○ AWS App Mesh
○ Consul Connect
@antweiss
● Service Meshes
○ AWS App Mesh
○ Consul Connect
○ VMWare NSX
@antweiss
● Service Meshes
○ AWS App Mesh
○ Consul Connect
○ VMWare NSX
○ Kuma
@antweiss
● Service Meshes
○ AWS App Mesh
○ Consul Connect
○ VMWare NSX
○ Kuma
○ Istio
@antweiss
WebAssembly!
Call me
WASM
● Binary Code Format
○ Sandboxed
○ Safe
○ Fast
○ Polyglot
○ Portable
@antweiss
Rust!
● Expressive
● Performant
● Memory-safe
● FP
● Metaprogramming
● Loveable
Put your
Trust in
Rust!
@antweiss
Istio pre-1.5
@antweiss
Istio pre-1.5
@antweiss
Istio pre-1.5
Adapter
Adapter
Adapter
Adapter
@antweiss
Istio 1.5+
No Mixer!!!
@antweiss
High Level Plan
● Build:
○ Create a Rust WASM module for Envoy
● Deploy:
○ Load the module into an Envoy container
● Test:
○ Proxy the traffic to hashicorp/http-echo
@antweiss
Build Plan
● Create a Rust WASM module for Envoy
○ Based on ‘proxy-wasm’ crate.
○ Implement base Context trait.
○ Implement HttpContext trait:
■ Filter HTTP headers to create a Pandemic Authorizer:
● Only allow requests when
○ a “temperature” header is present
○ and has value below 37.0
@antweiss
Sum It Up
● Envoy is proxying the cloud native world
@antweiss
Sum It Up
● Envoy is proxying the cloud native world
● WASM is a scalable, dynamic extension mechanism
@antweiss
Sum It Up
● Envoy is proxying the cloud native world
● WASM is a scalable, dynamic extension mechanism
● Writing WASM in Rust is serious fun !
@antweiss
Sum It Up
● Envoy is proxying the cloud native world
● WASM is a scalable, dynamic extension mechanism
● Writing WASM in Rust is serious fun !
If running Envoy with Consul - look at https://github.com/layer5io/image-hub

Envoy, Wasm and Rust - the Mighty Trio