본문 바로가기
WIKI 기술 지식 베이스

Traefik Proxy TCP 미들웨어 개요

원문 보기 위키 갱신

출처: Traefik Proxy TCP Middleware Overview

본문

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를 제한해요. | 보안, 요청 수명주기 |

더 알아보기 (Learn more)