Traefik Proxy Documentation - Traefik
Welcome Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them. What sets Traefik apart, besides it
doc.traefik.io
Architecture Overview
- traefik은 모든 요청을 인터셉트하고 해당하는 백엔드 서버에 라우트함
- 전통적인 리버스 프록시들과는 다르게, service discovery를 사용하여 동적으로 서비스를 구성함
- 별도의 구성 파일을 유지 관리하고 동기화할 필요가 없음
- 실시간으로 자동으로 발생 (다시 시작하거나 연결 중단 없음)
- 모든 메이저 프로토콜을 지원함
- 주요 클러스터 기술과 호환됨 (k8s, docker, docker swarm, aws, …)
- 로드 밸런싱, rate-limiting, circuit-breaker, mirroring, authention 등의 다양한 미들웨어 제공
Concepts
Edge Router
- 플랫폼의 문
- 들어오는 모든 요청을 가로채고 라우팅함
- 어떤 서비스가 어떤 요청을 처리할지 결정하는 모든 로직과 규칙을 알고 있음
Auto Service Discovery
- 서비스가 배포될 때, traefik에 서비스가 처리할 수 있는 요청의 특성을 알려주는 정보를 첨부
- 서비스가 배포될 때, traefik이 즉시 이를 감지하고 실시간으로 라우팅 규칙을 업데이트
- 마찬가지로 서비스가 인프라에서 제거되면 해당 경로도 그에 따라 삭제됨
Traefik은 클러스터 API를 사용하여 서비스를 검색하고 첨부된 정보를 읽을 수 있습니다. Traefik에서 이러한 커넥터는 Traefik에 구성을 제공하기 때문에 provider라고 합니다.
Routing & Load Balancing
- Traefik을 시작할 때, Entrypoint를 정의
- Entrypoint에 연결된 라우터는 들어오는 요청을 분석하여 rules 세트에 매칭되는지 확인
- 매칭된다면 Service에 전달하기 전에 Middleware를 사용하여 요청을 변환
- 요청을 서비스에 전달
- Provider 는 인프라에 있는 서비스(IP, 상태 등)를 검색합니다.
- Entrypoint 는 들어오는 트래픽(포트, ...)을 수신합니다.
- Router 는 요청(호스트, 경로, 헤더, SSL, ...)을 분석합니다.
- Service 는 요청을 서비스로 전달합니다(로드 밸런싱, ...)
- Middleware 는 요청을 업데이트하거나 요청(인증, 속도 제한, 헤더 등)을 기반으로 결정을 내릴 수 있습니다.
Service
Service는 들어오는 요청을 처리할 실제 서비스에 도달하는 방법을 구성
Configuring HTTP Services
- Servers Load Balancer
- Load-Balancing
- Stick sessions
- Health check (k8s X)
- …
- ServersTransport
- ServerName
- Certificates
- …
- Weighted Round Robin
- Mirroring
- Failover (only File provider)
Middlewares
- 요청이 서비스로 전송되기 전(또는 서비스의 응답이 클라이언트로 전송되기 전에) 요청을 조정하는 수단
- 몇 가지 사용 가능한 미들웨어가 있으며 일부는 요청, 헤더를 수정할 수 있고 일부는 리디렉션을 담당하고 일부는 인증을 추가하는 등의 작업을 수행
- 동일한 프로토콜을 사용하는 미들웨어는 모든 시나리오에 맞게 체인으로 결합될 수 있음
HTTP middlewares
- BasicAuth (user/pwd)
- Buffering
- CircuitBreaker
- Compress
- DigestAuth
- Errors
- ForwardAuth
- IpWhitelist
- InFlightReq
- Ratelimit
- Retry
- …