
Traefik은 서비스를 간편하게 게시할 수 있는 오픈소스 엣지 라우터입니다.
시스템을 대신해 요청을 수신하고, 해당 요청을 처리할 구성 요소를 찾아줍니다.
Traefik의 특징은 서비스에 맞는 설정을 자동으로 찾아 준다는 점입니다.
인프라를 검사하여 자동으로 찾고 어떤 서비스가 어떤 요청을 처리하는지 자동으로 발견합니다.
Traefik은 Kubernetes, Docker, Docker Swarm, AWS 등 주요 클러스터 기술과 호환되며, 여러 기술을 동시에 다룰 수 있습니다.
Traefik은 모든 것이 실시간으로 자동적으로 이루어지기 때문에, 별도의 설정 파일을 유지하고 동기화할 필요가 없습니다. 따라서 시스템의 작동 상태를 설정하고 유지하는 대신 새로운 기능 개발과 배포에 집중할 수 있습니다.
Traefik은 EntryPoints, Routers, Middlewares, 그리고 Services 개념을 기반으로 합니다.
주요 기능으로는 동적 구성, 서비스 디스커버리, 다중 백엔드 및 프로토콜 지원 등이 있습니다.

Routers : 들어오는 요청을 처리할 수 있는 서비스에 연결하는 역할을 합니다.

MiddleWares : 라우터에 연결된 미들웨어는 요청이나 응답을 서비스에 보내기 전에 수정할 수 있습니다.

Services : 최종적으로 들어오는 요청을 처리할 실제 서비스에 도달하는 방법을 구성하는 역할을 합니다.
Traefik은 엣지 라우터입니다. 즉, 플랫폼의 문 역할을 하며, 모든 들어오는 요청을 인터셉터 하고 라우팅해줍니다. 경로, 호스트, 헤더 등을 기반으로 어떤 서비스가 어떤 요청을 처리할지 결정하는 모든 logic 과 rule 을 알고 있습니다.

전통적으로 엣지 라우터는(또는 리버스 프록시)는 서비스로의 모든 경로를 포함하는 구성 파일이 필요하지만, Traefix은 이러한 경로 정보를 서비스 자체에서 가져옵니다.
서비스를 배포할 때, 서비스가 처리할 수 있는 요청의 특성을 Traefik에 알려주는 정보를 첨부합니다.

서비스를 배포할 때, Traefik은 이를 즉시 감시하고 실시간으로 라우팅 규칙을 업데이트 합니다.
마찬가지로, 서비스가 인프라에서 제거되면 해당 경로도 이에 맞게 삭제됩니다.
더 이상 IP 주소나 다른 규칙으로 구성 파일을 생성하고 동기화할 필요가 없습니다.
어떻게 작동할까?

Traefik 의 설정은 두 가지 다른 의미를 가질 수 있다.
정적 구성은 Traefik이 시작될 때 설정되며, 동적 구성은 Traefik이 실행되는 동안 라우팅 규칙 및 서비스 설정을 실시간으로 업데이트하고 적용합니다.
Traefik은 동적 구성을 다음과 같은 Provider에서 가져옵니다.
(오케스트레이터, 서비스 레지스트리, 또는 단순한 기존 구성 파일)
이 구성은 사용자의 인프라 선택에 따라 달라지므로, 해당 문서의 전용 섹션을 참조하시기 바랍니다.
Traefik에서 정적 구성 옵션을 정의하는 방법은 다음 세 가지가 있으며, 상호 배타적이므로 한 번에 하나만 사용할 수 있습니다.
특정 옵션에 대해 값이 제공되지 않은 경우, 기본값이 적용됩니다. 또한, 옵션에 하위 옵션이 있는 경우, 이 하위 옵션이 지정되지 않으면 기본값이 적용됩니다.
예를 들어, --providers.docker 옵션은 비록 --providers.docker.endpoint와 같은 하위 옵션이 존재하더라도 단독으로도 Docker 프로바이더를 활성화하기에 충분합니다.
이 옵션을 설정하면 --providers.docker의 모든 하위 옵션의 기본값이 설정(및 재설정)됩니다.
Traefik은 시작 시 다음 위치에서 traefik.yml (또는 traefik.yaml, traefik.toml) 파일을 찾아 정적 구성을 검색합니다