Docker

[Docker] Traefik 으로 reverse proxy 서버 구축하기

IT-PAPA 2023. 8. 24. 06:23
728x90
반응형

Traefik은 오픈 소스 리버스 프록시와 로드 밸런서로서, 컨테이너 오케스트레이션 플랫폼인 Docker와 Kubernetes를 비롯한 다양한 환경에서 사용되는 도구입니다. 주로 마이크로서비스 아키텍처나 컨테이너화된 애플리케이션을 관리하고 배포하는 데 활용됩니다. 아래는 Traefik의 주요 특징과 기능에 대한 설명입니다:

1. **다이나믹한 백엔드 서비스 관리:** Traefik은 컨테이너 오케스트레이션 플랫폼과 연동하여 백엔드 서비스를 동적으로 감지하고 추가/제거할 수 있습니다. 이를 통해 서비스의 확장과 축소를 자동으로 처리할 수 있습니다.

2. **자동 SSL 인증서 관리:** Traefik은 Let's Encrypt와 통합되어 SSL/TLS 인증서를 자동으로 발급하고 갱신합니다. 이를 통해 애플리케이션의 보안 향상과 HTTPS 적용이 간편해집니다.

3. **룰 기반 라우팅 및 로드 밸런싱:** Traefik은 도메인, 경로, 헤더 등의 규칙을 설정하여 요청을 적절한 백엔드 서비스로 라우팅하고 로드 밸런싱합니다.

4. **다양한 진입점 및 백엔드 타입 지원:** Traefik은 다양한 진입점 (HTTP, HTTPS, TCP, UDP 등) 및 백엔드 타입 (Docker, Kubernetes, 서비스 디스커버리 등)을 지원하므로 여러 환경에서 쉽게 사용할 수 있습니다.

5. **웹 대시보드 제공:** Traefik은 웹 기반 대시보드를 제공하여 현재 서비스 상태, 라우팅 규칙, 인증서 정보 등을 시각적으로 확인할 수 있습니다.

6. **동적 구성:** Traefik은 API나 설정 파일(YAML 또는 TOML)을 통해 동적으로 구성할 수 있습니다. 이는 서비스 변경이나 확장 시에도 수동으로 설정을 업데이트하지 않아도 되는 장점을 제공합니다.

7. **클라우드 네이티브 환경 지원:** 컨테이너 오케스트레이션 플랫폼과 노드, 파드 등 클라우드 네이티브한 기능을 지원하여 클라우드 환경에서도 최적의 성능을 발휘할 수 있습니다.

Traefik은 유연하면서도 사용자 친화적인 설정 및 관리 방식을 제공하여, 마이크로서비스 아키텍처 및 컨테이너 환경에서 원활한 서비스 관리와 로드 밸런싱을 지원합니다.

 

Traefik vs Nginx 비교:

기능 Traefik Nginx
리버스 프록시 지원 지원
로드 밸런싱 내장된 동적 로드 밸런싱 지원
자동 SSL Let's Encrypt와 통합하여 자동화 추가 모듈 및 구성 필요
동적 구성 도커, 쿠버네티스 등과 통합하여 자동 감지 수동으로 구성 필요
백엔드 서비스 감지 자동 감지하여 동적으로 백엔드 서비스 추가 수동으로 구성 필요
설정 및 관리 동적으로 API 또는 YAML 파일을 통한 구성 정적인 설정 파일로 구성

 

traefik/traefik: The Cloud Native Application Proxy (github.com)

 

GitHub - traefik/traefik: The Cloud Native Application Proxy

The Cloud Native Application Proxy. Contribute to traefik/traefik development by creating an account on GitHub.

github.com

 

Traefik Docker Documentation - Traefik

 

Traefik Docker Documentation - Traefik

Traefik & Docker A Story of Labels & Containers Attach labels to your containers and let Traefik do the rest! Traefik works with both Docker (standalone) Engine and Docker Swarm Mode. The Quick Start Uses Docker If you have not already read it, maybe you w

doc.traefik.io

 

[Docker] 도커의 모든 것, 도커 추천 이미지!!! (tistory.com)

 

[Docker] 도커의 모든 것, 도커 추천 이미지!!!

필자는 이때까지 docker로 구축한 모든 목록을 이 블로그에 담았다. 앞으로도 이 페이지는 필자가 도커를 구축할 때마다 업데이트하려고 하니, 즐겨찾기 해두면 나쁘지 않을 거 같다. 유용하게 사

betwe.tistory.com

 

docker-compose.yml 파일

docker-compose.yml
version: "3.3"
services:
  traefik:
    image: "traefik:v2.10"
    container_name: "traefik"
    restart: always
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myresolver.acme.email=example@gmail.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "443:443"
      - "8080:8080"
    volumes:
      - "/data/traefik/letsencrypt:/letsencrypt"
        #- "./traefik.yml:/etc/traefik/traefik.yml"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
  whoami:
    image: "traefik/whoami"
    container_name: "simple-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`traefik.example.org`)"
      - "traefik.http.routers.whoami.entrypoints=websecure"
      - "traefik.http.routers.whoami.tls.certresolver=myresolver"

 

docker-compose 시작

docker-compose up -d

 

서비스 확인
서비스 확인

 

서비스 URL 접속

http://[서버 IP]:8080

서비스 URL 접속
서비스 URL 접속

 

docker-comopse 중지

docker-compose down
728x90
반응형
LIST