我可以在 SCM 下的 Windows 上运行 Envoy 吗?

注意

2023 年 8 月 31 日,Envoy 项目由于资源不足而结束了对 Windows 的官方支持。我们将继续接受与 Windows 构建相关的补丁。在另行通知之前,Windows 构建将从 Envoy CI 以及 Envoy 发布和安全流程中排除。

注意

此功能仍处于实验阶段。

您可以将 Envoy 作为 Windows 服务启动,该服务在 Windows 服务控制管理器 下管理。首先,您需要创建服务。假设您在当前目录中有一个名为 envoy-custom.yaml 的自定义配置。创建服务后,您可以启动它。

管理员提示符运行以下命令(注意您需要将 C:EnvoyProxy 替换为 envoy.exe 二进制文件和配置文件的路径)

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

使用 sc.exe 配置服务的启动和错误处理。

提示

sc query envoyproxy 的输出包含 Envoy 代理的退出代码。如果参数无效,我们将将其设置为 E_INVALIDARG。有关更多信息,Envoy 会在 Windows 事件查看器中报告启动故障及其错误消息。