본문 바로가기
네트워크 (LAN,WAN)

쿠버네티스 네트워크 대전환 재설계: Ingress의 끝, Gateway API의 시작

by 날으는물고기 2025. 12. 26.

쿠버네티스 네트워크 대전환 재설계: Ingress의 끝, Gateway API의 시작

728x90

2026 “쿠버네티스 표준 아키텍처”

핵심은 단순히 “툴을 바꾼다”가 아니라, 클러스터 네트워킹의 ‘구성 방식(모델)’이 바뀌는 것입니다.

변화의 촉발점: Ingress NGINX 은퇴(EOL)

쿠버네티스 SIG Network/SRC는 Ingress NGINX 프로젝트가 2026년 3월에 유지보수 중단/은퇴하며, 이후에는 릴리스/버그픽스/보안패치가 더 이상 제공되지 않는다고 공지했습니다. 즉, “지금은 동작해도” 2026-03 이후는 보안 취약점이 떠도 고칠 수 없는 상태가 됩니다.

➡️ 그래서 2026의 네트워크 표준 이야기는 사실상
“Ingress 단일 API 중심에서 → Gateway API 중심으로”의 전환 이야기입니다.

Ingress 시대의 구조(구 방식)와 한계

Ingress 모델(구 방식) 요약

  • Ingress 리소스 하나로 Host/Path 라우팅을 정의
  • “실제 프록시/게이트웨이”는 Ingress Controller(NGINX/HAProxy/Traefik/Kong 등)가 구현
  • 확장 기능(인증/레이트리밋/WAF/헤더변환 등)은 컨트롤러별 Annotation(주석) 또는 CRD로 붙이기 시작

Ingress의 대표 YAML(구 방식 예시)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  annotations:
    # 컨트롤러별로 달라지는 확장(이식성이 낮음)
    konghq.com/strip-path: "false"
spec:
  ingressClassName: kong
  rules:
  - host: web.example.com
    http:
      paths:
      - path: /v1
        pathType: Prefix
        backend:
          service:
            name: web-svc
            port:
              number: 80

Ingress의 구조적 한계(2026 전환의 본질)

Ingress는 “간단한 웹 라우팅”에 최적화되어 있어서, 다음 요구가 커질수록 불편해집니다.

  • 역할 분리(거버넌스): 플랫폼팀(인프라)과 서비스팀(앱)이 서로 다른 책임을 져야 하는데, Ingress는 그 경계가 애매함
  • 프로토콜 확장: HTTP/HTTPS 말고 TCP/UDP/TLS 같은 L4도 “표준 방식”으로 다루기 어려움
  • 표준 확장 방식 부재: 인증/정책/필터가 사실상 컨트롤러별 어노테이션 난립
  • 크로스 네임스페이스 보안 모델이 부족

이 문제를 해결하는 방향이 Gateway API입니다.

Gateway API 시대(새 방식): 네트워크 모델이 어떻게 바뀌나

Kubernetes 공식 문서는 Gateway API를 “동적 인프라 프로비저닝 + 고급 트래픽 라우팅을 제공하는 API 패밀리”이며, 확장 가능하고, 역할 지향(role-oriented), 프로토콜 인지(protocol-aware) 모델이라고 정의합니다.

핵심 변화 1: “역할 분리(거버넌스)”가 기본 설계로 들어옴

Gateway API는 리소스를 분리해서 조직 운영 구조를 그대로 담기 좋습니다.

  • GatewayClass: “이 클러스터에서 어떤 게이트웨이 구현체를 쓸 건지” (예: kong, gke, istio 등)
  • Gateway: 실제 진입점(LoadBalancer/NodePort/주소/리스너/인증서 등)
  • Route(HTTPRoute/TCPRoute/UDPRoute/TLSRoute 등): 서비스팀이 작성하는 라우팅 정의

➡️ 플랫폼팀은 GatewayClass/Gateway를 관리하고,
서비스팀은 자기 네임스페이스에서 HTTPRoute만 관리하는 구조가 자연스럽습니다.

핵심 변화 2: “프로토콜 확장”이 표준으로 들어옴

