Dynamic Modules Health Checker (proto)

This extension has the qualified name envoy.health_checkers.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.health_checkers.dynamic_modules.v3.DynamicModuleHealthCheck

[extensions.health_checkers.dynamic_modules.v3.DynamicModuleHealthCheck proto]

Configuration for the Dynamic Modules Health Checker. This health checker allows loading shared object files via dlopen to implement custom active health checking behavior.

A module can be loaded by multiple health checkers; the module is loaded only once and shared across multiple health checker instances.

Envoy drives the standard per-host interval and timeout timers and applies the common interval, timeout, healthy_threshold and unhealthy_threshold settings. On each interval the module is asked to check the host; it may perform the work on its own thread and reports the host’s health status back to Envoy.

{
  "dynamic_module_config": {...},
  "health_checker_name": ...,
  "health_checker_config": {...}
}
dynamic_module_config

(extensions.dynamic_modules.v3.DynamicModuleConfig, REQUIRED) Specifies the shared-object level configuration. This field is required.

health_checker_name

(string, REQUIRED) The name for this health checker configuration.

This can be used to distinguish between different health checker implementations inside a dynamic module. For example, a module can have completely different health checker implementations (e.g., a ping checker, an external-service checker). When Envoy receives this configuration, it passes the health_checker_name to the dynamic module’s health checker config init function together with the health_checker_config. That way a module can decide which in-module health checker implementation to use based on the name at load time.

health_checker_config

(Any) The configuration for the health checker chosen by health_checker_name. If not specified, an empty configuration is passed to the module.

This is passed to the module’s health checker initialization function. Together with the health_checker_name, the module can decide which in-module health checker implementation to use and fine-tune the behavior of the health checker.

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 JSON struct configuration
health_checker_config:
  "@type": "type.googleapis.com/google.protobuf.Struct"
  value:
    path: "/healthz"
    degraded_on_slow_response: true

# Passing a simple string configuration
health_checker_config:
  "@type": "type.googleapis.com/google.protobuf.StringValue"
  value: "/healthz"