Consul
Sidecar proxy configuration reference
The sidecar_service block is a service definition that can contain most regular service definition fields. Refer to Limitations for information about unsupported service definition fields for sidecar proxies.
Consul treats sidecar proxy service definitions as a root-level service definition. All fields are optional in nested definitions, which default to opinionated settings that are intended to reduce burden of setting up a sidecar proxy.
Sidecar service defaults
The following fields are set by default on a sidecar service registration. With
the exceptions noted any field may be overridden explicitly in
the connect.sidecar_service definition to customize the proxy registration.
The "parent" service refers to the service definition that embeds the sidecar
proxy.
id- ID defaults to<parent-service-id>-sidecar-proxy. This value cannot be overridden as it is used to manage the lifecycle of the registration.name- Defaults to<parent-service-name>-sidecar-proxy.tags- Defaults to the tags of the parent service.meta- Defaults to the service metadata of the parent service.port- Defaults to being auto-assigned from a configurable range specified bysidecar_min_portandsidecar_max_port.kind- Defaults toconnect-proxy. This value cannot be overridden.check,checks- By default we add a TCP check on the local address and port for the proxy, and a service alias check for the parent service. If eithercheckorchecksfields are set, only the provided checks are registered.proxy.destination_service_name- Defaults to the parent service name.proxy.destination_service_id- Defaults to the parent service ID.proxy.local_service_address- Defaults to127.0.0.1.proxy.local_service_port- Defaults to the parent service port.
Example with overwritten configurations
In the following example, the sidecar_service macro sets baselines configurations for the proxy, but the proxy
upstreams
and built-in proxy
configuration fields contain custom values:
{
"name": "web",
"port": 8080,
"connect": {
"sidecar_service": {
"proxy": {
"upstreams": [
{
"destination_name": "db",
"local_bind_port": 9191
}
],
"config": {
"handshake_timeout_ms": 1000
}
}
}
}
}
Limitations
The following fields are not supported in the connect.sidecar_service block:
id- Sidecar services get an ID assigned and it is an error to override this value. This ID is required to ensure that the agent can correctly deregister the sidecar service later when the parent service is removed.kind- Kind defaults toconnect-proxyand there is no way to unset this behavior.connect.sidecar_service- Service definitions cannot be nested recursively.connect.native- Thekindis fixed toconnect-proxyand it is an error to register aconnect-proxythat is also service mesh-native.