【问题标题】:K8s Traefik CRD Middleware (Rate Limiting) not workingK8s Traefik CRD 中间件(速率限制)不工作
【发布时间】:2020-04-24 13:19:19
【问题描述】:

以下 K8s 实现正确创建了 IngressRoute,但未应用速率限制。

kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  labels:
    app: containous
    name: whoami
  namespace: whoami
spec:
  replicas: 2
  selector:
    matchLabels:
      app: containous
      task: whoami
  template:
    metadata:
      labels:
        app: containous
        task: whoami
    spec:
      containers:
        - name: containouswhoami
          image: containous/whoami
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: crd-traefik-test
  namespace: whoami
spec:
  ports:
    - name: http
      port: 80
  selector:
    app: containous
    task: whoami
--- 
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: rate-limiting-test
  namespace: whoami
spec:
  entryPoints: 
    - web
  routes:
     - middlewares: 
       - name: crd-service-rate-limiter
     - match: Path(`/bar`)
       kind: Rule
       services:
        - name: crd-traefik-test
          port: 80
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: crd-service-rate-limiter
  namespace: whoami
spec:
  rateLimit:
    average: 1
    period: 100

谁能帮忙?

干杯

【问题讨论】:

    标签: traefik traefik-ingress


    【解决方案1】:

    这是我对定义路径前缀条的中间件资源的使用:

    YAML:

    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: auth-ingress-route
    spec:
      entryPoints:
        - http
      routes:
        - match: Host(`stuff`) && PathPrefix(`/api/auth`)
          kind: Rule
          middlewares:
            - name: strip-auth-prefix
          services:
            - name: auth-srv
              port: 3000
    

    JSON:

    {
      "apiVersion": "traefik.containo.us/v1alpha1",
      "kind": "IngressRoute",
      "metadata": {
        "name": "auth-ingress-route"
      },
      "spec": {
        "entryPoints": [
          "http"
        ],
        "routes": [
          {
            "match": "Host(`ticketing`) && PathPrefix(`/api/auth`)",
            "kind": "Rule",
            "middlewares": [
              {
                "name": "strip-auth-prefix"
              }
            ],
            "services": [
              {
                "name": "auth-srv",
                "port": 3000
              }
            ]
          }
        ]
      }
    }
    

    这是你的版本,在 YAML 和 JSON 中:

    YAML:

    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: rate-limiting-test
      namespace: whoami
    spec:
      entryPoints: 
        - web
      routes:
         - middlewares: 
           - name: crd-service-rate-limiter
         - match: Path(`/bar`)
           kind: Rule
           services:
            - name: crd-traefik-test
              port: 80
    

    JSON:

    {
      "apiVersion": "traefik.containo.us/v1alpha1",
      "kind": "IngressRoute",
      "metadata": {
        "name": "rate-limiting-test",
        "namespace": "whoami"
      },
      "spec": {
        "entryPoints": [
          "web"
        ],
        "routes": [
          {
            "middlewares": [
              {
                "name": "crd-service-rate-limiter"
              }
            ]
          },
          {
            "match": "Path(`/bar`)",
            "kind": "Rule",
            "services": [
              {
                "name": "crd-traefik-test",
                "port": 80
              }
            ]
          }
        ]
      }
    }
    

    我会让你弄清楚为什么它可能不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2016-12-04
      • 1970-01-01
      • 2022-07-18
      相关资源
      最近更新 更多