Ingress
클러스터에서 서비스에 대한 external access를 관리하는 API object, 전형적으로 http를 관리한다.
load balancing, SSL termination 그리고 name-based virtual hosting을 제공함.
용어
- Node : 쿠버네티스에 있는 worker machine, 클러스터의 일부분
- Cluster : 쿠버네티스에 의해 관리되는 containerized application를 실행하는 노드의 집합. 예를들면, 대부분의 Kubernetes Deployment에서, 클러스터에 있는 노드들은 public internet의 일부분이 아니다.
- Edge router : 클러스터에 대한 firewall policy를 강화하는 router. 클라우드 프로바이더에 의해서 관리되는 gateway이거나 hardware의 물리적 일부분일 수도 있음.
- Cluster Network : 쿠버네티스 네트워킹 모델에 따라서 클러스터 내부에서 커뮤니케이션을 가능하게하는 일련의 links, logical, physical
- Service : label selector를 사용해서 일련의 pod들을 규명하는 쿠버네티스 서비스. Service들은 클러스터 네트워크내에서만 라우팅가능한 virtual ip들을 가진다고 간주된다.
Ingress란?
Ingress는 외부 클러스터에 있는 HTTP와 HTTPS 라우트들을 클러스터 내부에 있는 services에게 노출시킨다. Traffic routing은 Ingress resource에 정의된 규칙들에 의해서 통제된다.
다음은 Ingress가 모든 traffic을 하나의 Service로 전달하는 예시이다.
Ingress는 Services에게 외부에서 접근가능한 URLs, load balance traffic를 제공하고, SSL/TLS를 종료하고 name-based virtual hosting을 제공할 수 있다. Ingress controller는 보통 load balancer를 사용해서 인그레스를 수행할 책임을 가지고 있고, 트래픽을 처리하는데 도움이 되도록 에지 라우터 또는 추가 프런트엔드를 구성할 수도 있다.
Ingress는 임의의 port 또는 protocol들을 노출시키지 않는다. HTTP와 HTTPS 이외의 서비스들을 인터넷에 노출하기 위해서는, 보통 Service.Type=NodePort 또는 Service.Type=LoadBalancer를 사용한다.