827. Ingress / Egress 트래픽 - 클러스터 내부 망 인입/유출 라우팅 룰 엔진 제어
핵심 인사이트: 쿠버네티스 클러스터(마을) 안에서 컨테이너들끼리 지지고 볶고 떠드는 건 지들 자유다. 하지만 외부 인터넷에 있는 진짜 고객(스마트폰)이 우리 마을의 '로그인 컨테이너'에 접속하려면 어떻게 해야 할까? 쿠버네티스는 아무나 마을에 들어오는 걸 허락하지 않는다. "마을 정문에 거대한 L7 검문소(Ingress)를 세워! 손님이
www.naver.com/login으로 오면 로그인 텐트로 보내고,/pay로 오면 결제 텐트로 보내!" 밖에서 안으로 들어오는 정문이 Ingress, 안에서 밖으로 나가는 뒷문이 Egress다.
Ⅰ. Ingress와 Egress 트래픽의 개념
- Ingress (인그레스, 인입 트래픽): 외부 인터넷(클라이언트)에서 쿠버네티스 클러스터(데이터센터) 내부로 들어오는(Inbound) 모든 트래픽을 말합니다.
- Egress (이그레스, 유출 트래픽): 쿠버네티스 클러스터 내부의 컨테이너(Pod)가 외부 인터넷(예: 구글 API, 외부 결제망)으로 나가는(Outbound) 모든 트래픽을 말합니다.
Ⅱ. Ingress (인그레스)의 아키텍처와 라우팅 엔진 🌟
그냥 L4 로드밸런서(IP와 포트 번호만 보는 것)로는 부족합니다. URL의 세부 경로를 보고 똑똑하게 찢어주는 L7 (애플리케이션 계층) 라우터가 필수적입니다.
1. Ingress Resource (설계도)
- 관리자가 작성하는 **'라우팅 규칙 룰북'**입니다.
- "만약 인터넷 손님이
domain.com/video로 접속하면 비디오 컨테이너(Service)로 보내고,domain.com/music으로 접속하면 음악 컨테이너로 보내라. 그리고 HTTPS 암호화(SSL 인증서)를 여기서 풀어서 넘겨라!"라고 쿠버네티스 언어(YAML)로 적어둡니다.
2. Ingress Controller (검문소 수문장) 🌟
- 위에서 적어둔 설계도(Resource)를 받아서 실제로 트래픽을 분류하고 분배하는 **진짜 실물 소프트웨어 라우터(L7 프록시 서버)**입니다.
- 대표적 제품: Nginx Ingress Controller가 전 세계를 제패한 압도적 1위이며, 이외에 HAProxy, Traefik, ALB(AWS 전용) 등이 쓰입니다.
- 역할: 외부에서 들어오는 거대한 트래픽 폭풍을 정문(Nginx)에서 다 얻어맞고, HTTP 헤더를 깐깐하게 뜯어본 뒤, 규칙에 맞춰 내부의 적절한 Kube-Proxy(826번)나 Pod들에게 패킷을 예쁘게 던져줍니다(Reverse Proxy).
Ⅲ. Egress (이그레스) 통제와 보안의 중요성
들어오는 것(Ingress)은 열심히 막으면서, 나가는 것(Egress)은 보통 "프리패스"로 뚫어두는 회사가 많습니다. (이게 재앙의 씨앗입니다.)
1. 왜 Egress를 통제해야 하는가?
- 만약 우리 회사 컨테이너 하나가 해커에게 털렸습니다(제로데이 공격 등).
- 해커는 이 컨테이너 안에 몰래 들어와, 내부망의 기밀 DB 데이터를 싹 다 압축해서 자신의 외부 러시아 해커 서버(C&C 서버)로 업로드하려 합니다. 이때 나가는 문(Egress)이 뻥 뚫려있으면 기밀이 100% 털립니다.
- 또는 감염된 컨테이너가 밖으로 비트코인 채굴(마이닝) 트래픽을 미친 듯이 뿜어낼 수도 있습니다.
2. Egress Gateway (나가는 통제소) 설정
- 824번 문서에서 배운 Calico Network Policy 등을 이용해 Egress 규칙을 빡세게 겁니다.
- "이 결제 컨테이너는 오직 [외부 카드사 API 서버 IP]로만 나갈 수 있고(Egress Allow), 나머지 구글이나 이상한 해외 IP로 접속을 시도하면 즉각 그 패킷을 갈기갈기 찢어버려라(Egress Deny)!"라는 화이트리스트 룰을 세팅해야 비로소 진정한 제로 트러스트(Zero Trust)가 완성됩니다.
📢 섹션 요약 비유: Ingress는 거대한 놀이공원의 '중앙 매표소 겸 안내 데스크(L7 라우터)'입니다. 밖에서 온 1만 명의 손님(인터넷 트래픽)이 "저 바이킹 탈래요(/viking)" 하면 오른쪽 숲길로 찢어주고, "저 츄러스 먹을래요(/churros)" 하면 왼쪽 식당가로 트래픽을 정확하게 분류해 분산시켜 줍니다. 반면 Egress는 놀이공원의 '퇴장 게이트(보안 검색대)'입니다. 안에서 신나게 놀던 손님이나 직원(컨테이너)이 밖으로 나갈 때, 혹시 놀이공원 비품(회사 기밀 데이터)을 가방에 몰래 숨겨서 나가지 않는지, 혹은 이상한 전염병(악성코드 트래픽)을 밖으로 퍼뜨리려 하지 않는지 깐깐하게 짐을 검사한 뒤 허락된 사람만 밖으로 내보내는 필수 보안 통제 구역입니다.