서비스가 파드로 접근하는데 진입 지점을 제공해준다면 인그레스는 네트워크 7계층에서 여러 서비스로 진입하는데 진입지점을 제공해주고 이를 쿠버네티스 클러스터 안에서 구성할 수 있도록 도와준다.
인그레스를 구성하기 위해선 쿠버네티스 클러스터에 Nginx, HAPROXY, traefik 과 같은 솔루션 중 하나를 선택해서 배포해야 한다. 이와 같은 솔루션을 Ingress controller라고 한다. 그리고 설정 규칙을 Ingress resources라고 한다. 쿠버네티스 클러스터는 Ingress controller가 내장되어 있지 않다. 그래서 인그레스 리소스를 생성해서 적용하기 위해선 인그레스 컨트롤러를 구성해야한다.
인그레스 컨트롤러에는 여러 종류가 있다. 이중에서 GCE와 Nginx가 쿠버네티스 프로젝트에 의해 지원되고 유지 된다. Nginx를 예로 들어보자.
디플로이먼트 형태로 nginx-ingress-controller를 배포한다. 해당 이미지 안에는 nginx 프로그램이 들어 있다.
디플로이먼트를 구성할 때 필요한 값들은 ConfigMap을 만들어서 필요한 값을 설정한 후 위와 같이 인자를 통해 전달해준다.
환경변수로 파드이름과 파드네임스페이스를 구성해 주고 http와 https 통신을 위한 포트를 지정해준다.
이후 서비스를 생성해서 인그레스 컨트롤러를 바라볼 수 있도록 구성해준다.
이후 인그레스 컨트롤러가 쿠버네티스에서 작업을 수행할 수 있도록 서비스 어카운트 구성해 권한을 설정한다.
정리하면 인그레스 컨트롤러를 지정해서 관련 이미지를 디플로이먼트를 통해 배포한 후 ConfigMap을 통해 필요한 값을 구성한다. 이후 서비스가 인그레스 컨트롤러를 바라보도록 구성한 후 서비스 계정을 통해 권한을 설정한다. 마지막으로 인그레스 리소스를 통해 구성한다.
오른쪽 yaml 파일은 도메인 별로 나누어 인그레스 리소스를 구성한 것을 볼 수 있다. wear.my-online-store.com으로의 요청은 wear-service로 트래픽을 라우팅하고 watch.my-online-store.com으로의 요청은 watch-service로 트래픽을 라우팅한 것을 볼 수 있다.
경로 기반으로 트래픽을 라우팅하는 작성 방법도 있다. 왼쪽 그림의 경우 오른쪽과 달리 도메인에 상관없이 경로를 기반으로 트래픽을 라우팅한다. 따라서 여러 도메인에 대해 일괄적으로 라우팅 규칙을 적용할 수 있는 특징이 있다. 하지만 특정 도메인 마다 라우팅 규칙을 적용해야 하는 경우 오른쪽과 같이 설정해주어야 한다.
'DevOps > Kubernetes' 카테고리의 다른 글
트러블슈팅 (1) | 2024.11.06 |
---|---|
서비스 메시 (2) | 2024.10.30 |
쿠버네티스 클러스터와 네트워크 (0) | 2024.10.29 |
Kubernetes Image (0) | 2024.10.29 |
Service Account 관련 주요 사항 (0) | 2024.10.29 |