Ingress

Jaca·2022년 8월 16일
0

Ingress란, 서비스 앞에 있는 로드벨런스로 클러스터로 유입된 외부의 트래픽을 적절한 마이크로서비스로 라우팅하여 사용자가 지정한 특정 규칙에 따라 트래픽을 다양한 서비스로 전달하는 Controller이다.

대표적인 기능으로는 Service LoadBalancing, Canary Upgrade, https 인증서 관리가 있다.

Ingress Controller

클러스터의 인그레스 리소스를 관리 -> Ingress를 실현할 구현체이다.
컨트롤러가 없는 인그레스는 독자적으로 아무런 기능을 할 수 없다.
Cloud 환경에서는 각각 제공되는 컨트롤러가 있지만, 자체 운영 중인 클러스터에서는 NGINX을 주로 사용

k8s 공식 지원하는 컨트롤러는 nginx와 gcp 컨트롤러가 있다.

실습

nginx ingress controller 설치

kubectl apply -f \
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml

nginx ingress controller를 설치하면 ingress-nginx 라는 namespace가 자동으로 생성되고, controller pod와 service가 생성된다.
Service는 별도로 지정해주지 않으면 기본적으로 NodePort로 생성된다.

pod, svc 배포

3개의 파드를 준비했다.
실제적으로 같은 애플리케이션이지만 URL 기반으로 분기가 잘 되는지만 확인할 것이다.

실제 서비스를 운영한다면 Ingress와 LoadBalancer를 활용하겠지만,
NodePort를 사용해볼 것이다.

Path를 크게 /, /test, /page 라는 URL로 분기할 것이다.
분기에 맞춰 pod를 배포하고 service를 달아준다.

ingress 생성

ingress 규칙을 명시하고 생성한다.

성공적으로 생성 되었다면,

ingress의 ADDRESS가 부여된다.

문제가 있을 경우는 nginx ingress controller pod의 로그를 찍어보자.

결과

각 path에 맞게 알맞는 pod로 분기되는 것을 확인할 수 있다.

profile
I am me

0개의 댓글