본문 바로가기

클라우드/Kubernetes(쿠버네티스)

[쿠버네티스] 인그레스

인그레스란?

클러스터 외부에서 안에 있는 파드에 접근할 때 사용하는 방법
서비스와의 차이점은 주로 L7영역의 통신을 담당해서 처리한다는 것이다.

인그레스 개념

  • 클러스터 외부에서 안으로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙 모음
  • 클러스터 외부에서 접근해야 할 URL을 사용할 수 있도록 하고, 트래픽 로드밸런싱, SSL인증서 처리, 도메인 기반 가상 호스팅 등을 제공
  • 인그레스 자체는 이런 규칙들을 정의해둔 자원이고, 실제로 동작시키는 것은 인그레스 컨트롤러이다.
  • 클라우드 서비스를 사용하면 별다른 설정 없이 자체 로드밸런서 서비스와 연동해서 인그레스 사용할 수 있다.
  • 클라우드 서비스를 사용하지 않고 직접 쿠버네티스 클러스터를 구축해서 사용한다면 인그레스 컨트롤러를 직접 인그레스와 연동해야한다.
    • 이때 가장 많이 사용하는 도구는 쿠버네티스에서 제공하는 ingress-nginx이다.
    • ingress-nginx컨트롤러는 인그레스에 설정한 내용을 nginx환경 설정으로 변경해서 nginx에 적용한다.

ingress-nginx컨트롤러

  • 인그레스에서 설정한 내용대로 동작하는 실제 주체는 인그레스 컨트롤러이다.
  • 인그레스 컨트롤러는 여러 가지가 있지만 쿠버네티스가 공식적으로 제공하는 것은 앞에서 소개한 구글 컴퓨트엔진용 ingress-gce와 nginx용 ingress-nginx이다.

인그레스 SSL 설정하기

  • 인그레스를 이용하면 요청으로 들어오는 트래픽에 다양한 설정을 할 수 있다.
  • HTTPS요청을 처리할 때 가장 많이 사용하는 SSL 설정을 알아보겠다.
  • 인그레스로 SSL인증서를 설정하면 파드 각각에 따로 설정할 필요가 없어 편하다.
  • 기한이 만료됐을 때도 인그레스에서만 인증서를 업데이트하면 된다.
  • 신뢰받은 인증 기관인 CA에 인증서 발급을 요청하면 관리하는 키와 인증서로 서명한 인증서를 발급해준다.
  • 발급받은 인증서를 서버에 설정하면 웹브라우저에서 통신할 때 서버에 있는 인증서가 유효한 인증서인지 확인한 후 SSL통신을 한다.
  • 시크릿은 쿠버네티스 내부에서 보안이 필요한 설정들을 다룰 때 사용한다.