Middleware
Middleware 是 Traefik 中间件的 CRD 实现。
创建 Middleware 对象前,需要将 Traefik Kubernetes CRD 应用到 Kubernetes 集群。
这会注册 Middleware 类型及其他 Traefik 专用资源。
跨提供者命名空间
Kubernetes 自身也有命名空间的概念,因此当中间件定义来自另一个提供者时,不要混淆资源的 Kubernetes 命名空间(用于引用中间件)与提供者命名空间。在这种情况下,引用资源时指定 Kubernetes 命名空间没有意义,该值会被忽略。此外,从 CRD 提供者引用 Middleware 时,必须将资源的命名空间附加到资源名称中,因为 Traefik 会在内部自动附加命名空间。
跨命名空间引用
下例在 foo 命名空间中定义中间件,并由另一个命名空间中的 IngressRoute 引用它。要允许这种跨命名空间引用,必须在 Traefik Kubernetes CRD 提供者配置中启用 allowCrossNamespace。如果不希望启用该选项,可以在同一个命名空间中定义和引用 Middleware。
配置示例¶
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: stripprefix
namespace: foo
spec:
stripPrefix:
prefixes:
- /stripitapiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutebar
spec:
entryPoints:
- web
routes:
- match: Host(`example.com`) && PathPrefix(`/stripit`)
kind: Rule
services:
- name: whoami
port: 80
middlewares:
- name: stripprefix
namespace: foo有关可用中间件的更多信息,请参阅中间件概述。