[cloud native][proxy] Traefik
Updated:
개요
- 사이트
- 오픈 소스 엣지 라우터
- 주요 목표
- 사용하기 쉽게 만드는 것
- 차별화
- 서비스에 적합한 구성을 자동으로 검색
- 인프라를 검사하여 관련 정보를 찾고 어떤 서비스가 어떤 요청을 제공하는지 발견
- 별도의 구성 파일을 유지하고 동기화할 필요가 없음
- 실시간으로 자동으로 발생
- 작업 상태를 구성하고 유지 관리하는 대신 시스템에 새로운 기능을 개발하고 배포하는 데 시간을 할애
아키텍처
Concepts
- 기반
- EntryPoints
- 네트워크 진입점
- 패킷을 수신할 포트와 TCP 또는 UDP를 수신할지 여부를 정의
- 라우터
- 들어오는 요청을 처리할 수 있는 서비스에 연결하는 역할
- 미들웨어
- 라우터에 연결된 미들웨어는 요청이나 응답이 서비스로 전송되기 전에 수정 가능
- 서비스
- 들어오는 요청을 최종적으로 처리할 실제 서비스에 도달하는 방법을 구성하는 역할
- EntryPoints
- 기능
- 동적 구성
- 자동 서비스 검색
- 서비스에서 해당 경로를 가져오므로 IP 주소나 기타 규칙으로 복잡하게 얽힌 구성 파일을 만들고 동기화할 필요가 없음
- 서비스가 배포되면 Traefik은 이를 즉시 감지하고 라우팅 규칙을 실시간으로 업데이트
- 다중 백엔드 및 프로토콜 지원
설치
- Docker
- Kubernetes
- 포트 확인
kubectl get service -A | grep "traefik-dashboard-service\|traefik-web-service"
- dashboard
테스트
- 인그레스 생성
서비스명 : 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
curl 127.0.0.1:${traefik-web-service port}/func-01
실행
관찰 가능성(Observability)
- Logs, Access Logs, Metrics, Tracing 지원