상현에 하루하루
All 개발자의 하루

traefik v2 서비스 여러 포트 바인딩, 연결

( 업데이트: )

traefik(2.x)으로 서비스를 개방해서 연결하는 것은 아주 간단하고 손쉬웠습니다. 하지만 그렇다면 여러개의 포트를 사용하는 서비스는 어떻게 연결해야할까?

  • whoami-svc1.localhost ➡️ whoami:9000
  • whoami-svc2.localhost ➡️ whoami:9001

위처럼 whoami 서비스를 만들면서 하나의 서비스에 2가지 포트를 개방해야하는 경우

version: "3.7"

services:

  whoami:
    image: containous/whoami
    labels:
      - traefik.enable=true
      # port 1
      - traefik.http.routers.whoami-1.rule=Host(`whoami-svc1.localhost`)
      - traefik.http.routers.whoami-1.entrypoints=web,web-secure
      - traefik.http.routers.whoami-1.tls=true
      - traefik.http.routers.whoami-1.service=whoami-svc1
      - traefik.http.services.whoami-svc1.loadbalancer.server.port=9000
      # port 2
      - traefik.http.routers.whoami-2.rule=Host(`whoami-svc2.localhost`)
      - traefik.http.routers.whoami-2.entrypoints=web,web-secure
      - traefik.http.routers.whoami-2.tls=true
      - traefik.http.routers.whoami-2.service=whoami-svc2
      - traefik.http.services.whoami-svc2.loadbalancer.server.port=9001

traefik 2.x의 라우터 및 서비스는 도커 레이블을 사용하여 원하는 명명 규칙을 사용하여 동적으로 만들 수 있습니다. 위 설정에서 whoami-1whoami-2 라우터에 서비스명을 기본값을 사용하는 대신 자체 라우터/서비스를 동적으로 생성하기 때문에 각 서비스에 대한 로드 밸런서는 대상 응용 프로그램의 서버 포트에 몇시적으로 알려야 합니다.

  • routers.{라우터명}.service
  • http.services.{서비스명}.locadbalancer

두가지는 필수이며 생략할 수 없습니다!