Kubernetes Ingress란 무엇인가요?

작성자

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Kubernetes Ingress 정의

Kubernetes Ingress는 Kubernetes 클러스터의 서비스에 대한 외부 사용자의 액세스를 관리하기 위한 라우팅 규칙을 제공하는 API 오브젝트입니다.

이 글에서는 애플리케이션을 Kubernetes 클러스터 외부에 노출해야 하는 방법과 이유, 사용 가능한 다양한 옵션, Kubernetes Ingress가 가장 유용한 상황에 대해 살펴봅니다. 이 블로그에서는 Kubernetes에 대한 기본적인 이해가 있다고 가정하지만, 더 자세한 배경 정보가 필요한 경우 다음 리소스를 확인하세요.

Kubernetes에 배포된 애플리케이션 노출 옵션

애플리케이션을 Kubernetes 클러스터 외부에 노출하는 방법에는 여러 가지가 있습니다. 따라서 사용 사례에 따라 적절한 방법을 선택하는 것이 좋습니다. 

이 글에서 비교할 네 가지 주요 옵션은 ClusterIP, NodePort, LoadBalancerIngress입니다. 각 옵션은 서비스를 노출하는 방법을 제공하며 각각 서로 다른 상황에서 유용합니다. 서비스는 본질적으로 균일하게 분산된 방식으로 트래픽을 사용 가능한 파드로 자동 재라우팅하는 애플리케이션을 위한 프론트엔드의 역할을 합니다. 서비스는 다양한 파드에서 실행되는 애플리케이션을 네트워크 서비스로 노출하는 추상적인 방법입니다. 파드는 변경이 불가능해 죽으면 다시 살아날 수 없습니다. Kubernetes 클러스터는 파드가 죽으면 동일한 노드나 새 노드에 새 파드를 생성합니다. 

서비스는 파드, 배포와 마찬가지로 Kubernetes의 리소스입니다. 서비스는 Kubernetes 클러스터 외부에서 단일 액세스 지점을 제공하며 복제본 파드 그룹에 동적으로 액세스할 수 있도록 지원합니다. 

Kubernetes 클러스터 내의 내부 애플리케이션 액세스의 경우 ClusterIP가 기본 방법입니다. 이는 Kubernetes의 기본 설정이며 내부 IP 주소를 사용하여 서비스에 액세스합니다.

외부 네트워크 요청에 서비스를 노출하려면 NodePort, LoadBalancer, Ingress를 사용할 수 있습니다. 서비스는 나중에 비교하도록 하고 먼저 Ingress부터 살펴보겠습니다.

전문가의 인사이트를 바탕으로 한 최신 기술 뉴스

Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.

감사합니다! 구독이 완료되었습니다.

구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.

Kubernetes Ingress란 무엇이고, 이것이 유용한 이유는?

Kubernetes Ingress는 일반적으로 HTTPS/HTTP를 통해 Kubernetes 클러스터의 서비스에 대한 외부 사용자의 액세스를 관리하기 위한 라우팅 규칙을 제공하는 API 오브젝트입니다. Ingress를 사용하면 로드 밸런서를 생성하거나 노드의 각 서비스를 노출하지 않고도 트래픽 라우팅 규칙을 쉽게 설정할 수 있습니다. 따라서 프로덕션 환경에서 사용하기에 가장 적합한 옵션입니다. 

프로덕션 환경에서는 일반적으로 콘텐츠 기반 라우팅, 여러 프로토콜 지원, 인증이 필요합니다. Ingress를 사용하면 클러스터 내에서 이러한 기능을 구성하고 관리할 수 있습니다.

Ingress는 Ingress API 오브젝트와 Ingress 컨트롤러로 구성됩니다. 앞서 논의한 바와 같이 Kubernetes Ingress는 Kubernetes 클러스터 외부에 서비스를 노출하기 위한 원하는 상태를 설명하는 API 오브젝트입니다. Ingress 컨트롤러는 Ingress API의 실제 구현이기 때문에 필수적입니다. Ingress 컨트롤러는 Ingress 리소스 정보를 읽고 처리하며 일반적으로 Kubernetes 클러스터 내에서 파드으로 실행됩니다.

