2

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

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

我们想将IP 白名单中间件 与 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 的更多资源,您可以访问此处

4

1 回答 1

3

你是对的,中间件不能用于 TCP 路由器。IPWhitelist through Middleware 概念仅适用于 HTTP 路由器。您可以关注github上的问题,请求 TCP 路由器的中间件。

于 2019-10-22T09:14:43.147 回答