Traefik 설정 개요
Traefik 설정 개요 (Traefik Configuration Overview)
본문
부트 환경 (Boot Environment)
Traefik Proxy의 설정은 두 가지 큰 범주로 나뉘어요:
-
설치 설정 (Install Configuration): (예전엔 정적 설정이라고 불렸어요) 변경하면 Traefik을 재시작해야 하는 파라미터를 정의해요. 엔트리포인트, 프로바이더, API/대시보드 설정, 로깅 레벨 등이 여기에 포함돼요.
-
라우팅 설정 (Routing Configuration): (예전엔 동적 설정이라고 불렸어요) 라우터, 서비스, 미들웨어처럼 Traefik을 재시작하지 않고도 업데이트할 수 있는 요소를 다뤄요.
이 섹션은 Traefik의 초기 부팅에 필수적인 설치 설정을 다루는 데 집중해요.
설정 방법 (Configuration Methods)
Traefik은 설치 설정을 정의하는 여러 방법을 제공해요.
참고 (Note)
한 가지 방법을 골라 계속 쓰는 것이 중요해요. 서로 다른 설정 옵션을 섞는 것은 지원되지 않고 예상치 못한 동작을 일으킬 수 있거든요.
Traefik 프록시를 설정할 수 있는 방법은 다음과 같아요:
-
파일 (File)
-
CLI
-
환경 변수 (Environment Variables)
-
Helm
파일 (File)
YAML이나 TOML 같은 형식으로 파일에 설치 설정을 정의할 수 있어요.
설정 예시 (Configuration Example)
traefik.yml (YAML)
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker: {}
api:
dashboard: true
log:
level: INFO
traefik.toml (TOML)
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.websecure]
address = ":443"
[providers]
[providers.docker]
[api]
dashboard = true
[log]
level = "INFO"
설정 파일 (Configuration File)
시작할 때 Traefik은 다음 디렉토리에서 traefik.yml(또는 traefik.yaml 또는 traefik.toml)이라는 이름의 파일에 설치 설정이 있는지 찾아봐요:
-
/etc/traefik/
-
$XDG_CONFIG_HOME/
-
$HOME/.config/
-
. (현재 작업 디렉토리)
configFile 인자를 사용해 이 동작을 덮어쓸 수 있어요:
traefik --configFile=foo/bar/myconfigfile.yml
CLI
CLI를 사용하면 Traefik을 시작할 때 설치 설정을 명령줄 인자로 직접 전달할 수 있어요.
설정 예시 (Configuration Example)
CLI
traefik \
--entryPoints.web.address=":80" \
--entryPoints.websecure.address=":443" \
--providers.docker \
--api.dashboard \
--log.level=INFO
환경 변수 (Environment Variables)
환경 변수를 사용해 설치 설정을 지정할 수도 있어요. 각 옵션은 TRAEFIK_ 접두사를 붙인 환경 변수에 대응해요.
설정 예시 (Configuration Example)
ENV
TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=":80" TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS=":443" TRAEFIK_PROVIDERS_DOCKER=true TRAEFIK_API_DASHBOARD=true TRAEFIK_LOG_LEVEL="INFO" traefik
Helm
Kubernetes 클러스터에서 Helm으로 Traefik Proxy를 배포할 때는 설치 설정을 values.yaml 파일에 정의해요.
공식 Traefik Helm 차트는 GitHub에서 찾을 수 있어요.
설정 예시 (Configuration Example)
values.yaml
ports:
web:
exposedPort: 80
websecure:
exposedPort: 443
additionalArguments:
- "--providers.kubernetescrd.ingressClass=traefik"
- "--log.level=INFO"
Helm 명령 (Helm Commands)
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik -f values.yaml