Kong 문서도 Gateway API가 Ingress를 확장해 HTTP/HTTPS뿐 아니라 TCP/UDP/TLS 라우트까지 다룰 수 있다고 설명합니다. (Kong Docs)

핵심 변화 3: 크로스 네임스페이스 참조를 ‘허용 기반’으로 통제

Gateway API는 기본적으로 다른 네임스페이스 리소스를 함부로 참조하지 못하게 하고, 필요하면 ReferenceGrant로 명시적 허용을 하게 합니다. (gateway-api.sigs.k8s.io)

➡️ 이게 보안/거버넌스에서 엄청 큽니다.
“서비스팀 A가 플랫폼팀 네임스페이스의 백엔드를 마음대로 물지 못하게” 기본적으로 막아줍니다.

Gateway API를 “실제로” 쓰는 구조: Kong(KIC) 예시 설명

Kong 공식 문서는 KIC를 이렇게 정의합니다.

  • KIC는 Kubernetes 리소스(Ingress, HTTPRoute)를 읽어서
  • 이를 Kong Gateway 설정으로 변환한다.

또한 Kong 문서의 Gateway API 페이지는

  • Gateway API는 Ingress를 확장하며
  • KIC가 Gateway API CRD가 설치된 경우에만 Gateway API 리소스를 reconcile한다고 명시합니다.

(전제) Gateway API CRD 설치

Gateway API는 “쿠버네티스 기본 내장”이 아니라 CRD를 설치해야 합니다.

300x250

예시(표준 CRD 설치)

kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml

(설치 방식 자체는 Gateway API 공식 배포물 기준입니다.)

Kong Gateway API 구성 흐름(정석)

아래는 “플랫폼팀/서비스팀 분리”까지 고려한 실전형 템플릿입니다.

플랫폼팀: GatewayClass 선택 (클러스터 구현체 지정)

GatewayClass는 “이 클러스터에서 어떤 게이트웨이 컨트롤러가 처리할 건가”를 나타내는 최상위 선택입니다.

예시(개념)

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: kong
spec:
  controllerName: konghq.com/kic-gateway-controller

플랫폼팀: Gateway 생성 (실제 진입점)

Gateway는 “리스너(포트/프로토콜/호스트/TLS) + 어디에 붙는지(LB 등)”를 담습니다.

예시

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: edge-gw
  namespace: gateway-system
spec:
  gatewayClassName: kong
  listeners:
  - name: https
    protocol: HTTPS
    port: 443
    hostname: "api.example.com"
    tls:
      mode: Terminate
      certificateRefs:
      - kind: Secret
        name: api-cert

서비스팀: HTTPRoute 생성 (라우팅 정의)

HTTPRoute는 부모(ParentRefs)로 어떤 Gateway에 붙을지 지정하고, host/path 매칭과 backendRefs를 둡니다.

예시

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: api-route
  namespace: team-a
spec:
  parentRefs:
  - name: edge-gw
    namespace: gateway-system
  hostnames:
  - "api.example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /v1
    backendRefs:
    - name: api-svc
      port: 80

여기서 “Ingress 시대”와 비교하면 차이가 명확합니다.

  • Ingress는 “한 리소스에 다 때려 넣기”
  • Gateway API는 “Gateway(진입점)와 Route(라우팅)”를 분리해 운영 책임을 분리합니다.

크로스 네임스페이스 보안: ReferenceGrant로 ‘명시적 허용’

예를 들어 team-a의 HTTPRoute가 gateway-system의 어떤 리소스를 참조하려면, ReferenceGrant로 허용해주는 패턴이 등장합니다.

공식 문서 예시 흐름(개념)

apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
  name: allow-team-a
  namespace: gateway-system
spec:
  from:
  - group: gateway.networking.k8s.io
    kind: HTTPRoute
    namespace: team-a
  to:
  - group: ""
    kind: Secret

(ReferenceGrant는 “누가(from)가 무엇(to)을 참조할 수 있는지”를 명시적으로 선언하는 모델입니다.)

보안적으로 중요한 이유

  • Ingress 시대에는 TLS Secret/Backend 참조가 팀/네임스페이스 경계를 어기며 난잡해지기 쉬웠는데,
  • Gateway API는 기본적으로 막고, 필요하면 허용 기반(allow-list)으로 열게 합니다.

