Traefik Kubernetes 미들웨어
Traefik Kubernetes 미들웨어 (Middleware)
본문
Middleware
Middleware는 Traefik 미들웨어의 CRD 구현이에요.
Middleware 객체를 만들기 전에 Traefik Kubernetes CRD를 Kubernetes 클러스터에 적용해야 해요.
이렇게 하면 Middleware kind와 기타 Traefik 전용 리소스가 등록돼요.
교차 provider 네임스페이스
Kubernetes에도 자체 네임스페이스 개념이 있으므로, 미들웨어 정의가 다른 provider에서 오는 경우 리소스(미들웨어 참조에서)의 Kubernetes 네임스페이스와 provider 네임스페이스를 혼동하지 말아야 해요. 이런 맥락에서 리소스를 참조할 때 네임스페이스를 지정하는 것은 의미가 없으며 무시돼요. 또한 CRD Provider에서 Middleware를 참조하려면, Traefik이 내부적으로 네임스페이스를 자동으로 추가하므로 리소스 이름에 리소스의 네임스페이스를 덧붙여야 해요.
교차 네임스페이스 참조
아래 예시에서 미들웨어는 foo 네임스페이스에 정의되어 있고, 다른 네임스페이스의 IngressRoute에서 참조돼요. 이러한 교차 네임스페이스 참조를 활성화하려면 Traefik Kubernetes CRD provider 구성에서 allowCrossNamespace 옵션을 활성화해야 해요. 이 요구 사항을 피하고 싶다면 같은 네임스페이스 안에서 Middleware를 정의하고 참조할 수 있어요.
Configuration Example (설정 예시)
Middleware
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: stripprefix
namespace: foo
spec:
stripPrefix:
prefixes:
- /stripit
IngressRoute
apiVersion: 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
사용 가능한 미들웨어에 대한 자세한 정보는 전용 middlewares overview 섹션을 참고해 주세요.