[Docker] 인그레스

업데이트:

  • 인그레스는 일반적으로 외부에서 내부로 향하는 것을 지칭
    • 인그레스 트래픽: 외부에서 서버로 유입되는 트래픽
    • 인그레스 네트워크: 인그레스 트래픽을 처리하기 위한 네트워크
  • 인그레스는 외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트
    • 외부 요청의 라우팅
    • 가상 호스트 기반의 요청 처리
    • SSL/TLS 보안 연결 처리

8.1 인그레스를 사용하는 이유

  • 여러개의 서비스에 접근하기 위해 여러개의 URL이 필요 없이 인그레스 접근 URL만 있으면 됨
  • 라우팅 정의나 보안 연결 등과 같은 세부 설정은 서비스 디플로이먼트가 아닌 인그레스에 의해 수행됨

8.2 인그레스의 구조

  • 인그레스는 요청을 처리하는 규칙을 정의하는 선언적인 오브젝트
    • 외부 요청을 받아들일 수 있는 실제 서버가 아님
  • 인그레스 컨트롤러라고 하는 특수한 서버에 적용해야 그 규칙 사용 가능
  • Nginx 웹 서버 인그레스 컨트롤러, Kong, GKE 등 여러개가 있음
  • 인그레스 컨트롤러의 동작 원리
    • 공식 깃허브에서 제공되는 YAML 파일로 Nginx 인그레스 컨트롤러를 생성
    • Nginx 인그레스 컨트롤러를 외부로 노출하기 위한 서비스를 생성
    • 요청 처리 규칙을 정의하는 인그레스 오브젝트를 생성
    • Nginx 인그레스 컨트롤러로 들어온 요청은 인그레스 규칙에 따라 적절한 서비스로 전달

8.3 인그레스의 세부 기능: annotation을 이용한 설정

  • 쿠버네티스 클러스터 자체에서 기본적으로 사용하도록 설정된 인그레스 컨트롤러 이외의 컨트롤러를 사용하고 싶다면 명시 필요
  • rewrite-target은 명시된 path를 /로 redirect
    • ex) /echo-hostname -> /
    • 캡처 그룹으로 정규 표현식 형태로 요청 경로 등의 값을 변수로 사용할 떄 유용

8.4 Nginx 인그레스 컨트롤러에 SSL/TLS 보안 연결 적용

  • 인그레스의 장점 중 하나는 쿠버네티스의 뒤쪽에 있는 디플로이먼트와 서비스가 아닌 앞쪽에 있는 인그레스 컨트롤러에서 편리하게 SSL/TLS 보안 연결 설정 가능
  • 요청이 전달되는 애플리케이션에 대해 모두 인증서 처리를 할 수 있음
    • gateway 역할

8.5 여러 개의 인그레스 컨트롤러 사용하기

  • 별도의 클래스를 생성해서 적용 가능

태그:

카테고리:

업데이트:

댓글남기기