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_name to the dynamic module’s bootstrap extension config init function together with the extension_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_name is used to choose the implementation. The extension_config can be used to configure the specific behavior of each implementation.

google.protobuf.Struct is serialized as JSON before passing it to the module. google.protobuf.BytesValue and google.protobuf.StringValue are 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