https://kubernetes.io/ko/docs/concepts/services-networking/ingress/

인그레스는 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이다.

일반적으로는 HTTP프로토콜 통한 접근을 관리함. HTTP기반 네트워크 서비스를 쿠버네티스에서 이용하기 위해선 HTTP프로토콜의 개념들(URI, path, hostname 등)을 어디선가는 이해하고 소통할 수 있어야 한다. 바로 Ingress 오브젝트가 쿠버네티스 API를 통해 정의한 룰 기반으로, 외부 백엔드와 소통할 수 있게 해주는 역할을 한다.

인그레스는 로드 밸런싱, SSL 종점, 명칭 기반의 가상 호스팅을 제공함.

💡 Ingress는 이제 더이상 기능 확장이 없다. (Ingress is frozen) 네트워크 관련한 추가 기능은 이제 Gateway API에 추가된다.

용어 정의(Terminology)

노드: 쿠버네티스에 속한 워커 머신, 클러스터에 속해 있음.

클러스터: 쿠버네티스에서 관리되는 컨테이너화 된 애

에지 라우터(Edge router): 클러스터에 방화벽 정책을 적용하는 라우터. 쿠버네틱스에 속한게 아니라 클라우드 공급자 또는 물리적 게이트웨이일 수 있음.

클러스터 네트워크(Cluster network): 쿠버네티스 네트워킹 모델에 따라 클러스터 내부에서 통신을 용이하게 하는 논리적 / 물리적 링크 집합.

서비스: 레이블 셀렉터를 사용해 파드 집합을 식별하는 쿠버네티스 서비스. 서비스는 클러스터 네크워크 내에서만 라우팅 가능한 가상 IP를 갖고 있다고 가정.

인그레스란?

  1. 클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출한다.
  2. 클러스터 내 트래픽 라우팅은 인그레스 리소스에 정의된 규칙에 의해 컨트롤된다.

다음의 예를 보자. 인그레스가 모든 트래픽을 하나의 서비스로 보내는 그림임.

image.png