커스텀 인그레스 컨트롤러 사용


이 페이지에서는 Google Kubernetes Engine(GKE)에서 커스텀 인그레스 컨트롤러를 사용하는 방법을 설명합니다.

HttpLoadBalancing 부가기능이 사용 설정된 커스텀 인그레스 컨트롤러 사용

HttpLoadBalancing 부가기능을 사용 중지하여 nginx-ingress와 같은 커스텀 인그레스 컨트롤러를 실행할 수 있습니다. 이렇게 하면 GKE 인그레스 컨트롤러가 인그레스 리소스를 처리하지 못합니다.

HttpLoadBalancing 부가기능이 사용 설정된 커스텀 인그레스 컨트롤러를 실행하려면(예: 하위 집합Private Service Connect와 같은 기능 사용) 다음 방법 중 하나를 사용할 수 있습니다.

프로세스가 실수로 spec.ingressClassName을 덮어쓰지 않도록 해야 합니다. spec.IngressClassName을 유효한 값에서 빈 문자열("")로 변경하는 업데이트 작업은 GKE 인그레스 컨트롤러가 인그레스를 처리하도록 합니다.

ingressClassName 필드 구성

인그레스 매니페스트에서 ingressClassName 필드를 설정하여 커스텀 인그레스 컨트롤러를 사용할 수 있습니다. 다음 매니페스트는 nginx 인그레스 컨트롤러를 지정하는 인그레스를 설명합니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: cafe-ingress
spec:
 ingressClassName: nginx
 tls:
 - hosts:
   - cafe.example.com
   secretName: cafe-secret
 rules:
 - host: cafe.example.com

이 구성은 GKE 버전 1.18~1.21의 인그레스 v1beta1 API 및 GKE 버전 1.19 이상의 인그레스 v1 API에서 지원됩니다.

기본 인그레스 클래스 구성

주석 ingressclass.kubernetes.io/is-default-classtrue로 설정된 IngressClass 리소스를 만들어 클러스터의 모든 인그레스 리소스에 대해 기본 인그레스 클래스를 구성할 수 있습니다.

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx-public
annotations:
  ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: k8s.io/ingress-nginx

이 구성은 GKE 버전 1.19 이상을 실행하는 클러스터에서 사용할 수 있습니다.

GKE 인그레스 컨트롤러 동작 요약

GKE 버전 1.18 이상을 실행하는 클러스터의 경우 GKE 인그레스 컨트롤러가 인그레스를 처리하는지 여부는 kubernetes.io/ingress.class 주석의 값과 인그레스 매니페스트의 ingressClassName 필드에 따라 다릅니다.

kubernetes.io/ingress.class ingressClassName 인그레스 컨트롤러 동작
설정되지 않음 설정되지 않음 인그레스 처리
gce 또는 gce-internal 모든 값 인그레스 처리
gce 또는 gce-internal 이외의 값으로 설정 모든 값 인그레스 처리 안함
설정되지 않음 모든 값 인그레스 처리 안함

이전 GKE 버전을 실행하는 클러스터의 경우 GKE 컨트롤러는 kubernetes.io/ingress.class 주석이 없거나 gce 또는 gce-internal 값의 주석이 있는 인그레스를 처리합니다.

다음 단계