Skip to content

간단한 게이트웨이 배포하기

이 가이드는 Gateway API를 처음 사용하는 경우 시작하기에 좋은 곳입니다. 가장 간단한 배포를 보여줍니다: 같은 소유자가 함께 배포하는 Gateway와 Route 리소스. 이는 Ingress에 사용되는 것과 유사한 모델을 나타냅니다. 이 가이드에서는 모든 HTTP 트래픽을 매칭하여 foo-svc라는 단일 서비스로 보내는 Gateway와 HTTPRoute를 배포합니다.

간단한 게이트웨이

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: prod-web
spec:
  gatewayClassName: example
  listeners:
  - protocol: HTTP
    port: 80
    name: prod-web-gw
    allowedRoutes:
      namespaces:
        from: Same

Gateway(게이트웨이)는 논리적 로드 밸런서의 인스턴스화를 나타내며, GatewayClass(게이트웨이 클래스)는 사용자가 게이트웨이를 생성할 때 로드 밸런서 템플릿을 정의합니다. 예제 게이트웨이는 가상의 example 게이트웨이 클래스에서 템플릿화되며, 이는 자리 표시자로서 사용자가 대체해야 합니다. 특정 인프라 제공자에 따라 올바른 게이트웨이 클래스를 결정하는 데 사용할 수 있는 게이트웨이 구현체 목록을 확인하세요.

게이트웨이는 포트 80에서 HTTP 트래픽을 수신 대기합니다. 이 특정 게이트웨이 클래스는 IP 주소를 자동으로 할당하며, 이는 배포 후 Gateway.status에 표시됩니다.

Route 리소스는 ParentRefs를 사용하여 연결하려는 게이트웨이를 지정합니다. 게이트웨이가 이 연결을 허용하는 한 (기본적으로 같은 네임스페이스의 Route는 신뢰됨), Route는 부모 게이트웨이로부터 트래픽을 수신할 수 있습니다. BackendRefs는 트래픽이 전송될 백엔드를 정의합니다. 더 복잡한 양방향 매칭 및 권한은 다른 가이드에서 설명합니다.

다음 HTTPRoute는 게이트웨이 리스너의 트래픽이 백엔드로 라우팅되는 방법을 정의합니다. 호스트 라우트나 경로가 지정되지 않았으므로, 이 HTTPRoute는 로드 밸런서의 포트 80에 도착하는 모든 HTTP 트래픽을 매칭하여 foo-svc 파드로 전송합니다.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: foo
spec:
  parentRefs:
  - name: prod-web
  rules:
  - backendRefs:
    - name: foo-svc
      port: 8080

Route 리소스는 종종 다양한 백엔드(잠재적으로 다른 소유자를 가진)로 트래픽을 필터링하는 데 사용되지만, 이 예제는 단일 서비스 백엔드를 가진 가장 간단한 라우트를 보여줍니다. 이 예제는 서비스 소유자가 자신만의 사용을 위해 게이트웨이와 HTTPRoute를 모두 배포하여 서비스가 노출되는 방식에 대해 더 많은 제어와 자율성을 가질 수 있는 방법을 보여줍니다.