Ingress는 다음을 제공합니다.

  • Kubernetes 클러스터에 배포된 애플리케이션에 대해 외부에서 연결할 수 있는 URL
  • 이름 기반 가상 호스트 및 URI 기반 라우팅 지원
  • 로드 밸런싱 규칙 및 트래픽, SSL 종료

Kubernetes Ingress에 대한 간략한 시각적 개요를 보려면 다음 동영상을 확인하세요.

Ingress 컨트롤러란?

Kubernetes Ingress가 서비스에 대한 외부 액세스를 관리하기 위한 라우팅 규칙을 제공하는 API 오브젝트인 경우, Ingress 컨트롤러는 Ingress API의 실제 구현을 의미합니다. Ingress 컨트롤러는 일반적으로 외부 트래픽을 클러스터로 라우팅하기 위한 로드 밸런서이며 L4-L7 네트워크 서비스를 담당합니다. 

계층 4(L4)는 OSI 네트워크 스택의 연결 수준을 나타내며, 외부 연결은 파드 간에 라운드 로빈 방식으로 로드 밸런싱됩니다. 계층 7(L7)은 요청에 따라 파드 전체에서 로드 밸런싱되는 OSI 스택 외부 연결의 애플리케이션 레벨을 의미합니다. 계층 7이 선호되는 경우가 많지만, 로드 밸런싱 및 라우팅 요구 사항을 충족하는 Ingress 컨트롤러를 선택해야 합니다.

Ingress 컨트롤러는 Ingress 리소스 정보를 읽고 그에 따라 해당 데이터를 처리할 책임이 있습니다. 다음은 샘플 Ingress 리소스입니다.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress 
spec:
  backend:
    serviceName:ServiceName
    servicePort:<Port Number>

Kubernetes Ingress가 컴퓨터라면 Ingress 컨트롤러는 컴퓨터를 사용해 조치를 취하는 프로그래머로 비유할 수 있습니다. 또한, Ingress 규칙은 프로그래머가 컴퓨터를 사용해 작업을 수행하도록 지시하는 관리자 역할을 합니다. Ingress 규칙은 인바운드 HTTP 트래픽을 처리하기 위한 규칙의 집합을 말합니다. 규칙이 없는 Ingress는 모든 트래픽을 단일 기본 백엔드 서비스로 전송합니다. 

조금 더 자세히 설명하면, Ingress 컨트롤러는 Kubernetes 클러스터에서 실행되며 Ingress 리소스에 따라 HTTP 로드 밸런서를 구성하는 애플리케이션입니다. 로드 밸런서는 클러스터나 하드웨어에서 실행되는 소프트웨어 로드 밸런서이거나 외부에서 실행되는 클라우드 로드 밸런서일 수 있습니다. 로드 밸런서별로 다른 Ingress 컨트롤러 구현이 필요합니다.

시중에는 다양한 Ingress 컨트롤러가 있습니다. 따라서 Kubernetes 클러스터로 들어오는 트래픽과 부하를 관리하는 데 적합한 컨트롤러를 선택하는 것이 중요합니다.

IBM Cloud

Red Hat OpenShift AI on IBM Cloud: AI 워크로드 배포

Red Hat OpenShift on IBM Cloud를 통해 AI 기능을 활용하세요. 이 영상에서는 확장가능한 머신 러닝 운영 플랫폼으로 AI 워크로드를 효율적으로 구축, 배포 및 관리하는 방법을 살펴보겠습니다.

Ingress vs ClusterIP vs NodePort vs LoadBalancer

Ingress, ClusterIP, NodePort, LoadBalancer는 모두 외부 트래픽을 클러스터로 가져오는 옵션으로, 각각 다른 방식을 사용합니다. 각 옵션의 작동 방식과 사용 사례를 살펴보세요.

ClusterIP

ClusterIP는 내부 서비스 액세스에 주로 사용되는 옵션으로, 내부 IP 주소를 사용해 서비스에 액세스합니다. ClusterIP는 개발 및 테스트 중 서비스 디버깅, 내부 트래픽, 대시보드 등의 경우에 가장 적합합니다.

ClusterIP는 내부 서비스 액세스에 주로 사용되는 옵션으로, 내부 IP 주소를 사용해 서비스에 액세스합니다. ClusterIP는 개발 및 테스트 중 서비스 디버깅, 내부 트래픽, 대시보드 등의 경우에 가장 적합합니다.

