Kubernetes에서 Service는 Pod에 접근할 수 있는 Network 연결을 제공합니다.
하지만 실제 Production 환경에서는 여러 개의 Service를 운영하고 외부 사용자의 요청을 효율적으로 관리해야 합니다.
이때 사용하는 기능이 Kubernetes Ingress입니다.
Ingress는 외부 HTTP/HTTPS 요청을 Kubernetes 내부 Service로 전달하고, URL이나 Domain 기준으로 Traffic을 분배하는 역할을 담당합니다.
| 구성 요소 | 역할 |
|---|---|
| Ingress | 외부 요청 Routing 관리 |
| Ingress Controller | 실제 Traffic 처리 |
| Service | Application 연결 |
| Pod | 실제 서비스 실행 |
Ingress를 활용하면 하나의 외부 IP로 여러 Application을 운영할 수 있습니다.
Kubernetes Ingress란 무엇인가?
Kubernetes Ingress는 외부 사용자의 HTTP/HTTPS 요청을 내부 Service로 연결하는 API Resource입니다.
Service의 NodePort나 LoadBalancer 방식은 각각 한계가 있습니다.
| 방식 | 문제점 |
|---|---|
| NodePort | Port 관리 필요 |
| LoadBalancer | Service마다 외부 IP 필요 |
| Ingress | 하나의 진입점으로 여러 서비스 관리 |
Ingress는 Layer 7 HTTP Routing 기능을 제공하여 더욱 효율적인 Traffic 관리가 가능합니다.
Kubernetes Ingress 동작 구조
Ingress는 단독으로 동작하지 않습니다.
실제 Traffic 처리를 위해 Ingress Controller가 필요합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Client | 사용자 요청 |
| Ingress Controller | Traffic 처리 |
| Ingress Rule | Routing 규칙 |
| Service | 요청 전달 |
| Pod | Application 실행 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자가 Domain 요청 |
| 2단계 | Ingress Controller 요청 확인 |
| 3단계 | Ingress Rule 분석 |
| 4단계 | 해당 Service로 전달 |
| 5단계 | Pod에서 Application 처리 |
Ingress는 사용자의 요청을 적절한 서비스로 연결하는 Traffic Gateway 역할을 합니다.
Kubernetes Ingress Controller란?
Ingress Controller는 Ingress 설정을 실제 Network 동작으로 처리하는 Component입니다.
Ingress Resource만 생성한다고 Traffic이 자동으로 전달되는 것은 아닙니다.
Controller가 있어야 실제 Routing이 동작합니다.
대표적인 Ingress Controller:
| Controller | 특징 |
|---|---|
| NGINX Ingress Controller | 가장 많이 사용하는 방식 |
| Traefik | 가벼운 구성과 자동 설정 지원 |
| HAProxy | 고성능 Traffic 처리 |
| Cloud Load Balancer Controller | Cloud 환경 최적화 |
Production 환경에서는 서비스 요구사항에 맞는 Controller를 선택합니다.
Kubernetes Ingress Routing 방식
Ingress는 다양한 기준으로 Traffic을 분배할 수 있습니다.
대표적인 Routing 방식:
| 방식 | 설명 |
|---|---|
| Host Based Routing | Domain 기준 분배 |
| Path Based Routing | URL 경로 기준 분배 |
Host Based Routing 예:
| Domain | Service |
|---|---|
| app.example.com | Frontend Service |
| api.example.com | Backend Service |
Path Based Routing 예:
| Path | Service |
|---|---|
| /web | Frontend |
| /api | Backend |
이러한 Routing 기능을 통해 여러 서비스를 하나의 Entry Point에서 관리할 수 있습니다.
Kubernetes Ingress와 Service 관계
Ingress는 직접 Pod와 연결되지 않습니다.
항상 Service를 통해 Pod로 Traffic을 전달합니다.
구조:
| 단계 | 구성 요소 |
|---|---|
| 1단계 | 사용자 요청 |
| 2단계 | Ingress |
| 3단계 | Service |
| 4단계 | Pod |
Ingress와 Service를 분리하면 Network 관리와 Application 관리를 독립적으로 운영할 수 있습니다.
Kubernetes Ingress TLS HTTPS 설정
Production 환경에서는 보안을 위해 HTTPS 사용이 필요합니다.
Ingress는 TLS 설정을 통해 HTTPS Traffic을 처리할 수 있습니다.
| 구성 요소 | 역할 |
|---|---|
| TLS Certificate | HTTPS 인증서 |
| Secret | 인증서 저장 |
| Ingress | HTTPS Routing |
HTTPS 요청 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자가 HTTPS 접속 |
| 2단계 | Ingress Controller 인증서 확인 |
| 3단계 | Service 전달 |
| 4단계 | Application 실행 |
Ingress TLS 설정은 안전한 Web 서비스 운영을 위한 필수 요소입니다.
Kubernetes Ingress Load Balancing
Ingress Controller는 여러 Pod 사이에서 Traffic을 분산할 수 있습니다.
예:
| Pod 구성 | 처리 |
|---|---|
| Web Pod 1 | 요청 처리 |
| Web Pod 2 | 요청 처리 |
| Web Pod 3 | 요청 처리 |
Load Balancing 방식:
| 방식 | 설명 |
|---|---|
| Round Robin | 순차 분배 |
| Least Connection | 연결 수 기준 분배 |
| Weighted Routing | 가중치 기반 분배 |
이를 통해 Application 성능과 안정성을 높일 수 있습니다.
Kubernetes Ingress와 LoadBalancer 비교
| 항목 | Ingress | LoadBalancer |
|---|---|---|
| Layer | Layer 7 | Layer 4 |
| Routing | HTTP 기반 가능 | 기본 Traffic 전달 |
| Domain 관리 | 가능 | 제한적 |
| 여러 Service 운영 | 효율적 | 비효율적 |
많은 Application을 운영하는 환경에서는 Ingress를 사용하는 것이 효율적입니다.
Kubernetes Ingress 운영 장점
| 장점 | 설명 |
|---|---|
| 단일 진입점 | 하나의 Gateway 관리 |
| Domain Routing | 여러 서비스 연결 |
| HTTPS 지원 | 보안 통신 가능 |
| Traffic 관리 | 효율적인 요청 분배 |
Ingress는 Microservice Architecture 환경에서 중요한 Network 구성 요소입니다.
자주 묻는 질문
Ingress와 Service의 차이는 무엇인가요?
Service는 Pod 연결을 담당하고 Ingress는 외부 사용자의 HTTP/HTTPS 요청을 Service로 전달하는 역할을 합니다.
Ingress Controller가 반드시 필요한가요?
필요합니다.
Ingress Resource만 생성하면 실제 Traffic 처리는 동작하지 않으며 Controller가 요청을 처리합니다.
Ingress는 모든 Traffic을 처리할 수 있나요?
일반적으로 HTTP와 HTTPS Traffic 관리에 사용되며 TCP/UDP 처리는 별도 설정이 필요합니다.
마무리
Kubernetes Ingress는 외부 사용자 요청을 내부 Service로 연결하는 Kubernetes Network 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Ingress | Routing 규칙 관리 |
| Ingress Controller | Traffic 처리 |
| Service | Application 연결 |
| Pod | 서비스 실행 |
Ingress를 활용하면 여러 Application을 하나의 진입점에서 관리하고 효율적인 Traffic 운영이 가능합니다.
다음 글에서는 Kubernetes 저장소 관리 기능인 Kubernetes Volume 완벽 가이드! Persistent Storage와 데이터 관리 구조 이해하기를 알아보겠습니다.