Can I run Envoy on Windows under SCM?

Note

On August 31, 2023 the Envoy project ended official Windows support due to a lack of resources. We will continue to accept patches related to the Windows build. Until further notice, Windows builds are excluded from Envoy CI, as well as the Envoy release and security processes.

Note

This feature is still in Experimental state.

You can start Envoy as Windows Service that is managed under Windows Service Control Manager. First, you need to create the service. Assuming you have a custom configuration in the current directory named envoy-custom.yaml. After you create the service you can start it.

From an administrator prompt run the following commands (note that you need replace C:EnvoyProxywith the path to the envoy.exe binary and the config file):

   > sc create EnvoyProxy binpath="C:\EnvoyProxy\envoy.exe --config-path C:\EnvoyProxy\envoy-demo.yaml" start=auto depend=Tcpip/Afd
      [SC] CreateService SUCCESS
   > sc start EnvoyProxy
      SERVICE_NAME: envoyproxy
         TYPE               : 10  WIN32_OWN_PROCESS
         STATE              : 2  START_PENDING
                                 (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
         WIN32_EXIT_CODE    : 0  (0x0)
         SERVICE_EXIT_CODE  : 0  (0x0)
         CHECKPOINT         : 0x0
         WAIT_HINT          : 0x7d0
         PID                : 3924
         FLAGS              :
   > sc query EnvoyProxy
      SERVICE_NAME: envoyproxy
         TYPE               : 10  WIN32_OWN_PROCESS
         STATE              : 4  RUNNING
                                 (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
         WIN32_EXIT_CODE    : 0  (0x0)
         SERVICE_EXIT_CODE  : 0  (0x0)
         CHECKPOINT         : 0x0
         WAIT_HINT          : 0x0
...

Use sc.exe to configure the service startup and error handling.

Tip

The output of sc query envoyproxy contains the exit code of Envoy Proxy. In case the arguments are invalid we set it to E_INVALIDARG. For more information Envoy is reporting startup failures with error messages on Windows Event Viewer.