| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- ingressrules
- 인그래스컨트롤러
- ingressservice
- 쿠버네티스
- 포트추적
- 노드포트
- kubernetes
- apply
- networktimeprotocol
- 쿠버네티스 구조
- chrony
- clustermanagement
- nodeport
- 쿠버네티스 인그래스 컨트롤러 구성 예시
- timesynchronization
- ingress
- servertimesync
- 원격서버지원
- 인증서설치후 런타임 재시작
- 컨테이너런타임 재시작
- servicemesh
- ingresscontroller
- k8s
- 프라이빗레지스트리
- 도커프라이빗레지스트리
- 여러 레지스트리를 하나의 시크릿으로 묶고
- 이미지풀시크릿생성
- kubectl
- 인그래스
- createvsapply
- Today
- Total
madebychung
쿠버네티스 Ingress 완전 정리 (Ingress / Ingress Controller / Ingress Service 헷갈림 끝!) 본문
쿠버네티스 Ingress 완전 정리 (Ingress / Ingress Controller / Ingress Service 헷갈림 끝!)
mdchung 2025. 4. 8. 15:05쿠버네티스 Ingress 완전 정리 (Ingress / Ingress Controller / Ingress Service 헷갈림 끝!)
쿠버네티스를 쓰다 보면 꼭 마주치는 개념이 있습니다. 바로 Ingress입니다. 그런데 Ingress를 검색하면 Ingress, Ingress Controller, Ingress Service 이렇게 단어가 계속 나오고, 뭔 소린지 헷갈리는 경우 많죠?
1. Ingress란?
Ingress는 쿠버네티스 클러스터 외부에서 내부 서비스로 HTTP/HTTPS 트래픽을 라우팅하기 위한 규칙(리소스)입니다.
즉, 외부 사용자가 접속할 도메인 주소나 경로(/login, /api 등)를 정의하고, 그 요청을 내부의 어떤 서비스로 전달할지 정해주는 역할을 해요.
✅ Ingress의 역할 요약
- 클러스터 외부의 트래픽을 내부 서비스로 보냄
- 도메인 또는 경로 기반 라우팅 지원
- SSL(TLS) 인증서도 설정 가능
✅ 중요한 점
- Ingress는 "리소스"일 뿐, 실제로 트래픽을 처리하지 않습니다.
- 즉, Ingress만 정의해두면 아무 일도 안 일어나요.
- 그걸 처리해주는 게 바로 Ingress Controller입니다.
2. Ingress Controller란?
Ingress Controller는 Ingress 리소스에 정의된 규칙을 읽고, 실제로 트래픽을 처리하는 역할을 하는 Pod입니다.
대표적인 Ingress Controller는 nginx, traefik, HAProxy 등이 있어요. 가장 많이 쓰는 건 nginx ingress controller입니다.
✅ Ingress Controller가 하는 일
- Ingress 리소스를 감시하고 동기화
- 실제로 LoadBalancer나 NodePort로 들어온 HTTP 요청을 내부 서비스로 전달
- SSL 인증서 처리
- 리버스 프록시 역할 수행
✅ 유의할 점
- Ingress Controller는 직접 설치해야 합니다.
- 쿠버네티스 설치한다고 자동으로 생기지 않아요.
- Helm 또는 매니페스트로 설치합니다.
- Ingress 리소스를 만들어도 Controller가 없으면 무용지물입니다.
3. Ingress Service란?
여기서 헷갈리기 시작하죠. “Ingress Controller는 Pod인데, 외부에서 어떻게 접근하냐?”
그래서 Ingress Controller 앞에 Service 객체를 둡니다.
이걸 우리는 Ingress Controller Service라고 부르는 거예요.
Ingress Controller Pod → 앞에 Service (LoadBalancer or NodePort) → 외부 트래픽을 받아서 내부로 전달
✅ 예시 구조
User --> LoadBalancer Service --> Ingress Controller Pod --> App Service --> Pod
✅ Service는 왜 필요할까?
- 외부 사용자가 Ingress Controller에 접근할 수 있도록 하기 위해
- LoadBalancer나 NodePort 방식으로 외부 IP, 포트를 노출시킴
- Ingress 리소스는 이 Controller를 통해서만 작동함
전체 개념 정리 (한눈에 보기)
| 구성요소 | 설명 | 유의사항 |
|---|---|---|
| Ingress | 어떤 요청이 어떤 서비스로 가야 하는지 정의한 규칙 | Controller 없으면 무용지물 |
| Ingress Controller | Ingress를 해석해서 트래픽을 실제로 라우팅하는 Pod | 직접 설치해야 함 |
| Ingress Controller Service | Controller에 외부에서 접근할 수 있도록 연결해주는 Service | NodePort나 LoadBalancer 타입으로 생성 |
자주 묻는 질문
Q. Ingress 만들었는데 접속이 안 돼요.
→ Ingress Controller가 설치되어 있고, 외부에서 접근 가능한 Service가 설정되어 있어야 합니다.
Q. 꼭 nginx ingress 써야 하나요?
→ 아니요. Traefik, Istio, HAProxy 등 다양한 Ingress Controller가 있고, 상황에 맞게 선택하면 됩니다.
Q. LoadBalancer는 꼭 필요한가요?
→ 클라우드 환경이면 LoadBalancer 타입을 권장하고, 온프레미스라면 NodePort로 설정 후 외부 LB랑 연동해도 됩니다.
마무리
Ingress를 제대로 이해하려면 결국 세 가지 구성 요소를 함께 이해해야 합니다:
- Ingress: 라우팅 규칙
- Ingress Controller: 그 규칙을 실제로 처리하는 Pod
- Ingress Controller 앞의 Service: 외부 트래픽을 받아주는 진입점
이 세 가지를 연결해서 생각하면, 쿠버네티스에서 HTTP/HTTPS 트래픽을 어떻게 다루는지 완전히 이해할 수 있어요.
헷갈리면 이 글 다시 보세요.
'K8s' 카테고리의 다른 글
| 온프레미스 환경에서 Ingress Controller 앞단에 외부 Load Balancer 없이 설정하려면? (0) | 2025.04.08 |
|---|---|
| nginx ingress controller 설치 후 Ingress 리소스 연동하는 방법 (0) | 2025.04.08 |
| 📌 kubectl describe로 리소스 상태 추적하는 방법 (0) | 2025.04.08 |
| kubectl apply로 리소스를 업데이트할 때 실제로 어떤 정보가 어떻게 바뀌는가?(apply, patch) (0) | 2025.04.08 |
| 📌 kubectl apply vs create 차이점 정복 (0) | 2025.04.08 |