Updated:

1 minute read

개요

  • 사이트
  • 오픈 소스 엣지 라우터
  • 주요 목표
    • 사용하기 쉽게 만드는 것
  • 차별화
    • 서비스에 적합한 구성을 자동으로 검색
    • 인프라를 검사하여 관련 정보를 찾고 어떤 서비스가 어떤 요청을 제공하는지 발견
    • 별도의 구성 파일을 유지하고 동기화할 필요가 없음
    • 실시간으로 자동으로 발생
    • 작업 상태를 구성하고 유지 관리하는 대신 시스템에 새로운 기능을 개발하고 배포하는 데 시간을 할애


아키텍처

  • 아키텍처


Concepts

  • 기반
    • EntryPoints
      • 네트워크 진입점
      • 패킷을 수신할 포트와 TCP 또는 UDP를 수신할지 여부를 정의
    • 라우터
      • 들어오는 요청을 처리할 수 있는 서비스에 연결하는 역할
    • 미들웨어
      • 라우터에 연결된 미들웨어는 요청이나 응답이 서비스로 전송되기 전에 수정 가능
    • 서비스
      • 들어오는 요청을 최종적으로 처리할 실제 서비스에 도달하는 방법을 구성하는 역할
  • 기능
    • 동적 구성
    • 자동 서비스 검색
      • 서비스에서 해당 경로를 가져오므로 IP 주소나 기타 규칙으로 복잡하게 얽힌 구성 파일을 만들고 동기화할 필요가 없음
      • 서비스가 배포되면 Traefik은 이를 즉시 감지하고 라우팅 규칙을 실시간으로 업데이트
    • 다중 백엔드 및 프로토콜 지원


설치

  • Docker
  • Kubernetes
  • 포트 확인
    • kubectl get service -A | grep "traefik-dashboard-service\|traefik-web-service"
  • dashboard


테스트

  1. 인그레스 생성
    • 서비스명 : func-01, 포트 : 8080인 http 서비스가 있다고 가정
    • apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: func-01
        namespace: default
      spec:
        rules:
          - http:
              paths:
                - path: /func-01
                  pathType: Prefix
                  backend:
                    service:
                      name: func-01
                      port:
                        number: 8080
      
  2. curl 127.0.0.1:${traefik-web-service port}/func-01 실행


관찰 가능성(Observability)

  • Logs, Access Logs, Metrics, Tracing 지원