Envoy 过滤器与路由配置:static_resources:

listeners:

- name: listener_0

address:

socket_address: { address: 0.0.0.0, port_value: 8080 }

filter_chains:

- filters:

- name: envoy.filters.network.http_connection_manager

typed_config:

"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager

stat_prefix: ingress_http

route_config:

name: local_route

virtual_hosts:

- name: backend

domains: ["*"]

routes:

- match: { prefix: "/api" }

rate_limits:

- actions:

- request_headers:

header_name: x-user-tier

descriptor_key: user_tier

route: { cluster: app }

http_filters:

- name: envoy.filters.http.ratelimit

typed_config:

"@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit

domain: api

rate_limit_service:

grpc_service:

envoy_grpc:

cluster_name: rls

timeout: 0.25s

transport_api_version: V3

- name: envoy.filters.http.router

clusters:

- name: app

type: LOGICAL_DNS

connect_timeout: 1s

lb_policy: ROUND_ROBIN

load_assignment:

cluster_name: app

endpoints:

- lb_endpoints:

- endpoint:

address:

socket_address: { address: 127.0.0.1, port_value: 7001 }

- name: rls

type: LOGICAL_DNS

connect_timeout: 1s

lb_policy: ROUND_ROBIN

http2_protocol_options: {}

load_assignment:

cluster_name: rls

endpoints:

- lb_endpoints:

- endpoint:

address:

socket_address: { address: 127.0.0.1, port_value: 8081 }

限流服务描述符配置(Lyft ratelimit 示例):domain: api

descriptors:

- key: user_tier

value: free

rate_limit:

unit: minute

requests_per_unit: 100

- key: user_tier

value: pro

rate_limit:

unit: minute

requests_per_unit: 1000

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部