인그레스 (Ingress)
서비스가 세운 주소는 클러스터 안에서만 닿습니다. 밖에서 들어오는 트래픽까지 받으려면 서비스마다 문을 내야 하고, 그러면 IP도 인증서도 서비스 수만큼 늘어납니다. 인그레스는 그 문을 하나로 모으고, 요청의 호스트와 경로가 어느 규칙에 걸리는지로 목적지를 정합니다. 도메인이 여럿이어도 입구는 하나입니다.
01인그레스 (Ingress)
개념 한눈에 보기서비스가 세운 주소는 클러스터 안에서만 닿습니다. 밖에서 들어오게 하려면 서비스마다 문을 따로 내야 하고, 문마다 IP와 인증서가 딸려 옵니다.
인그레스는 그 문을 하나로 모읍니다. 클라이언트는 로드밸런서 주소 하나만 알면 되고, 어디로 보낼지는 규칙이 정합니다.
규칙은 호스트부터 갈립니다. 다른 이름으로 온 요청이 아니므로 admin 줄은 여기서 후보에서 빠집니다.
남은 두 줄은 경로로 갈립니다. /api/orders 는 /api 로 시작하니 첫 줄에 걸리고, 그 간선을 타고 api-svc 로 넘어갑니다.
인그레스는 파드로 곧장 가지 않습니다. 서비스까지만 넘기고, 그 뒤 어느 파드가 받을지는 서비스가 정합니다.
같은 입구로 들어와도 경로가 다르면 목적지가 달라집니다. /login 은 /api 로 시작하지 않아 아래 줄에 걸립니다.
호스트가 바뀌면 표의 다른 구역으로 갑니다. 도메인마다 IP를 따로 받지 않아도 갈라집니다.
인증서도 입구에서 한 번만 답니다. 여기서 암호를 풀고 뒤로는 평문으로 넘기므로, 서비스마다 인증서를 붙이지 않아도 됩니다.
어느 줄에도 안 걸리는 요청은 그대로 떨어집니다. 기본 백엔드를 두지 않으면 컨트롤러가 404 를 돌려줍니다.
다만 인그레스 자체는 선언일 뿐입니다. 이 그림에서 실제로 트래픽을 받는 로드밸런서를 세우는 것은 인그레스 컨트롤러라, 컨트롤러가 없으면 규칙만 쌓입니다.
02 쉽게 이해하기
For Everyone서비스마다 외부 진입점을 따로 두는 대신 입구를 하나로 모으고, 호스트와 경로 규칙으로 어느 서비스에 넘길지 정합니다. 인증서도 이 입구에서 한 번만 답니다.
인그레스는 HTTP 요청의 호스트 헤더와 경로를 보고 뒤의 서비스를 고르는 L7 규칙입니다.
경로는 여러 줄이 동시에 맞을 수 있고, 그때는 더 길게 맞는 쪽이 이깁니다.
TLS 인증서를 입구에서 한 번 처리하므로 뒤로는 평문으로 넘어갑니다.
다만 인그레스 오브젝트 자체는 선언일 뿐이라, 실제로 트래픽을 받아 규칙대로 넘기는 인그레스 컨트롤러(nginx·traefik 등)가 클러스터에 떠 있어야 동작합니다.
컨트롤러마다 지원 범위가 달라 세밀한 설정은 애너테이션으로 갈리는데, 그 파편화를 걷어내려는 것이 Gateway API 입니다.
- –도메인·경로별 트래픽 분배
- –인증서를 한 곳에서 관리
- –서비스마다 LoadBalancer 를 두지 않고 비용 줄이기
- –컨트롤러 선택과 애너테이션 차이 파악
03 자주 묻는 질문
FAQ인그레스 (Ingress)란 무엇인가요?+
서비스가 세운 주소는 클러스터 안에서만 닿습니다. 밖에서 들어오는 트래픽까지 받으려면 서비스마다 문을 내야 하고, 그러면 IP도 인증서도 서비스 수만큼 늘어납니다. 인그레스는 그 문을 하나로 모으고, 요청의 호스트와 경로가 어느 규칙에 걸리는지로 목적지를 정합니다. 도메인이 여럿이어도 입구는 하나입니다.
인그레스 (Ingress)은(는) 어디에 사용하나요?+
도메인·경로별 트래픽 분배, 인증서를 한 곳에서 관리, 서비스마다 LoadBalancer 를 두지 않고 비용 줄이기, 컨트롤러 선택과 애너테이션 차이 파악
인그레스 (Ingress)를 쉽게 비유하면?+
서비스마다 외부 진입점을 따로 두는 대신 입구를 하나로 모으고, 호스트와 경로 규칙으로 어느 서비스에 넘길지 정합니다. 인증서도 이 입구에서 한 번만 답니다.
