네트워크 트래픽은 ingress(외부에서 서버 내부로 들어오는 트래픽)와 egress(서버 내부에서 외부로 나가는 트래픽)로 구분이 됩니다.
Kubernetes(k8s)에도 ingress라는 리소스 오브젝트가 있습니다. Ingress는 k8s 내부로 들어오는 네트워크 요청을 어떻게 처리할지를 결정합니다. Deployment와 Service에 접근하기 위한 게이트웨이 같은 역할을 하고, 만약 ingress 노드를 따로 사용하지 않는다면 NodePort (통신할 포트 선정), ExternalIP를 따로 설정하여 통신이 가능합니다. 하지만, NodePort나 External IP의 경우에는 Layer 4(TCP,UDP)에서 요청을 처리하기 때문에 네트워크 요청에 대한 세부적인 처리 로직을 구현하기는 힘듭니다.
Kubernetes의 Layer 7에서의 요청을 처리할 수 있습니다. 외부로부터 들어오는 요청에 대한 로드밸런싱, TLS/SSL 인증서 처리, 특정 HTTP 경로의 라우팅 등을 ingress를 이용하여 자세하게 정의할 수 있습니다. Ingress를 정의하고 Ingress controller라고 부르는 웹서버에 적용함으로써 추상화된 단계에서 서비스 처리 로직을 정의할 수 있습니다.
또한 Ingress Controller 종류 및 사용 중인 클라우드 공급자에 따라 다양한 기능을 부가적으로 사용할 수도 있으니, 서비스를 외부로 노출시켜 제공해야 한다면 Ingress를 사용하는 것이 바람직하다. 뒤에서 다시 설명하겠지만, Ingress 요청을 처리하기 위한 Service는 일반적으로 클라우드 플랫폼에서 제공되는 Load Balancer 타입의 Service를 사용한다. Private Cloud에서 운영하고 있는 서버에 Ingress를 직접 구축하게 된다면, Service의 Type으로서 NodePort (권장되지 않음. 뒤에서 다시 설명) 또는 ExternalIP, MetalLB 등을 대신 사용할 수 있다.
[출처] https://blog.naver.com/alice_k106/221502890249
162. [Kubernetes] 1편 : 쿠버네티스 Ingress 개념 및 사용 방법, 온-프레미스 환경에서 Ingress 구축하기
이번 포스트에서는 쿠버네티스에서 인그레스 (Ingress) 를 사용하는 방법, 그리고 Public 클라우드를 쓰...
blog.naver.com
정리중....
'Kubernetes' 카테고리의 다른 글
/var/log/containers에 symbolic link가 사라진 경우 (0) | 2022.10.11 |
---|