Kubernetes 클러스터 내에서 외부 트래픽을 내부 서비스로 라우팅해주는 Ingress Controller
Kubernetes 리소스 중 하나로, 외부 HTTP/HTTPS 요청을 클러스터 내부 서비스로 전달하는 규칙을 정의함
/api로 들어오는 요청을 api-service로, /web 요청을 web-service로 보내도록 설정하는 등
Ingress resource를 실제로 처리해주는 컨트롤러
Kubernetes 자체는 Ingress 규칙만 저장하고, 이를 실제로 동작시키는 것은 Ingress Controller가 함
Nginx 기반으로 동작하는 Ingress Controller
클러스터에 배포되면 Ingress 리소스를 감시하며, Nginx 설정을 동적으로 업데이트 함
널리 사용되며 안정적이고, 다양한 설정이 가능하다(TLS, 인증, rate-limit etc)
Helm Chart로 쉽게 설치할 수 있음

kubectl config current-context
kubectl get nodes
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace \
--version 4.12.3
버전은 kubernetes 버전을 확인하고 지원하는 Nginx Ingress Controller로 설치하면 된다.

설치 중에 이런 에러가 발생했다.

progressDeadlineSeconds: 0으로 설정되어서 Kubernetes에서 거부당함
progressDeadlineSeconds를 명시적으로 설정해줬는데도 같은 문제가 발생해서 그냥 예전 버전으로 깔아줬다.
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace \
--version 4.10.0
감사하게도 이 버전은 설치가 되었다.

kubectl get pods -n ingress-nginx
kubectl get svc -n ingress-nginx


지금까지
Ingress Controller 자체는 트래픽을 받을 준비가 되었고, 이제 라우팅 설정을 해야 한다.
해야 할 것
/api/user/** 등으로 들어오는 요청이 각 서비스로 라우팅되도록 Ingress를 설정한다.
일단 개발부터 하기로 했다 !