본문 바로가기
클라우드/쿠버네티스

🏆 쿠버네티스 트래픽 제어의 진화: Ingress에서 Gateway API, 그리고 Traefik CRD까지

by gasbugs 2026. 2. 7.

오늘날 클러스터 트래픽 제어의 핵심인 세 가지 방식을 블로그 형태로 정리해 드립니다. 오픈소스 Traefik을 활용하면 쿠버네티스 네이티브 기능인 Ingress와 Gateway 그리고 Traefik의 CRD인 IngressRoute 기능 모두 활용이 가능합니다. 여기서는 어떻게 이 기능을 위한 yaml 파일을 작성할 수 있는지 상세히 알아보도록 하겠습니다. 


1. 🏛️ 클래식의 힘: 쿠버네티스 네이티브 Ingress

쿠버네티스 초기부터 트래픽의 관문 역할을 해온 Ingress는 가장 익숙하고 검증된 방식입니다.  L7 부하 분산을 위한 표준 규격입니다.

  • 동작 원리: Ingress 리소스는 규칙을 정의하고, 실제 처리는 Nginx나 Traefik 같은 컨트롤러가 담당합니다.
  • 장점: 설정이 매우 단순하며, 거의 모든 클라우드 환경에서 표준으로 작동합니다.
  • 한계: 복잡한 라우팅(Canary, 미러링 등)을 구현하려면 각 벤더별로 파편화된 Annotations에 의존해야 하며, 이는 설정의 가독성을 떨어뜨리는 주범이 됩니다.

📝 Ingress 매니페스트 예시

YAML
 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: native-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: app.juhun.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app-service
            port:
              number: 80

2. 🚀 차세대 표준: 쿠버네티스 네이티브 Gateway API

Ingress의 한계를 극복하기 위해 등장한 Gateway API는 역할 기반(Role-oriented) 설계가 핵심입니다. 대규모 인프라를 설계하는 엔지니어에게는 이 표준화된 구조가 큰 축복입니다.

  • 역할 분리: 인프라 관리자(GatewayClass, Gateway)와 서비스 개발자(HTTPRoute)의 권한을 명확히 분리할 수 있습니다.
  • 표준화된 고급 기능: Annotations 없이도 트래픽 가중치 분산, 헤더 조작 등을 표준 스펙으로 지원합니다.
  • 유연성: L4(TCP/UDP)부터 L7까지 아우르는 통합 제어가 가능하여, 확장성이 매우 뛰어납니다.

📝 Gateway API (HTTPRoute) 예시

YAML
 
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: app-gateway-route
spec:
  parentRefs:
  - name: my-gateway
  rules:
  - matches:
    - path: { type: PathPrefix, value: /api }
    backendRefs:
    - name: api-service-v1
      port: 80
      weight: 90
    - name: api-service-v2 # 카나리 배포
      port: 80
      weight: 10

3. 🎨 최적화의 정수: Traefik CRD (IngressRoute)

표준도 좋지만, 특정 솔루션의 성능을 100% 끌어내고 싶을 때 우리는 **CRD(Custom Resource Definition)**를 선택합니다. Traefik의 IngressRoute는 특히 '직관성'과 '강력한 기능'을 동시에 제공합니다.

  • 미들웨어 체이닝: 인증, 비율 제한, 에러 페이지 처리 등을 미들웨어 객체로 만들어 자유롭게 조립할 수 있습니다.
  • Kubernetes Native: 쿠버네티스 스타일의 구문을 그대로 사용하면서도, 표준 Ingress보다 훨씬 세밀한 트래픽 제어가 가능합니다.
  • 보안 최적화: TLS 설정이나 인증 처리가 매우 직관적이어서, 전문 분야인 보안 인프라 구축에 최적입니다.

📝 Traefik IngressRoute 예시

YAML
 
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-crd-route
spec:
  entryPoints:
    - websecure
  routes:
  - match: Host(`juhun-lab.com`) && PathPrefix(`/admin`)
    kind: Rule
    services:
    - name: admin-service
      port: 80
    middlewares:
    - name: ip-whitelist # 보안 미들웨어 적용

🧐  최종 비교 가이드

구분 Ingress Gateway API Traefik CRD
추천 대상 단순한 웹 서비스 배포 멀티 테넌시 기반 대형 클러스터 Traefik의 기능을 풀파워로 쓰고 싶을 때
복잡도 낮음 (쉬운 시작) 높음 (철저한 역할 분담) 중간 (직관적인 CRD 구조)
유연성 제한적 (Annotations 의존) 매우 높음 (표준 규격) 높음 (미들웨어 활용)

💡 마무리하며

이미 느끼셨겠지만, 기술의 선택은 '무엇이 더 좋은가'가 아니라 '어떤 환경에 더 적합한가'의 문제입니다. 11월에 탄생한 막내와 보내시는 소중한 시간만큼이나, 우리의 클러스터도 이 세 가지 도구를 통해 더욱 견고하고 평온하게 관리되기를 바랍니다.