Skip to content

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