Traefik

공호진·2024년 7월 24일

Traefik

목록 보기
1/3

Traefik?

Traefik은 서비스를 간편하게 게시할 수 있는 오픈소스 엣지 라우터입니다.
시스템을 대신해 요청을 수신하고, 해당 요청을 처리할 구성 요소를 찾아줍니다.

Traefik의 특징은 서비스에 맞는 설정을 자동으로 찾아 준다는 점입니다.
인프라를 검사하여 자동으로 찾고 어떤 서비스가 어떤 요청을 처리하는지 자동으로 발견합니다.

Traefik은 Kubernetes, Docker, Docker Swarm, AWS 등 주요 클러스터 기술과 호환되며, 여러 기술을 동시에 다룰 수 있습니다.

Traefik은 모든 것이 실시간으로 자동적으로 이루어지기 때문에, 별도의 설정 파일을 유지하고 동기화할 필요가 없습니다. 따라서 시스템의 작동 상태를 설정하고 유지하는 대신 새로운 기능 개발과 배포에 집중할 수 있습니다.

Concepts

Introduction

Traefik은 EntryPoints, Routers, Middlewares, 그리고 Services 개념을 기반으로 합니다.

주요 기능으로는 동적 구성, 서비스 디스커버리, 다중 백엔드 및 프로토콜 지원 등이 있습니다.

  • EntryPoints : Traefik으로 들어오는 네트워크 진입점입니다. 패킷을 수신할 포트와 TCP 또는 UDP를 정의할 수 있습니다.
  • Routers : 들어오는 요청을 처리할 수 있는 서비스에 연결하는 역할을 합니다.

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

  • Services : 최종적으로 들어오는 요청을 처리할 실제 서비스에 도달하는 방법을 구성하는 역할을 합니다.

Edge Router(엣지 라우터)

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

Auto Service Discovery

전통적으로 엣지 라우터는(또는 리버스 프록시)는 서비스로의 모든 경로를 포함하는 구성 파일이 필요하지만, Traefix은 이러한 경로 정보를 서비스 자체에서 가져옵니다.

서비스를 배포할 때, 서비스가 처리할 수 있는 요청의 특성을 Traefik에 알려주는 정보를 첨부합니다.

서비스를 배포할 때, Traefik은 이를 즉시 감시하고 실시간으로 라우팅 규칙을 업데이트 합니다.
마찬가지로, 서비스가 인프라에서 제거되면 해당 경로도 이에 맞게 삭제됩니다.

더 이상 IP 주소나 다른 규칙으로 구성 파일을 생성하고 동기화할 필요가 없습니다.

Configuration(설정) 소개

어떻게 작동할까?

Traefik 의 설정은 두 가지 다른 의미를 가질 수 있다.

  • Dynamic Configuration (동적 설정):
    - 완전히 동적인 라우팅 구성입니다.
    - 요청이 시스템에서 어떻게 처리되는지를 정의하는 모든 내용을 포함합니다.
    - 이 구성은 변경될 수 있으며, 요청 중단이나 연결 손실 없이 매끄럽게 핫 리로드됩니다.
  • Static Configuration (정적 설정):
    - 초기 시작 구성입니다.
    - Provider 와 연결 설정 및 Traefik이 청취할 Entrypoints 를 정의합니다. 이러한 요소는 자주 변경되지 않습니다.
    - 예: Entrypoints 설정, 로깅 설정, Provider 설정 등.

정적 구성은 Traefik이 시작될 때 설정되며, 동적 구성은 Traefik이 실행되는 동안 라우팅 규칙 및 서비스 설정을 실시간으로 업데이트하고 적용합니다.

The Dynamic Configuration

Traefik은 동적 구성을 다음과 같은 Provider에서 가져옵니다.
(오케스트레이터, 서비스 레지스트리, 또는 단순한 기존 구성 파일)

이 구성은 사용자의 인프라 선택에 따라 달라지므로, 해당 문서의 전용 섹션을 참조하시기 바랍니다.

The Static Configuration

Traefik에서 정적 구성 옵션을 정의하는 방법은 다음 세 가지가 있으며, 상호 배타적이므로 한 번에 하나만 사용할 수 있습니다.

  • In a configuration file
  • In the command-line arguments
  • As environment variables

특정 옵션에 대해 값이 제공되지 않은 경우, 기본값이 적용됩니다. 또한, 옵션에 하위 옵션이 있는 경우, 이 하위 옵션이 지정되지 않으면 기본값이 적용됩니다.

예를 들어, --providers.docker 옵션은 비록 --providers.docker.endpoint와 같은 하위 옵션이 존재하더라도 단독으로도 Docker 프로바이더를 활성화하기에 충분합니다.
이 옵션을 설정하면 --providers.docker의 모든 하위 옵션의 기본값이 설정(및 재설정)됩니다.

Configuration File

Traefik은 시작 시 다음 위치에서 traefik.yml (또는 traefik.yaml, traefik.toml) 파일을 찾아 정적 구성을 검색합니다

  • /etc/traefik/
  • $XDG_CONFIG_HOME/
  • $HOME/.config/
  • . (the working directory)

profile
내일 더 나은 개발자가 되기 위해, 오늘을 기록합니다

0개의 댓글