New tooling is now available to make it easier for developers to create custom extensions for the Envoy proxy.

In this interview (also available as a Make it Mesh podcast), Tetrate Engineer Yaroslav Skopets, an Envoy contributor and GetEnvoy maintainer, explains how WebAssembly (Wasm) makes Envoy extensibility more accessible, and how developers can quickly get started with Tetrate’s open source GetEnvoy extensibility toolkit. 

Many organizations that adopt Envoy need custom extensions to integrate with a pre-existing infrastructure. A lot of organizations already have existing solutions for authentication, authorization, and logging, and out of the box solutions didn’t work for these use cases. Envoy has been designed to handle any network protocol, so extensibility has always been there, says Yaroslav, but technical constraints made it less accessible to end-users, and burdensome to maintain. [0.56]

WebAssembly was born as developers were looking for faster ways to execute application code faster than JavaScript would allow. Today, Wasm allows users to reap the benefits of its versatility, portability, and lightweight. It’s possible to run web assembly code on any operating system or hardware architecture. [2:06]

Because Wasm technology is still so new, the learning curve can be quite steep. The GetEnvoy extension toolkit is designed to have you up and running, developing extensions in moments. By using the toolkit, you’re provided with a build of Envoy that has WebAssembly support with Rust (and soon Go) SDKs, that comes with documentation and example extensions. Overall, it will be the easiest way to get started with Wasm-based extensions. Users won’t be required to have any previous knowledge of WebAssembly or Envoy configurations. [3:16]

Highlighting the different options available on the market right now, Yaroslav discusses the differences between the Proxy Wasm SDK and the Envoy SDK for Rust that is part of the GetEnvoy Toolkit. The Envoy SDK for Rust is designed to make life easier and empower users, while Proxy Wasm is just an implementation detail within the GetEnvoy toolkit. [5:27]

To get to the next stage of maturity of WebAssembly support in Envoy, we’re asking Envoy users to try to develop extensions of their own and report back on their production readiness. [6:35]

Now that Envoy extensibility is no longer confined to C++, Yaroslav points out that developers have “no more excuses” not to jump in! Now that you have an SDK for Rust, try it out and give your feedback! 

Tetrate’s Tia Louden moderated this interview and compiled this summary. This content was edited by Tevah Platt and the video was produced by Aswin Behera.