動態模組通用設定 (proto)

警告

此 API 功能目前正在開發中。標記為正在開發中的 API 功能不被視為穩定,不在威脅模型的範圍內,不受安全團隊支援,並且可能會發生重大變更。請務必在理解以上各點後再使用此功能。

extensions.dynamic_modules.v3.DynamicModuleConfig

[extensions.dynamic_modules.v3.DynamicModuleConfig proto]

動態模組的設定。動態模組是一個共享物件檔案,可由各種 Envoy 擴充點透過 dlopen 載入。目前僅支援 HTTP 過濾器 (envoy.filters.http.dynamic_modules)。

模組的載入方式取決於使用它的擴充點。例如,當 Envoy 收到在載入時引用模組的設定時,HTTP 過濾器會使用 dlopen 載入該模組。如果載入模組失敗,該設定將會被拒絕。

共享物件是否相同取決於檔案路徑以及檔案的 inode (取決於平台)。特別要注意的是,如果檔案路徑和檔案內容相同,則將重複使用共享物件。

模組必須與 abi.h 中指定的 ABI 相容。目前,只有 Envoy 程式碼庫與動態模組 SDK 之間完全版本匹配才能保證相容性。未來,在 ABI 穩定後,我們將重新檢視此限制,並希望能提供更廣泛的相容性保證。在此之前,Envoy 會檢查 ABI 標頭檔案的雜湊,以確保動態模組是基於相同版本的 ABI 建置的。

目前,此實作仍在開發中且無法使用。

{
  "name": ...,
  "do_not_close": ...
}
name

(字串必要) 動態模組的名稱。預期用戶端會有某些設定指示在哪裡搜尋模組。在 Envoy 中,搜尋路徑只能透過環境變數 ENVOY_DYNAMIC_MODULES_SEARCH_PATH 設定。實際搜尋路徑為 ${ENVOY_DYNAMIC_MODULES_SEARCH_PATH}/lib${name}.so。 TODO:使搜尋路徑可透過命令列選項設定。

do_not_close

(布林值) 設定為 true 可防止模組使用 dlclose 卸載。這對於具有不應卸載的全域狀態的模組很有用。當程式中不再有對模組的引用時,模組會被關閉。例如,沒有 HTTP 過濾器正在使用該模組 (例如在設定更新之後)。