Overview
오늘은 Kubernetes Ingress에 대해 학습하고 정리해보겠다. Ingress는 클러스터 외부에서 내부 서비스로 HTTP 및 HTTPS 트래픽을 관리하는 핵심 컴포넌트이다.
🔍 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/
'Container Orchestration > Kubernetes' 카테고리의 다른 글
K8S 인증서 10년 만기 생성 방법 (2) | 2022.09.23 |
---|---|
kubectl 명령어 정리 (0) | 2022.08.10 |
Kubernetes Probe (Liveness, Readiness, Startup) (0) | 2022.07.15 |
Kubernetes 컨테이너 이미지 생성하기 (0) | 2022.05.10 |
Kubernetes 클러스터 구축하기(kubespray) (0) | 2022.05.10 |