Announcing Alpha Support for Envoy on Windows

Sunjay Bhatia
Envoy Proxy
Published in
5 min readSep 30, 2020

--

Porting Envoy to the Windows platform has been a goal of the project since 2016 and today we are excited to announce the Alpha release of Windows-native support for Envoy. The contributor community has been hard at work bringing Envoy’s rich feature set to Windows and this is another step in line with the project’s mission of making the network “transparent” to any application, regardless of language, architecture, or operating system.

Envoy is already in production use by a wide range of companies and Windows support should open up its usage to additional cloud-native services, legacy .NET applications, and a whole host of other application architectures. Particularly promising is the potential for users to deploy Envoy alongside Windows applications running in the datacenter or public cloud on Windows Server, in Windows-based containers, or even alongside desktop applications.

The road to this Alpha announcement has been a long one but we hope we have done our part to improve the Envoy code base with cross platform code, new abstractions, and additional test coverage. If you are interested in a glimpse into the process of porting Envoy to Windows, take a look at this presentation from KubeCon 2019 and look out for the upcoming presentation at EnvoyCon 2020. We would like to thank the Envoy maintainer team and especially Matt Klein and Lizan Zhou for enabling and supporting the Windows contributor group to reach this milestone.

What does Alpha support on Windows mean?

Alpha support for Envoy on Windows signifies the Envoy codebase has reached a stage where the contributor and maintainer community is confident it is stable enough on Windows for evaluation by the general public. General Availability (GA) release is also upcoming. We hope that by announcing this Alpha release, we can accelerate the process of collecting community feedback and contributions to push for a GA release.

As a result of getting to Alpha, Envoy compiles on Windows and tests are now required to pass in CI for every pull request and merged commit. In addition, there is a dedicated group of developers contributing to Windows, spending their time triaging reported issues and bugs, fixing CI failures and test flakes, and working with maintainers to ensure code quality and correctness (if you would like to get involved with this effort, see below!). The Alpha release does not signify that Envoy is suitable or supported for production workloads yet.

How do I get started with Envoy on Windows?

The project considers the master branch of the Envoy source repo to be release candidate quality at all times, and many organizations track and deploy master in production. As such, there is no “tagged” Alpha release commit, rather the master branch should be considered Alpha release quality on Windows until a GA release occurs. In general the Envoy codebase continues to move forward rapidly so we recommend refreshing your source checkouts often to take advantage of the feedback and improvements from the contributor community.

Update 10/20/2020: Windows Docker Image

As of this PR per-master commit Windows Docker image builds containing a statically compiled Envoy binary are now published publicly. The image can be found here. Image entrypoint and configuration mirrors the Linux “dev” image published per-master commit and will run a basic bootstrap configuration. You may use this image as-is to evaluate Envoy or extract the compiled envoy.exe binary to another container image or to run outside of a container.

Building From Source

Documentation on setting up a build environment and compiling a statically linked Envoy executable from source on Windows with Bazel can be found here. We also provide a Windows Server 2019 Server Core based Docker container image with all required tools to build and statically link Envoy, see this document for more details.

Usage Example

Once you have an Envoy binary and want to start getting familiar with using Envoy on Windows, a good place to start is this tutorial. You will run through a modified version of the Front Proxy Sandbox example that demonstrates the advantage of running Envoy collocated with your services: all requests are handled by the service Envoy, and efficiently routed to your services.

Are there any Windows-specific differences to be aware of?

Work on Windows support is still moving rapidly and as of this Alpha release most all core Envoy functionality should have parity with Linux. Service mesh support requires additional platform capabilities and we hope to enable this functionality with an upcoming release of Windows. Envoy configuration and usage should not differ between platforms other than with common platform specific details like file paths, socket options, etc. That said, some existing features of Envoy were designed and implemented with Linux in mind first and as a result may be disabled on Windows or work in a limited capacity. You can find a list of Envoy APIs with degraded or disabled functionality on Windows here.

How do I provide feedback and get involved?

We expect users and new contributors may run into known issues or new bugs others have reported. The area/windows tag in the Envoy issue tracker on GitHub and pulling the latest Envoy source from the master branch are great starting points if you encounter problems. Including “Windows:” in the title of any new issues and following the existing Envoy new issue templates will greatly help with triage. As always, PRs and issues are welcome to improve documentation in addition to Envoy source code.

To get in touch with full-time contributors to Envoy on Windows about how to get more involved with the project, development details, and detailed user scenarios, visit the Envoy slack workspace #envoy-windows-dev channel. We also hold a community meeting specifically for Windows contributors which you can find on the Envoy CNCF calendar here. In addition to Github issues, this weekly meeting is a good place to stay in the loop with and contribute to the Envoy roadmap on Windows. The envoy-dev and envoy-announce Google groups are two other avenues via which we may solicit feedback.

We hope to lean on the community to get as much mileage as we can running Envoy on Windows and grow the community as we push forward to a GA release. Whether you would simply like to evaluate if Envoy suits your needs in a Windows environment or are interested in getting involved in active development on Windows, the project greatly appreciates detailed feedback. We look forward to collaborating with you and hearing how you use Envoy on Windows!

--

--