Traefik_Docker 구성해보기

공호진·2024년 7월 24일

Traefik

목록 보기
2/3

Launch Traefik With the Docker Provider

docker-compse.yml 을 생성하고, 공식 Traefik 이미지를 사용하는 reverse-proxy 서비스를 정의합니다.

version: '3'

services:
  reverse-proxy:
    #  공식 v3 Traefik docker image
    image: traefik:v3.1
    # 웹 UI를 활성화하고 Traefik이 Docker를 청취하도록 설정
    command: --api.insecure=true --providers.docker
    ports:
      # The HTTP port
      - "80:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    volumes:
      # Docker 이벤트를 Traefik이 청취할 수 있도록 설정
      - /var/run/docker.sock:/var/run/docker.sock

Traefik 기동~

  • 다음 커맨드로 reverse-proxy 시작

    docker-compose up -d reverse-proxy

브라우저를 열고 http://localhost:8080/api/rawdata로 이동하여 Traefik의 API rawdata를 확인할 수 있습니다. (2단계에서 서비스를 실행한 후 다시 이곳으로 돌아오세요).

Traefik Detects New Services and Creates the Route for You

다음은 Traefik 인스턴스를 실행한 후, 새로운 서비스를 배포하는 데 필요한 docker-compose.yml 파일에 추가할 내용입니다:

version: '3'

services:

  ...

  whoami:
    # A container that exposes an API to show its IP address
    image: traefik/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"

위의 설정은 whoami를 정의합니다. 이는 배포된 머신에 대한 정보 (예: IP 주소, 호스트 등)를 출력하는 웹 서비스입니다.

  • 다음 커맨드로 whoami 시작

    docker-compose up -d whoami

http://localhost:8080/api/rawdata로 이동하여 Traefik이 새로운 컨테이너를 자동으로 감지하고 자신의 구성을 업데이트했는지 확인하세요.

Traefik이 새로운 서비스를 감지하면 해당 서비스에 대한 라우트를 생성합니다.
이를 확인하기 위해 curl을 사용할 수 있습니다.
다음 명령을 통해 whoami 서비스를 호출해 보자.

curl -H Host:whoami.docker.localhost http://127.0.0.1

다음 결과를 확인할 수 있다.

Hostname: a656c8ddca6c
IP: 172.27.0.3
#...

More Instances? Traefik Load Balances Them

다음 명령을 사용하여 whoami 서비스의 인스턴스를 추가로 실행할 수 있습니다.

docker-compose up -d --scale whoami=2

http://localhost:8080/api/rawdata로 이동하여 Traefik이 새로운 컨테이너 인스턴스를 자동으로 감지했는지 확인합니다.

마지막으로, 다음 명령어를 두 번 실행하여 Traefik이 두 인스턴스 간에 로드 밸런싱을 하는지 확인합니다.

curl -H Host:whoami.docker.localhost http://127.0.0.1
Hostname: a656c8ddca6c
IP: 172.27.0.3
#...
Hostname: s458f154e1f1
IP: 172.27.0.4
# ...

-원문 번역

profile
내일 더 나은 개발자가 되기 위해, 오늘을 기록합니다

0개의 댓글