簡體   English   中英

如何讓 traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip 工作?

[英]How do I get traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip to work?

我有以下 kubernetes 清單

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik-external
    traefik.ingress.kubernetes.io/router.entrypoints: websecure, web
    traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
  name: ingressname
  namespace: thenamespace
spec:
  rules:
  - host: my.host
    http:
      paths:
      - backend:
          serviceName: theservice
          servicePort: 8080
        path: /api

就吃的服務, theservice ,偵聽/我期望的URL my.host/api/something/anotherthing匹配/something/anotherthingtheservice 不過,這不會發生在我身上,我得到了一個 404。

任何想法可能有什么問題?

在從 v1 到 v2 的過渡期間,Traefik 的許多內部部分和組件被重寫和重組。 因此,前端和后端等核心概念的組合已被路由器服務中間件的組合所取代。

在 v2 轉換中,傳入請求的 URL 路徑前綴配置有中間件對象,在路由步驟之后使用路由器規則PathPrefix

使用 v1,它是在入口級別定義的:

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: traefik
      annotations:
        kubernetes.io/ingress.class: traefik
        traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
    spec:
      rules:
      - host: company.org
        http:
          paths:
          - path: /admin
            backend:
              serviceName: admin-svc
              servicePort: admin

在 v2 中,您還定義了 ingress-route 旁邊的中間件對象:


apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: http-redirect-ingressRoute
  namespace: admin-web
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`company.org`) && PathPrefix(`/admin`)
      kind: Rule
      services:
        - name: admin-svc
          port: admin
      middlewares:
        - name: admin-stripprefix
---
kind: Middleware
metadata:
  name: admin-stripprefix
spec:
  stripPrefix:
    prefixes:
      - /admin

可以在此處找到更多信息: 前端和后端已死...
... 萬歲路由器、中間件和服務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM