MSA 아키텍처에서 인그레스(Ingress)는 클러스터/메시로 들어오는 트래픽의 진입점, 아웃그레스(Egress)는 외부로 나가는 트래픽의 출구, 서비스메시는 서비스 간 통신 전체를 제어·관찰·보안하는 인프라 레이어라고 볼 수 있다. 아래는 각 기능과, Kubernetes+Istio 기준 단계별 구축 방법이다.
인그레스: 역할과 기능
-
클러스터/서비스메시 바깥에서 들어오는 HTTP/HTTPS 요청을 내부 서비스로 라우팅하는 게이트웨이 역할.
-
호스트/경로 기반 라우팅, 로드밸런싱, TLS 종료(SSL offloading), 인증 연계 등을 제공.
-
구현은 대부분 “Ingress 리소스 + Ingress Controller(NGINX, Traefik, Istio IngressGateway 등)” 조합으로 구성된다.
인그레스 구축 단계 (Kubernetes + Istio 예시)
-
클러스터 및 컨트롤러 준비
-
Kubernetes 클러스터를 준비하고, Istio 등 서비스메시를 설치한다.
-
Istio 설치 시
istio-ingressgateway같은 인그레스 게이트웨이 Deployment/Service가 함께 생성된다.
-
-
외부 노출용 LoadBalancer/NodePort 설정
-
인그레스 게이트웨이 Service 타입을
LoadBalancer(클라우드) 또는NodePort로 설정해 외부 IP/포트를 확보한다. -
DNS를 해당 IP에 매핑해
api.example.com같은 호스트로 접근 가능하게 한다.
-
-
Ingress / Gateway 리소스 정의
-
Kubernetes Ingress를 쓰는 경우:
Ingress리소스에 host, path, backend Service를 정의한다. -
Istio를 쓰는 경우:
-
Gateway리소스에 수신 포트(예: 80/443), 호스트, TLS 설정을 정의. -
VirtualService로 호스트/경로별 라우팅 규칙을 작성해 내부 서비스로 연결한다.
-
-
-
TLS 및 인증 설정
-
Secret에 인증서를 저장하고, Ingress 또는 Istio Gateway에 TLS 섹션으로 참조한다.
-
필요 시 OAuth2/OIDC, mTLS, WAF 등의 인증·보안 기능과 연계한다.
-
-
검증 및 관측
-
외부에서 도메인으로 접속해 라우팅, HTTPS, 헤더/쿠키 기반 라우팅 등을 확인한다.
-
메트릭, 로그, 트레이싱으로 인그레스 구간 성능과 오류를 모니터링한다.
-
아웃그레스: 역할과 기능
-
메시 안의 서비스가 외부(인터넷, SaaS, 외부 DB 등)로 나갈 때의 출구를 제어한다.
-
어떤 외부 도메인/ IP 로 나갈 수 있는지 화이트리스트(least privilege)로 제한하고, 모니터링·정책·TLS 제어를 적용한다.
-
Istio에서는
Egress Gateway와ServiceEntry리소스를 활용해 메시 외부 트래픽을 관리한다.
아웃그레스 구축 단계 (Istio 예시)
-
디폴트 아웃바운드 정책 이해
-
많은 Istio 프로파일에서 외부로 직접 나가는 트래픽은 기본적으로 차단 또는 제한되어, 명시적인 설정이 필요하다.
-
정책을 통해 “무제한 허용”이 아니라 “허용된 외부 도메인만 접근”하도록 설계한다.
-
-
ServiceEntry로 외부 서비스 선언
-
ServiceEntry리소스에 외부 도메인(FQDN) 또는 IP, 포트, 프로토콜을 정의해 “메시가 인지하는 외부 서비스”로 등록한다. -
이 리소스에 기반해 사이드카 프록시(Envoy)가 해당 도메인으로의 트래픽을 처리한다.
-
-
Egress Gateway 배포
-
Istio의
istio-egressgatewayDeployment/Service를 활성화한다. -
이 게이트웨이는 메시 외부로 나가는 트래픽이 반드시 거쳐야 하는 중앙 출구 포인트로 동작한다.
-
-
VirtualService로 egress 경로 강제
-
VirtualService에서 특정 도메인(예:*.external.com)으로 향하는 트래픽의 next hop을 Egress Gateway로 지정한다. -
필요 시 Egress Gateway→외부서비스 구간에 대한 TLS 설정 및 인증서를 구성한다.
-
-
정책, 로깅, 모니터링 적용
-
Egress Gateway에 RBAC, Rate limit, 네트워크 정책 등 보안·거버넌스 정책을 적용한다.
-
외부 호출 실패율, 지연, 트래픽 양을 메트릭과 트레이싱으로 관찰한다.
-
서비스메시: 역할과 기능
-
MSA 내 서비스 간 통신(east-west traffic)을 일관된 방식으로 제어하고, 보안·관측·트래픽 제어를 제공하는 인프라 레이어.
-
주요 기능:
-
mTLS 기반 서비스 간 암호화, 인증·인가.
-
세분화된 라우팅(버전별, 카나리, A/B), circuit breaking, retry, timeouts.
-
메트릭, 로그, 분산 트레이싱 등 관측성 제공.
-
서비스메시 구축 단계 (Istio 패턴)

-
컨트롤 플레인 설치
-
Istio, Linkerd, Consul 등 메시 솔루션의 컨트롤 플레인을 클러스터에 설치한다.
-
이 플레인은 각종 정책, 라우팅, 보안 설정을 중앙에서 관리·전파한다.
-
-
사이드카 프록시 주입 구성
-
네임스페이스 또는 Deployment에 사이드카 자동 주입(label) 설정을 활성화한다.
-
각 서비스 Pod 옆에 Envoy 등 프록시가 같이 배포되어, 모든 인/아웃 트래픽을 가로채도록 구성한다(사이드카 패턴).
-
-
서비스 디스커버리 및 기본 통신 활성화
-
메시가 Kubernetes Service/Endpoint 정보를 사용해 각 서비스 인스턴스를 자동으로 인지한다.
-
사이드카 간 통신으로 서비스 간 호출이 이뤄지며, 기본 mTLS·로드밸런싱이 동작한다.
-
-
트래픽 관리 정책 정의
-
DestinationRule,VirtualService등을 사용해 라우팅, 서킷 브레이커, 재시도, 타임아웃 정책을 정의한다. -
카나리 릴리즈, A/B 테스트 같은 배포 전략도 이 레벨에서 설정한다.
-
-
보안·관측 설정
-
서비스 간 mTLS, 인증/인가, RBAC 정책을 메시 레벨에서 활성화한다.
-
Prometheus, Grafana, Jaeger/Zipkin 등과 연계해 요청 단위 메트릭·트레이싱을 수집한다.
-
세 컴포넌트의 관계 정리
| 영역 | 인그레스 | 아웃그레스 | 서비스메시 |
|---|---|---|---|
| 주 대상 트래픽 | 외부 → 클러스터/메시 (north-south) | 클러스터/메시 → 외부 (north-south) | 서비스 ↔ 서비스 (east-west) |
| 핵심 역할 | 외부 요청 수신, 라우팅, TLS 종료 | 외부 호출 제어, 화이트리스트, 정책/모니터링 | 통신 정책, 보안, 관측, 트래픽제어 |
| 구현 요소 | Ingress 리소스, Ingress Controller/Gateway | Egress Gateway, ServiceEntry, VirtualService | 사이드카 프록시, 컨트롤 플레인, 정책 리소스 |
| 주 목적 | 외부 클라이언트 접근 통합 관리 | 외부 종속 서비스 접근 통제 | MSA 내부 통신 일관된 관리 |
필요하면 “Istio 없이 NGINX Ingress만 쓰는 구조” vs “Istio Ingress/Egress Gateway 포함한 풀 메시 구조”도 단계별로 그려서 설명할 수 있으니, 현재 운영/계획 중인 환경(K8s 버전, Istio 사용 여부 등)을 알려주면 그에 맞춘 YAML 예시까지 정리해 주겠다.