https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/
Role-oriented
GateWay APi는 마치 조직내에서 쿠버네티스 네트워크를 담당하는 하나의 팀의 역할(role)을 모델링하도록 설계되었다. 그 역할이란 다음과 같다.
Infrastructure Provider
여러 테넌트, 쉽게 말해 gcp든 aws든 여러 클라우드 제공자를 대상으로 하는 여러 클러스터 (서로 격리되어있는)에 적용될 인프라를 관리한다.
Cluster Operator
여러 정책, 네트워크 접근, 애플리케이션 접근 권한등에 관한 클러스터 관리
Application Developer
클러스터에서 돌아갈 애플리케이션 관리, 그리고 애플리케이션 레벨의 설정, 서비스 오브젝트 관리
Portable
게이트웨이API 명세는 커스텀 리소스로 정의되고, 따라서 많은 구현체가 있을 수 있다
Expressive
게이트웨이API는 자주 사용되는 트래픽 라우팅(헤더기반, 트래픽 가중치 부여 등등)등의 기능도 제공함. 기존 인그레스에서 이런 기능은 커스텀 어노테이션으로만 가능했다.
Extensible
게이트웨이API는 다양한 레이어에서 커스텀 리소스를 연결할 수 있도록 지원함.
GatewayClass
공통된 구성을 가진 게이트웨이 집합을 정의. 해당 클래스를 구현하는 컨트롤러가 이를 관리한다.
이를 보면 컨트롤러 구현체는 CRD로 개발자가 선택해서 사용하는 식인듯 함.
GateWay
클라우드 로드 밸런서와 같은 트래픽 처리 인프라의 인스턴스를 정의한다.
HttpRoute
백엔드 네트워크 엔드포인트를 나타냄. 트래픽을 매핑하기 위한 L7수준 (HTTP)관련 규칙을 정의한다. 이전에 서비스 리소스가 하던 역할과 유사.
GRPCRoute
백엔드 네트워크 엔드포인트를 나타냄. 여기는 위와 같은데 gRPC 관련 규칙을 정의함. 이것도 이전에 서비스 리소스가 하던 역할과 유사.
GateWay 인스턴스는 정확히 하나의 GateWayClass와 매핑되고, 해당 Class는 해당 클래스와 매핑된 게이트웨이를 관리하는 게이트웨이 컨트롤러의 룰임.
그리고 GateWay인스턴스들은 HttpRoute와 같은 경로 유형과 연결된다. 게이트웨이는 자신과 연결될 수 있는 경로들을 필터링 가능.

게이트웨이는 해당 클래스를 구현하는 컨트롤러의 이름을 포함하는 GatewayClass를 참조해야 한다. gateWayClass의 최소 예시는 다음과 같다.
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: example-class
spec:
controllerName: example.com/gateway-controller