NodePort

NodePort는 정적 포트 번호에서 서비스를 노출하는 데 사용되는 가상 머신(VM)입니다. NodePort는 주로 비프로덕션 환경에서 서비스를 노출하는 데 사용됩니다(프로덕션 사용은 권장하지 않음). 예를 들어, NodePort는 (여러 서비스에 대한 로드 밸런싱 요구 사항이 없을 때) 단일 서비스를 노출하는 데 사용될 수 있습니다.

NodePort는 정적 포트 번호에 서비스를 노출하는 데 사용되는 가상 머신(VM)입니다. 주로 비프로덕션 환경에서 서비스를 노출하는 데 사용됩니다.

Load Balancer

이 방법은 외부 로드 밸런서를 사용하여 서비스를 인터넷에 노출합니다. 프로덕션 환경에서 로드 밸런서를 사용할 수 있지만 Ingress가 선호되는 경우가 많습니다.

이 방법은 외부 로드 밸런서를 사용하여 서비스를 인터넷에 노출합니다. 프로덕션 환경에서 로드 밸런서를 사용할 수 있지만 Ingress가 선호되는 경우가 많습니다.

Ingress

Ingress를 사용하면 트래픽 라우팅 규칙을 단일 리소스로 통합하고 Kubernetes 클러스터의 일부로 실행할 수 있습니다. 프로덕션 환경에서 서비스를 노출할 때 Kubernetes Ingress가 선호되는 주요 이유는 다음과 같습니다.

  • 트래픽 라우팅은 Ingress 리소스에 정의된 규칙에 의해 제어됩니다.
  • Ingress는 Kubernetes 클러스터의 일부이며 파드 형태로 실행됩니다.
  • 외부 로드 밸런서는 비용이 많이 들고, Kubernetes 클러스터 외부에서 이를 관리해야 합니다. Kubernetes Ingress는 클러스터 내부에서 관리됩니다.
Ingress를 사용하면 트래픽 라우팅 규칙을 단일 리소스로 통합하고 클러스터의 일부로 실행할 수 있습니다.

프로덕션 환경에서는 일반적으로 Ingress를 사용해 애플리케이션을 인터넷에 노출합니다. 애플리케이션은 포트 80(HTTP) 또는 포트 443(HTTPS)을 통해 인터넷에서 액세스되며, Ingress는 클러스터 외부에서 Kubernetes Service에 액세스할 수 있는 오브젝트입니다. 

요약

Kubernetes Ingress API를 사용하면 라우팅 규칙을 사용하여 Kubernetes 클러스터에 배포된 애플리케이션을 인터넷에 단일 소스로 노출할 수 있습니다. Ingress를 구현하려면 클러스터에서 Ingress 컨트롤러를 구성해야 합니다. Ingress 컨트롤러는 Ingress 리소스 정보를 처리하고 Ingress 규칙에 따라 트래픽을 허용하는 역할을 합니다. 위에 나열된 지침에 따라 애플리케이션을 인터넷에 노출하기 위해 적절한 구성으로 올바른 서비스를 선택하는 것이 중요합니다. 

관련 솔루션
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud는 완전 관리형 OpenShift 컨테이너 플랫폼(OCP)입니다.

Red Hat OpenShift 살펴보기
컨테이너 솔루션

컨테이너 솔루션은 보안, 오픈 소스 혁신, 신속한 배포를 통해 컨테이너화된 워크로드를 실행하고 확장합니다.

컨테이너 살펴보기
클라우드 컨설팅 서비스 

IBM Cloud 컨설팅 서비스를 통해 새로운 역량을 개발하고 비즈니스 민첩성을 향상하세요. 하이브리드 클라우드 전략 및 전문가 파트너십을 통해 솔루션을 공동으로 개발하고, 디지털 혁신을 가속화하고, 성능을 최적화하는 방법을 알아보세요.

클라우드 서비스
다음 단계 안내

완전 관리형 Red Hat OpenShift 플랫폼으로 시작하거나, IBM Cloud Kubernetes 에코시스템의 유연성을 살펴보세요. 요구 사항에 맞게 조정되는 확장 가능하고 안전한 솔루션으로 개발 및 배포 프로세스를 가속화하세요.

Red Hat OpenShift 살펴보기 Kubernetes 살펴보기