정지용
기술스택 목록
인프라

ingress-nginx

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

Kubernetes 클러스터 진입 트래픽을 라우팅하는 NGINX 기반 인그레스 컨트롤러

ingress-nginx는 쿠버네티스의 Ingress 리소스를 실제 NGINX 설정으로 변환해 외부 HTTP/HTTPS 트래픽을 클러스터 내부 서비스로 라우팅하는 컨트롤러입니다. 쿠버네티스 자체는 클러스터 진입점에서 도메인·경로 기반으로 트래픽을 분기하는 기능을 제공하지 않기 때문에, 이를 담당할 별도의 컨트롤러가 필요해 만들어졌습니다. Ingress 오브젝트가 생성·수정되면 이를 감지해 NGINX 설정을 동적으로 갱신하고 리로드합니다.

이럴 때 사용합니다

  • 여러 서비스를 하나의 진입점에서 도메인·경로 기준으로 라우팅해야 할 때
  • 클러스터 외부에서 HTTPS 종료(TLS termination)를 표준화하고 싶을 때
  • 클라우드 벤더에 종속되지 않는 범용 인그레스 구현이 필요할 때
  • 이미 익숙한 NGINX의 설정·동작 방식을 그대로 활용하고 싶을 때

핵심 개념

Ingress Resource
도메인, 경로, 대상 서비스 등 라우팅 규칙을 선언하는 쿠버네티스 API 오브젝트입니다.
Ingress Controller
Ingress 리소스를 실제로 해석해 트래픽을 처리하는 컴포넌트로, ingress-nginx는 그 구현체 중 하나입니다.
IngressClass
클러스터에 여러 인그레스 컨트롤러가 있을 때 어떤 Ingress를 어떤 컨트롤러가 처리할지 구분하는 값입니다.
Reconciliation Loop
Ingress 리소스 변경을 지속적으로 감시하여 NGINX 설정 파일을 자동으로 재생성·반영하는 동작 방식입니다.
Annotation
리다이렉트, 타임아웃, rewrite 등 표준 Ingress 스펙에 없는 세부 동작을 Ingress 메타데이터에 지정하는 방식입니다.

기본 Ingress 리소스 정의

news.example.com으로 들어오는 요청을 news-service라는 클러스터 내부 서비스로 전달하는 Ingress 설정입니다.

YAML
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: news-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: news.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: news-service
                port:
                  number: 80

처음 쓸 때 흔한 함정

  • ingressClassName을 지정하지 않으면 여러 컨트롤러가 있을 때 라우팅이 의도대로 동작하지 않을 수 있습니다.
  • annotation은 ingress-nginx 고유 확장이라 다른 컨트롤러로 이전 시 그대로 동작하지 않습니다.
  • Ingress 변경 후 반영까지 리로드 지연이 있을 수 있어 즉시 효과를 기대하면 혼란스러울 수 있습니다.

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.