Traefik File 문서
Traefik File 문서 (Traefik File Documentation)
본문
File
File 프로바이더를 사용하면 YAML 또는 TOML 파일로 설치 구성을 정의할 수 있어요.
단일 구성 파일 또는 여러 개의 별도 파일을 통해 구성을 제공하는 것을 지원해요.
정보 (Info)
File 프로바이더는 문서 전체에서 여러 기능의 구성 샘플을 보여줄 때 사용되는 기본 형식이에요.
팁 (Tip)
File 프로바이더는 다른 프로바이더의 공통 요소를 재사용하는 좋은 해결책이 될 수 있어요(예: allowlist 미들웨어, 기본 인증(basic authentication) 선언 등).
구성 예시 (Configuration Example)
아래에서 설명하는 것처럼 File 프로바이더를 활성화할 수 있어요.
File (YAML)
providers:
file:
directory: "/path/to/dynamic/conf"
File (TOML)
[providers.file]
directory = "/path/to/dynamic/conf"
CLI
--providers.file.directory=/path/to/dynamic/conf
라우터, 미들웨어 & 서비스 선언하기:
YAML
http:
# Add the router
routers:
router0:
entryPoints:
- web
middlewares:
- my-basic-auth
service: service-foo
rule: Path(`/foo`)
# Add the middleware
middlewares:
my-basic-auth:
basicAuth:
users:
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
- test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0
usersFile: etc/traefik/.htpasswd
# Add the service
services:
service-foo:
loadBalancer:
servers:
- url: http://foo/
- url: http://bar/
passHostHeader: false
TOML
[http]
# Add the router
[http.routers]
[http.routers.router0]
entryPoints = ["web"]
middlewares = ["my-basic-auth"]
service = "service-foo"
rule = "Path(`/foo`)"
# Add the middleware
[http.middlewares]
[http.middlewares.my-basic-auth.basicAuth]
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"]
usersFile = "etc/traefik/.htpasswd"
# Add the service
[http.services]
[http.services.service-foo]
[http.services.service-foo.loadBalancer]
[[http.services.service-foo.loadBalancer.servers]]
url = "http://foo/"
[[http.services.service-foo.loadBalancer.servers]]
url = "http://bar/"
구성 옵션 (Configuration Options)
| Field | Description | Default | Required |
| providers.providersThrottleDuration | 구성 리로드 이후, 새로운 구성 갱신 이벤트를 반영하기까지 기다리는 최소 시간. 이 시간 안에 여러 이벤트가 발생하면 가장 최근 이벤트 하나만 반영되고 나머지는 모두 버려져요. 이 옵션은 프로바이더별로 설정할 수 없지만, 스로틀링 알고리즘은 각 프로바이더에 독립적으로 적용됩니다. | 2s | No |
| providers.file.filename | 구성 파일의 경로를 정의해요. | "" | Yes |
| providers.file.directory | 구성 파일이 들어 있는 디렉터리의 경로를 정의해요. filename 옵션과 directory 옵션은 상호 배타적이에요. directory 사용을 권장합니다. | "" | Yes |
| providers.file.watch | watch 옵션을 true로 설정하면 Traefik이 파일 변경을 자동으로 감시하게 돼요. filename 옵션과 directory 옵션 모두에서 동작합니다. | true | No |
| providers.file.debugLogGeneratedTemplate | 생성된 구성 템플릿의 디버그 로깅을 활성화해요. | false | No |
제한 사항 (Limitations)
File 프로바이더를 사용할 때 Traefik은 동적 구성을 갱신하기 위해 파일 시스템 알림을 수신해요.
오케스트레이터(예: docker, kubernetes)에서 마운트/바인드된 파일 시스템을 사용한다면, 파일이 연결되는 방식이 오류의 원인이 될 수 있어요. 파일 시스템 간 연결이 끊어지면, 소스 파일/디렉터리가 변경/이름 변경되어도 연결된 파일/디렉터리에는 아무것도 전달되지 않아서 파일 시스템 알림이 트리거되거나 캐치되지 않게 됩니다.
예를 들어 Docker에서 호스트 파일이 이름 변경되면 마운트된 파일과의 연결이 끊어져 컨테이너의 파일이 더 이상 갱신되지 않아요. 이런 문제를 피하려면 다음을 권장합니다.
-
Traefik 디렉터리 구성을 부모 디렉터리로 설정
-
부모 디렉터리를 마운트/바인드
모든 파일 시스템 알림을 수신하는 것은 매우 어렵기 때문에 Traefik은 fsnotify를 사용해요. 마운트된 디렉터리를 사용해도 문제가 해결되지 않는다면, 파일 시스템의 fsnotify 호환성을 확인해 보세요.
프로덕션에서 Traefik OSS를 사용하고 계신가요?
직장에서 Traefik을 사용하고 있다면 기업용 API 게이트웨이 기능이나 Traefik OSS에 대한 상용 지원을 고려해 보세요.
- API 게이트웨이 데모 영상 보기
- 24/7/365 OSS 지원 요청하기
Traefik OSS에 API 게이트웨이 기능을 추가하는 일은 빠르고 매끄러워요. 교체(rip and replace)가 필요 없고 모든 구성이 그대로 유지됩니다. 이 짧은 영상에서 실제 동작을 확인해 보세요.