繁体   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