Container Orchestration/Kubernetes

Kubernetes Ingress란? (클러스터 외부 트래픽 관리)

Somaz 2022. 8. 8. 12:54
728x90
반응형

Overview

오늘은 Kubernetes Ingress에 대해 학습하고 정리해보겠다. Ingress는 클러스터 외부에서 내부 서비스로 HTTP 및 HTTPS 트래픽을 관리하는 핵심 컴포넌트이다.

 

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

 

 


 

🔍 Ingress란?

Ingress는 클러스터 외부에서 클러스터 내부의 서비스로 HTTP 및 HTTPS 트래픽을 라우팅하는 역할을 한다.

 

 

🛠️ 주요 기능

  • 클러스터 외부에서 서비스로 접속 가능한 URL 제공
  • 로드 밸런싱을 통한 트래픽 분산
  • SSL/TLS 종료(Offloading) 지원
  • 이름 기반 가상 호스팅(Name-based Virtual Hosting) 가능

 

 


 

 

 

🏗️ Ingress의 주요 개념 및 용어

 

1️⃣ 노드(Node)

  • 클러스터를 구성하는 워커 머신
  • 컨테이너화된 애플리케이션을 실행하는 단위

2️⃣ 클러스터(Cluster)

  • 쿠버네티스에서 관리하는 노드 집합
  • 클러스터 내 노드는 퍼블릭 인터넷에 직접 노출되지 않음

3️⃣ 에지 라우터(Edge Router)

  • 클러스터 네트워크에 대한 방화벽 정책을 적용하는 라우터
  • 클라우드 제공업체 또는 물리적 하드웨어에서 관리될 수 있음

4️⃣ 클러스터 네트워크(Cluster Network)

  • 쿠버네티스 네트워킹 모델을 기반으로 클러스터 내부 통신을 지원하는 링크

5️⃣ 서비스(Service)

  • 특정 파드(Pod) 집합을 식별하고 네트워크 접근을 가능하게 하는 쿠버네티스 오브젝트
  • 클러스터 내부에서만 접근 가능한 가상 IP를 가질 수 있음

 

 


 

 

🚀 Ingress 컨트롤러

Ingress는 단독으로 동작하지 않으며, 반드시 Ingress 컨트롤러가 필요하다. Ingress 컨트롤러는 Ingress 리소스를 기반으로 트래픽을 적절히 라우팅하는 역할을 수행한다.

 

🔹 대표적인 Ingress 컨트롤러

  • NGINX Ingress Controller (가장 널리 사용됨)
  • Traefik (경량화된 컨트롤러)
  • HAProxy Ingress
  • AWS ALB Ingress Controller (AWS 환경에서 ALB와 연동)

 

 

 


 

 

 

📜 Ingress 설정 예제

아래는 간단한 Ingress 리소스 YAML 예제이다. 이 설정은 example.com 도메인으로 들어오는 모든 트래픽을 my-service 서비스로 전달한다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

 

📌 설정 설명

  • `rules.host: example.com` 도메인으로 들어오는 트래픽 처리
  • `path: /` 로 들어오는 요청을 `my-service` 로 라우팅
  • `backend.service: my-service` 의 80번 포트로 트래픽 전달

 

 

 


 

 

⚠️ Ingress vs. Service 차이점

비교 항목 Ingress Service
주요 역할 외부 트래픽을 내부 서비스로 라우팅 내부 네트워크에서 파드(Pod) 간 통신을 지원
지원 프로토콜 HTTP, HTTPS TCP, UDP, HTTP, HTTPS
로드 밸런싱 가능 가능 (Service Type에 따라 다름)
SSL/TLS 지원 지원 기본적으로 지원하지 않음
필요 컨트롤러 필요 (Ingress Controller) 불필요

 

 

🏆 Ingress의 장점

✅ 서비스 단위로 복잡한 트래픽을 효과적으로 관리할 수 있음

✅ 이름 기반의 가상 호스팅을 활용하여 하나의 IP로 여러 서비스 운영 가능

✅ 로드 밸런싱 및 TLS 종료를 통해 보안 및 성능 개선 가능

✅ 외부 DNS 및 클라우드 환경과 쉽게 통합 가능

 

 

 


 

 

 

📌 결론

Ingress는 Kubernetes 환경에서 HTTP/HTTPS 트래픽을 효율적으로 관리하고, 외부에서 내부 서비스로의 접속을 조정하는 핵심 컴포넌트이다. 올바른 Ingress 컨트롤러를 선택하여 보안, 성능, 확장성을 최적화하는 것이 중요하다.

 

✅ Ingress를 효과적으로 활용하면 Kubernetes 환경에서 트래픽을 더욱 효율적으로 관리할 수 있습니다!

 

 

 


Reference

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

728x90
반응형