Dynamic Modules Bootstrap Extension (proto)
This extension has the qualified name envoy.bootstrap.dynamic_modules
Note
This extension is functional but has not had substantial production burn time, use only with this caveat.
This extension is not hardened and should only be used in deployments where both the downstream and upstream are trusted.
Tip
This extension extends and can be used with the following extension category:
This extension must be configured with one of the following type URLs:
extensions.bootstrap.dynamic_modules.v3.DynamicModuleBootstrapExtension
[extensions.bootstrap.dynamic_modules.v3.DynamicModuleBootstrapExtension proto]
Configuration for the Dynamic Modules bootstrap extension. This extension allows loading shared
object files that can be loaded via dlopen to extend Envoy’s bootstrap behavior.
A module can be loaded by multiple bootstrap extensions; the module is loaded only once and shared across multiple extensions.
Bootstrap extensions run on the main thread and are initialized when Envoy starts. They can:
Perform initialization tasks when the server is initialized.
Perform per-worker thread initialization when worker threads start.
Access server-level resources like the cluster manager and dispatcher.
{
"dynamic_module_config": {...},
"extension_name": ...,
"extension_config": {...}
}
- dynamic_module_config
(extensions.dynamic_modules.v3.DynamicModuleConfig) Specifies the shared-object level configuration.
- extension_name
(string) The name for this extension configuration.
This can be used to distinguish between different extension implementations inside a dynamic module. For example, a module can have completely different extension implementations. When Envoy receives this configuration, it passes the
extension_nameto the dynamic module’s bootstrap extension config init function together with theextension_config. That way a module can decide which in-module extension implementation to use based on the name at load time.If not specified, defaults to an empty string.
- extension_config
(Any) The configuration for the extension chosen by
extension_name.This is passed to the module’s bootstrap extension initialization function. Together with the
extension_name, the module can decide which in-module extension implementation to use and fine-tune the behavior of the extension.For example, if a module has two extension implementations, one for configuration loading and one for metric initialization,
extension_nameis used to choose the implementation. Theextension_configcan be used to configure the specific behavior of each implementation.google.protobuf.Structis serialized as JSON before passing it to the module.google.protobuf.BytesValueandgoogle.protobuf.StringValueare passed directly without the wrapper.# Passing a string value extension_config: "@type": "type.googleapis.com/google.protobuf.StringValue" value: hello # Passing raw bytes extension_config: "@type": "type.googleapis.com/google.protobuf.BytesValue" value: aGVsbG8= # echo -n "hello" | base64