动态模块通用配置 (proto)
警告
此 API 功能目前正在开发中。标记为正在开发中的 API 功能不被视为稳定,不受 威胁模型 的涵盖范围,不受安全团队支持,可能会发生重大更改。在了解上述所有要点之前,请勿使用此功能。
extensions.dynamic_modules.v3.DynamicModuleConfig
[extensions.dynamic_modules.v3.DynamicModuleConfig proto]
动态模块的配置。动态模块是一个共享对象文件,可以通过各种 Envoy 扩展点通过 dlopen 加载。目前,仅支持 HTTP 过滤器 (envoy.filters.http.dynamic_modules)。
模块的加载方式由使用它的扩展点决定。例如,HTTP 过滤器在 Envoy 收到引用该模块的配置时,将在加载时使用 dlopen 加载模块。如果加载模块失败,配置将被拒绝。
共享对象是否相同由文件路径以及根据平台的文件的 inode 决定。值得注意的是,如果文件路径和文件内容相同,则将重用共享对象。
模块必须与 abi.h 中指定的 ABI 兼容。目前,兼容性仅由 Envoy 代码库和动态模块 SDK 之间的精确版本匹配保证。将来,在 ABI 稳定之后,我们将重新审视此限制,并希望提供更广泛的兼容性保证。在此之前,Envoy 会检查 ABI 头文件的哈希值,以确保动态模块是针对同一版本的 ABI 构建的。
目前,该实现正在开发中,不可用。
{
"name": ...,
"do_not_close": ...
}
- 名称
(string, 必需) 动态模块的名称。预期客户端会有一些配置来指示在哪里搜索模块。在 Envoy 中,搜索路径只能通过环境变量
ENVOY_DYNAMIC_MODULES_SEARCH_PATH
配置。实际搜索路径为${ENVOY_DYNAMIC_MODULES_SEARCH_PATH}/lib${name}.so
。TODO:通过命令行选项使搜索路径可配置。
- do_not_close
(bool) 设置为 true 以防止使用 dlclose 卸载模块。这对具有不应卸载的全局状态的模块很有用。当进程中不再存在对模块的引用时,模块将关闭。例如,没有 HTTP 过滤器正在使用模块(例如,在配置更新之后)。