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)
Traefik Docker Documentation - Traefik
[Docker] 도커의 모든 것, 도커 추천 이미지!!! (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
docker-comopse 중지
docker-compose down
'Docker' 카테고리의 다른 글
[Docker] Adguardhome 구축하여, 광고를 차단해보자 (1) | 2023.08.28 |
---|---|
[Docker] Proxmox 를 Grafana + InfluxDB 로 모니터링 구축하기 (1) | 2023.08.26 |
[Docker] authentik 구축하여 SSO 로 이용하자! (1) | 2023.08.23 |
[Docker] kafdrop 으로 kafka 모니터링 구축하기 (1) | 2023.08.22 |
[Docker] Hoppscotch 구축하여, postman 같이 이용하자! (1) | 2023.08.21 |