Enable middlewares per service or per client
The simplest case
You just enable middleware globally by default.
components_manager:
components:
grpc-server-middlewares-pipeline:
middlewares:
some-middleware:
enabled: true # globally enable
Particular enable/disable for service or client
There are some ways to enable/disable for a particular service/client.
1. Globally enable (for all services) and local disable
For example, there is a auth middleware, but some service don't require the auth middleware by some reasons.
components_manager:
components:
grpc-server-middlewares-pipeline:
middlewares:
some-middleware:
enabled: true # globally enable
some-service:
middlewares:
some-middleware:
enabled: false # locally disable
2. Globally disable (for all services) and force local enable
For example, you want to start test some middleware in a particular service or client.
components_manager:
components:
grpc-server-middlewares-pipeline:
middlewares:
some-middleware:
enabled: false # globally disable
some-service:
middlewares:
some-middleware:
enabled: true # force enable in that service
For instructions on how to enable/disable middlewares per-service or per-client:
- See also
- grpc_middlewares_disable_all
How to disable all middlewares
There are two additional options in the static config:
disable-all-pipeline-middlewares
disable-user-pipeline-middlewares
disable-all-pipeline-middlewares
may be useful for "system" handlers and clients. E.g. grpc-health
.
disable-user-pipeline-middlewares
may be useful for libraries that don't want to receive unknown User
middlewares to their library middlewares list.
- Warning
- It is dangerous to disable all middlewares! Some middlewares greatly enhance service resilency and availability (e.g., ugrpc::server::middlewares::deadline_propagation::Component, ugrpc::server::middlewares::congestion_control::Component, ugrpc::client::middlewares::deadline_propagation::Component).
For more information about options see docs ugrpc::server::ServiceComponentBase
and ugrpc::client::ClientFactoryComponent
.
Example of the static YAML config.
grpc-client-factory:
channel-args: {}
# Disable all middlewares. But you can force enable some middlewares.
disable-all-pipeline-middlewares: true
middlewares:
grpc-client-logging: # force enable
enabled: true