在 HTTPS 证书 的最后,我们自定义过 traefik 的全局配置。除了全局配置,还可以定义一些中间件,在局部使用这些中间件。
这是 traefik 官方文档,对 ip 白名单 中间件的说明: https://doc.traefik.io/traefik/middlewares/http/ipallowlist/
中间件 这个词啊。。。不是指 消息队列 这类东西么。。。被 http 框架给抢去了,FastAPI 里也叫中间件。。。原本不是叫 过滤器 么。。。
需求场景
我想限制某个服务,只能被内网的客户端访问,不开放到公网上。但是我的内网穿透,只想配成 TCP 类型的,不愿意增加应用层面的各种规则。
就可以把这个规则,配置到 traefik 上。
配置 traefik 中间件

yaml
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: only-inner-ip
namespace: kube-system
spec:
ipAllowList:
sourceRange:
- 127.0.0.0/8
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
我们把这个中间件,规划到 kube-system
这个命名空间下面,取名字叫 only-inner-ip
。
让 ingress 使用中间件
添加注解,value 规则是 命名空间-中间件名称@资源类型
。如果使用多个中间件,用 逗号 隔开。
traefik.ingress.kubernetes.io/router.middlewares kube-system-only-inner-ip@kubernetescrd