Kong(KIC)의 “정책 엔진” 활용: 플러그인으로 네트워크 정책을 표준화

KIC 문서(개요)는 KIC가 Ingress/HTTPRoute를 Kong Gateway 설정으로 변환한다고 설명합니다.
그리고 Kong 생태계의 강점은 “플러그인(정책)”입니다.

레이트리밋(예시): 네트워크 레벨에서 API 보호

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: rl-10rps
plugin: rate-limiting
config:
  second: 10
  policy: local

서비스/라우트에 붙이기(예시)

apiVersion: v1
kind: Service
metadata:
  name: api-svc
  namespace: team-a
  annotations:
    konghq.com/plugins: rl-10rps
spec:
  selector:
    app: api
  ports:
  - port: 80
    targetPort: 8080

➡️ 효과

  • 앱 수정 없이 “Ingress/Gateway 레이어”에서 API 남용을 차단
  • 조직 공통 정책(예: 기본 10rps, 특정 경로는 더 낮게)을 표준화 가능

Path 처리(예시): strip-path 같은 “장애 원인 1순위”를 표준 규칙으로

Kong은 strip-path를 동작 옵션으로 제공하고(켜고 끌 수 있음), 이는 Ingress 시절에도 트러블이 많은 지점입니다. (KIC에서 동작 옵션을 제공)
→ 조직 표준으로 “외부 URL과 내부 URL 매핑 규칙”을 정하고, 리뷰 포인트로 고정하는 게 중요합니다.

2026 네트워크 표준 운영 가이드(실무형)

“Ingress → Gateway API” 전환을 실패하지 않는 방법

단계 1: 공존 설계

  • 기존 Ingress는 유지
  • 신규 서비스는 HTTPRoute로 먼저 전개
  • Gateway는 단일 진입점으로 먼저 표준화

단계 2: 정책 표준화

  • 레이트리밋/인증/헤더/로그를 Kong 플러그인으로 “표준 패키지”화
  • 팀이 임의로 annotation을 난사하지 못하도록 가이드/템플릿 제공

단계 3: 거버넌스 강화

  • ReferenceGrant로 cross-namespace 참조를 엄격 관리
  • Gateway는 플랫폼팀만 변경, HTTPRoute는 서비스팀이 변경(승인 체계)

보안관리 관점 점검 포인트

  • EOL 리스크: Ingress NGINX를 2026-03 이후 계속 쓰는 구간은 “취약점 패치 불가” 구간
  • Gateway API 거버넌스: Gateway(진입점)와 Route(라우팅) 책임 분리, ReferenceGrant로 네임스페이스 경계 통제
  • 정책 부착 위치 표준화
    • 공통 보안 정책(기본 레이트리밋/기본 헤더)은 Gateway/Route 레벨
    • 서비스별 예외는 HTTPRoute 레벨
    • 민감 인증키/시크릿은 “플러그인에 직접 박지 않는” 원칙(별도 Secret/Vault 전략 필요)

2026 네트워크 관점 결론

  • 2026 변화의 핵심은 Ingress 컨트롤러 교체가 아니라 Ingress 모델 → Gateway API 모델로의 전환입니다.
  • Gateway API는 역할 분리(거버넌스) + 프로토콜 확장 + 허용 기반 크로스네임스페이스 보안(ReferenceGrant)을 기본으로 제공합니다.
  • Kong(KIC)은 Ingress/HTTPRoute를 모두 처리하며, Gateway API 사용을 공식 문서로 지원합니다.

완성형 템플릿 세트

아래 3종을 운영 기준(온프렘/클라우드, 멀티팀, 도메인, 인증서, 로그/SIEM 연계)에 맞춰볼 수 있습니다.

  1. Kong + Gateway API 표준 템플릿(GatewayClass/Gateway/HTTPRoute/ReferenceGrant)
  2. Ingress NGINX → Kong/Gateway API 마이그레이션 플랜(단계/검증/롤백)
  3. 보안 점검표(RBAC, Secret/Vault, Admin API 격리, 로그/감사, 정책 부착 규칙)
728x90
그리드형(광고전용)

댓글