K8S

[kubernetes] ingress 를 거치는 통신 과정

Rainbound-IT 2024. 11. 7. 17:27
반응형

Kubernetes에서 Ingress는 외부 클라이언트가 클러스터 내부의 서비스에 접근할 수 있도록 경로를 제공하는 API 객체입니다. 이를 통해 클러스터 내의 여러 서비스에 하나의 엔드포인트를 통해 접근할 수 있게 하며, 호스트 기반 또는 경로 기반의 라우팅을 지원합니다.

Kubernetes Ingress를 통한 통신 흐름은 다음과 같은 단계를 거칩니다:

  1. 클라이언트 요청:
    • 외부 클라이언트(사용자 또는 애플리케이션)가 웹 브라우저나 애플리케이션을 통해 HTTP 또는 HTTPS 요청을 보냅니다.
    • 이 요청은 Ingress 컨트롤러가 구동 중인 노드의 IP 주소나 도메인 이름을 타겟으로 합니다.
  2. Ingress Controller:
    • 클러스터 내에 배포된 Ingress 컨트롤러가 외부 요청을 감지합니다.
    • Ingress 컨트롤러는 Ingress 리소스를 모니터링하며 정의된 라우팅 규칙에 따라 요청을 처리합니다. 일반적으로 Nginx, Traefik, HAProxy 같은 Ingress 컨트롤러가 많이 사용됩니다.
    • Ingress 컨트롤러는 Ingress 리소스의 호스트와 경로 규칙을 바탕으로 요청을 적절한 서비스로 전달합니다.
  3. Ingress 리소스의 라우팅 규칙:
    • 클러스터 내에서 Ingress 리소스가 정의한 규칙에 따라 요청의 호스트명, URL 경로 등을 바탕으로 적절한 서비스로 라우팅됩니다.
    • 예를 들어, /api로 시작하는 요청은 api-service로, /web으로 시작하는 요청은 web-service로 라우팅할 수 있습니다.
  4. 서비스 (Service):
    • Ingress 컨트롤러는 클러스터 내부의 서비스로 요청을 전달합니다.
    • 서비스는 Pod들로 트래픽을 로드밸런싱하며, 각 Pod로 요청이 전달되도록 설정됩니다. 이를 통해 요청은 동적으로 할당된 Pod로 전달됩니다.
  5. Pod (애플리케이션 컨테이너):
    • 서비스는 최종적으로 요청을 해당 애플리케이션이 실행 중인 Pod에 전달합니다.
    • Pod는 요청을 처리하고 응답을 클라이언트에게 반환할 준비를 합니다.
  6. 응답 반환:
    • 요청을 처리한 Pod는 응답을 서비스로 보내고, 서비스는 Ingress 컨트롤러를 거쳐 클라이언트에게 응답을 반환합니다.

요약하면, 외부 클라이언트의 요청은 Ingress Controller → Ingress → Service → Pod의 순서로 전달되며, 응답은 반대로 Pod → Service → Ingress → 클라이언트로 반환됩니다. 이를 통해 Kubernetes 클러스터 외부에서 내부 서비스에 안전하고 효율적으로 접근할 수 있게 됩니다.

반응형