envoy-preflight 项目教程
1. 项目目录结构及介绍
envoy-preflight
项目的目录结构如下:
envoy-preflight/
├── Dockerfile
├── Gopkg.lock
├── Gopkg.toml
├── LICENSE
├── README.md
├── main.go
├── github/
│ └── workflows/
└── vendor/
目录结构介绍
- Dockerfile: 用于构建 Docker 镜像的文件。
- Gopkg.lock 和 Gopkg.toml: 用于管理 Go 依赖的文件。
- LICENSE: 项目的开源许可证文件。
- README.md: 项目的介绍和使用说明。
- main.go: 项目的启动文件。
- github/workflows/: 包含 GitHub Actions 的工作流配置文件。
- vendor/: 包含项目的依赖库。
2. 项目启动文件介绍
项目的启动文件是 main.go
。该文件是 envoy-preflight
的核心代码,负责启动应用程序并确保 Envoy 作为 sidecar 容器正常运行。
main.go
文件介绍
main.go
文件的主要功能包括:
- 检查 Envoy 是否已经准备好。
- 等待 Envoy 报告为 LIVE 状态。
- 执行传递给
envoy-preflight
的命令。 - 在应用程序退出时,确保 Envoy 也正常关闭。
3. 项目配置文件介绍
envoy-preflight
项目的配置主要通过环境变量进行。以下是主要的配置项:
环境变量
- ENVOY_ADMIN_API: 这是 Envoy 管理接口的路径,格式为
http://127.0.0.1:9010
。如果提供了该变量,envoy-preflight
将轮询该 URL 的/server_info
端点,等待 Envoy 报告为 LIVE 状态。 - ENVOY_KILL_API: 这是用于终止 Envoy 的 POST 命令的端点,默认值为
$ENVOY_ADMIN_API/quitquitquit
。 - NEVER_KILL_ENVOY: 如果设置为
true
,envoy-preflight
将不会在任何情况下终止 Envoy。 - ALWAYS_KILL_ENVOY: 如果设置为
true
,envoy-preflight
将始终在主应用程序退出时终止 Envoy,即使主应用程序以非零退出代码退出。 - START_WITHOUT_ENVOY: 如果设置为
true
,envoy-preflight
将不会等待 Envoy 变为 LIVE 状态,而是直接启动主应用程序。
通过这些环境变量,用户可以灵活配置 envoy-preflight
的行为,以适应不同的使用场景。