Traefik Proxy TCP 미들웨어 개요
본문
TCP 미들웨어 개요
라우터에 붙는 미들웨어는 요청이 서비스로 보내지기 전에(또는 서비스의 응답이 클라이언트로 보내지기 전에) 그 요청을 다듬는 수단이에요.
Traefik에는 여러 미들웨어가 있는데, 어떤 것은 요청이나 헤더를 수정하고, 어떤 것은 리다이렉션을 담당하며, 또 어떤 것은 인증을 추가하는 식이에요.
같은 프로토콜을 쓰는 미들웨어들은 체인으로 조합해 모든 시나리오에 맞출 수 있어요.
설정 예시
구조화 (YAML)
# YAML 설정 파일로
tcp:
routers:
router1:
service: myService
middlewares:
- "foo-ip-allowlist"
rule: "Host(`example.com`)"
middlewares:
foo-ip-allowlist:
ipAllowList:
sourceRange:
- "127.0.0.1/32"
- "192.168.1.7"
services:
service1:
loadBalancer:
servers:
- address: "10.0.0.10:4000"
- address: "10.0.0.11:4000"
구조화 (TOML)
# TOML 설정 파일로
[tcp.routers]
[tcp.routers.router1]
service = "myService"
middlewares = ["foo-ip-allowlist"]
rule = "Host(`example.com`)"
[tcp.middlewares]
[tcp.middlewares.foo-ip-allowlist.ipAllowList]
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
[tcp.services]
[tcp.services.service1]
[tcp.services.service1.loadBalancer]
[[tcp.services.service1.loadBalancer.servers]]
address = "10.0.0.10:4000"
[[tcp.services.service1.loadBalancer.servers]]
address = "10.0.0.11:4000"
Labels
labels:
# `foo-ip-allowlist`라는 미들웨어 만들기
- "traefik.tcp.middlewares.foo-ip-allowlist.ipallowlist.sourcerange=127.0.0.1/32, 192.168.1.7"
# `foo-ip-allowlist` 미들웨어를 `router1` 라우터에 적용하기
- "traefik.tcp.routers.router1.middlewares=foo-ip-allowlist@docker"
Consul Catalog
{
//...
"Tags" : [
// `foo-ip-allowlist`라는 미들웨어 만들기
"traefik.tcp.middlewares.foo-ip-allowlist.ipallowlist.sourcerange=127.0.0.1/32, 192.168.1.7",
// `foo-ip-allowlist` 미들웨어를 `router1` 라우터에 적용하기
"traefik.tcp.routers.router1.middlewares=foo-ip-allowlist@consulcatalog"
]
}
Kubernetes
---
apiVersion: traefik.io/v1alpha1
kind: MiddlewareTCP
metadata:
name: foo-ip-allowlist
spec:
ipAllowList:
sourceRange:
- 127.0.0.1/32
- 192.168.1.7
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: ingressroute
spec:
# more fields...
routes:
# more fields...
middlewares:
- name: foo-ip-allowlist
사용 가능한 TCP 미들웨어
| 미들웨어 | 용도 | 영역 | | InFlightConn | 동시 연결 수를 제한해요. | 보안, 요청 수명주기 | | IPAllowList | 허용되는 클라이언트 IP를 제한해요. | 보안, 요청 수명주기 |