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
Code language: PHP (php)
traefik 2.x의 라우터 및 서비스는 도커 레이블을 사용하여 원하는 명명 규칙을 사용하여 동적으로 만들 수 있습니다. 위 설정에서 whoami-1
과 whoami-2
라우터에 서비스명을 기본값을 사용하는 대신 자체 라우터/서비스를 동적으로 생성하기 때문에 각 서비스에 대한 로드 밸런서는 대상 응용 프로그램의 서버 포트에 몇시적으로 알려야 합니다.
routers.{라우터명}.service
http.services.{서비스명}.locadbalancer
두가지는 필수이며 생략할 수 없습니다!