用于 TCP 的 Traefik 2.0 IP 白名单 - Kubernetes CRD

Traefik 2.0 IPWhitelist for TCP - Kubernetes CRD

我们正在使用 Kubernetes 和 Traefik 2.0。 我们使用 Kubernetes CRD (IngressRoute) 作为 Traefik 的提供者。

从 Traefik 文档来看,中间件似乎不能用于 TCP 路由器。

我们想 IP Whitelist middleware 与 TCP 路由器一起使用,但到目前为止它只能与 Http 路由器一起使用。

这是我们的 ipWhitelist 定义:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: testIPwhitelist
spec:
  ipWhiteList:
    sourceRange:
      - 127.0.0.1/32
      - 192.168.1.7

这里是 Traefik 服务定义:

apiVersion: v1
kind: Service
metadata:
  name: traefik

spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - protocol: TCP
      name: web
      port: 8000
    - protocol: TCP
      name: admin
      port: 8080
    - protocol: TCP
      name: websecure
      port: 4443
    - protocol: TCP
      name: mongodb
      port: 27017
  selector:
    app: traefik

IngressRoutes 定义:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: simpleingressroute
  namespace: default
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/who`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
      - name: testIPwhitelist
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroute.mongo

spec:
  entryPoints:
    - mongodb
  routes:
  # Match is the rule corresponding to an underlying router.
  - match: HostSNI(`*`)
    services:
    - name: mongodb
      port: 27017

    middlewares:
      - name: testIPwhitelist

有什么方法可以用 traefik TCP 路由器限制 IP 吗?

有关带有 Kubernetes CRD 的 traefik 的更多资源,您可以前往 here

你说得对,中间件不能用于 TCP 路由器。通过中间件概念的 IPWhitelist 仅适用于 HTTP 路由器。 您可以关注 github 为 TCP 路由器请求中间件的问题。