Kubernetes 환경에서 Application을 운영할 때 외부 사용자가 내부 Pod에 접근할 수 있도록 Network 연결을 제공해야 합니다.
하지만 Kubernetes Service만으로 외부 Traffic을 관리하면 여러 Application을 운영하는 환경에서 한계가 발생합니다.
예를 들어 여러 Web Application이 존재할 경우 각각 LoadBalancer Service를 생성하면 비용 증가와 관리 복잡성이 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Ingress 기능을 제공합니다.
Ingress는 외부 HTTP/HTTPS Traffic을 Kubernetes 내부 Service로 전달하고 URL 기반 Routing과 SSL 관리 기능을 제공하는 Kubernetes Network Resource입니다.
| 구성 요소 | 역할 |
|---|---|
| Ingress | 외부 Traffic Routing 규칙 관리 |
| Ingress Controller | 실제 Traffic 처리 |
| Service | Application 연결 |
| Pod | Application 실행 |
Ingress 구조를 이해하면 Kubernetes Application을 외부에 안정적으로 제공하고 효율적인 Traffic 관리 환경을 구축할 수 있습니다.
Kubernetes Ingress란 무엇인가?
Ingress는 Kubernetes Cluster 외부에서 들어오는 HTTP/HTTPS Traffic을 내부 Service로 연결하는 Resource입니다.
사용자는 하나의 Endpoint를 통해 여러 Application에 접근할 수 있으며 Ingress 규칙에 따라 적절한 Service로 Traffic을 전달합니다.
예:
사용자 요청
↓
Ingress Controller
↓
web-service
↓
Web Pod
↓
Ingress Controller
↓
api-service
↓
API Pod
이처럼 URL이나 Domain 기반으로 Traffic을 분배할 수 있습니다.
Kubernetes Ingress가 필요한 이유
기본 Service 방식으로 외부 접근을 구성하면 관리해야 하는 Endpoint가 증가합니다.
문제:
| 방식 | 문제 |
|---|---|
| NodePort | Port 관리 복잡 |
| LoadBalancer | Service마다 외부 IP 필요 |
| 직접 Pod 접근 | IP 변경 문제 발생 |
Ingress를 사용하면 하나의 진입점에서 여러 Application을 관리할 수 있습니다.
Kubernetes Service와 Ingress 차이
Service와 Ingress는 역할이 다릅니다.
| 구분 | Service | Ingress |
|---|---|---|
| 목적 | Pod 연결 | 외부 Traffic 관리 |
| Layer | Network Layer | HTTP Layer |
| 관리 대상 | Service Endpoint | URL Routing |
| 기능 | Load Balancing | Path, Domain Routing |
Ingress는 Service 위에서 동작하는 Traffic 관리 계층입니다.
Kubernetes Ingress 동작 구조
Ingress는 Ingress Controller와 함께 동작합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Client | 외부 요청 |
| Load Balancer | Traffic 전달 |
| Ingress Controller | Routing 처리 |
| Service | Backend 연결 |
| Pod | Application 실행 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자가 HTTP 요청 |
| 2단계 | Ingress Controller 수신 |
| 3단계 | Ingress Rule 확인 |
| 4단계 | Service 선택 |
| 5단계 | Pod 전달 |
Ingress Controller가 실제 Traffic 처리를 담당합니다.
Kubernetes Ingress Controller란?
Ingress Resource는 단순히 Routing 규칙을 정의하는 설정입니다.
실제 Traffic 처리는 Ingress Controller가 수행합니다.
대표적인 Ingress Controller:
| Controller | 특징 |
|---|---|
| NGINX Ingress Controller | 가장 널리 사용 |
| Traefik | 가벼운 구성 |
| HAProxy | 고성능 Traffic 처리 |
| Cloud Load Balancer | Managed 환경 지원 |
Ingress Controller가 없으면 Ingress Resource는 동작하지 않습니다.
Kubernetes Ingress Routing 방식
Ingress는 다양한 Routing 방식을 제공합니다.
대표 방식:
| 방식 | 설명 |
|---|---|
| Host Based Routing | Domain 기준 분배 |
| Path Based Routing | URL 경로 기준 분배 |
예:
Domain 방식:
shop.example.com
↓
Shop Service
api.example.com
↓
API Service
Path 방식:
example.com/shop
↓
Shop Service
example.com/api
↓
API Service
Kubernetes Path Based Routing이란?
Path Based Routing은 URL 경로에 따라 Traffic을 다른 Service로 전달하는 방식입니다.
예:
/frontend
↓
frontend-service
/backend
↓
backend-service
하나의 Domain에서 여러 Application을 운영할 수 있습니다.
Kubernetes Host Based Routing이란?
Host Based Routing은 Domain 이름을 기준으로 Traffic을 분배합니다.
예:
app.example.com
↓
Application Service
admin.example.com
↓
Admin Service
Microservice Architecture에서 많이 사용됩니다.
Kubernetes Ingress TLS SSL 관리
Ingress는 HTTPS 통신을 위한 TLS 설정을 지원합니다.
SSL 인증서를 관리하여 안전한 HTTPS 연결을 제공합니다.
구조:
Client
↓
HTTPS
↓
Ingress Controller
↓
HTTP Service
인증서는 Kubernetes Secret에 저장됩니다.
| 구성 요소 | 역할 |
|---|---|
| TLS Secret | 인증서 저장 |
| Ingress | TLS 규칙 정의 |
| Controller | HTTPS 처리 |
Kubernetes Ingress와 LoadBalancer 관계
Cloud 환경에서는 LoadBalancer와 Ingress를 함께 사용하는 경우가 많습니다.
구조:
Internet
↓
Cloud LoadBalancer
↓
Ingress Controller
↓
Service
↓
Pod
LoadBalancer는 외부 진입점을 제공하고 Ingress는 내부 Routing을 담당합니다.
Kubernetes Ingress Annotation이란?
Ingress Annotation은 Controller 동작 방식을 추가 설정하는 기능입니다.
예:
| 설정 | 용도 |
|---|---|
| Rewrite | URL 변경 |
| Timeout | 응답 시간 설정 |
| Rate Limit | 요청 제한 |
| SSL Redirect | HTTPS 강제 |
Controller별 다양한 기능을 제공합니다.
Kubernetes Ingress 활용 사례
| 활용 사례 | 설명 |
|---|---|
| Web Application | HTTP Routing |
| API Gateway | API 관리 |
| Microservice | 서비스 분배 |
| SSL 관리 | HTTPS 운영 |
대규모 Kubernetes 환경에서 필수적으로 활용됩니다.
Kubernetes Ingress 운영 시 고려사항
Production 환경에서는 Ingress 관리가 중요합니다.
| 항목 | 설명 |
|---|---|
| Controller 선택 | 환경에 맞는 구성 |
| TLS 관리 | 인증서 자동화 |
| Traffic Monitoring | 접속 분석 |
| Security | 접근 제어 |
Ingress는 외부 Traffic이 집중되는 지점이므로 안정적인 운영이 필요합니다.
Kubernetes Ingress와 Gateway API 차이
최근 Kubernetes 환경에서는 Gateway API 사용도 증가하고 있습니다.
| 구분 | Ingress | Gateway API |
|---|---|---|
| 구조 | 단순 Routing | 확장된 Traffic 관리 |
| 표현력 | 제한적 | 높음 |
| 사용 목적 | HTTP Routing | 다양한 Network 관리 |
Ingress는 여전히 많이 사용되며 Gateway API로 확장되는 흐름입니다.
Kubernetes Ingress 장점
| 장점 | 설명 |
|---|---|
| Traffic 통합 | 하나의 Entry Point 관리 |
| 비용 절감 | LoadBalancer 감소 |
| Routing 관리 | Domain, Path 제어 |
| HTTPS 지원 | SSL 관리 가능 |
Ingress는 Kubernetes 외부 접근 구조를 단순화하는 핵심 기능입니다.
자주 묻는 질문
Ingress와 Service 차이는 무엇인가요?
Service는 Pod 연결을 담당하고 Ingress는 외부 HTTP/HTTPS Traffic Routing을 담당합니다.
Ingress Controller가 꼭 필요한가요?
네.
Ingress Resource는 규칙만 정의하며 실제 Traffic 처리는 Ingress Controller가 수행합니다.
Ingress는 모든 Network Traffic을 처리하나요?
일반적으로 HTTP/HTTPS Traffic 처리에 사용되며 TCP/UDP 처리는 Controller 설정에 따라 다릅니다.
마무리
Kubernetes Ingress는 외부 사용자의 요청을 내부 Service로 연결하고 효율적으로 Traffic을 관리하는 핵심 Network 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Ingress | Routing 규칙 정의 |
| Ingress Controller | Traffic 처리 |
| Service | Application 연결 |
| TLS Secret | HTTPS 인증 관리 |
Ingress 구조를 이해하면 Kubernetes 환경에서 여러 Application을 안정적으로 외부에 제공하고 효율적인 Network Architecture를 구성할 수 있습니다.
다음 글에서는 Kubernetes API 확장과 Custom Resource 관리를 위한 Kubernetes Custom Resource Definition(CRD) 완벽 가이드! Kubernetes 기능 확장 구조 이해하기를 알아보겠습니다.