动态模块通用配置 (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 过滤器正在使用模块(例如,在配置更新之后)。