前面的几个例子中,我们自定义过 traefik 的全局配置。除了全局配置,还定义了一个 仅内网可访问的 ip白名单 中间件,在指定 应用路由 下使用这个中间件。
这两个用法,应该足够应对目前所有的需求了。试一下给自己凭空创造一个需求:按 某个 http 请求头 限流。
配置 traefik 中间件
首先翻一下 traefik 官网文档,找到 https://doc.traefik.io/traefik/middlewares/http/ratelimit/ 。从这个文档里,可以总结出来我们希望的配置示例。
yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
namespace: xxx
spec:
rateLimit:
sourceCriterion:
requestHeaderName: token
average: 100
period: 1m
burst: 200
按 请求头中的 token 字段分组,没有 token 字段的都归到同一个组下。每 1分钟 一个周期,限制平均 100 个请求。支持突发请求数量达到 200。
period
可以不配,默认是 1 秒。
sourceCriterion
可以不配,默认是按 ip。
配置 应用路由 注解
@see ip 白名单
traefik.ingress.kubernetes.io/router.middlewares xxx-test-ratelimit@kubernetescrd
未实践
以上配置,只是理论,还没实践自测过。