최대 1 분 소요

Kubernetes Ingress

인그레스(ingress)는 클러스터 외부에서 내부로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음입니다. 외부에서 접근가능한 URL을 사용할 수 있게 하고, 트래픽 로드밸런싱도 해주고, SSL 인증서 처리도 해주고, 도메인 기반으로 가상 호스팅을 제공하기도 합니다. 인그레스 자체는 이런 규칙들을 정의해둔 자원이고 이런 규칙들을 실제로 동작하게 해주는게 인그레스 컨트롤러(ingress controller)입니다.

  • Service에 외부 URL을 제공
  • 트래픽을 로드밸런싱
  • SSL 인증서 처리
  • Virtual hosting을 지정

엄밀히 말하면 Ingress는 외부로부터 들어오는 요청에 대한 로드밸런싱, TLS/SSL 인증서 처리, 도메인 기반 가상 호스팅 제공, 특정 HTTP 경로의 라우팅 등의 규칙들을 정의해 둔 자원이며, 이런 규칙들을 실제로 동작하게 해주는건 Ingress-Controller입니다.

하지만 클라우드 서비스를 사용하게 되면 별다른 설정없이 각 클라우드 서비스에서 자사의 로드밸런서 서비스들과 연동해서 Ingress를 사용할 수 있게 해주지만, 클라우드를 사용하지 않고 클러스터를 구축해서 사용하는 경우는 Ingress Controller를 직접 Ingress와 연동시켜줘야 하며, 이때 가장 많이 사용되는 것이 바로 Ingress-nginx입니다.

ingress 동작 방식

ingress

Ingress Controller 설치

  • nginx ingress : https://kubernetes.github.io/ingress-nginx/deploy/
$ kubectl get pod -n ingress-nginx
NAME                                        READY   STATUS              RESTARTS   AGE
ingress-nginx-admission-create-mr2s2        0/1     Completed           0          25s
ingress-nginx-admission-patch-lmqrs         0/1     Completed           0          25s
ingress-nginx-controller-5656f5db76-dv69j   0/1     Running             0          25s
$ kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.102.209.183   <none>        80:31724/TCP,443:32232/TCP   104s
ingress-nginx-controller-admission   ClusterIP   10.110.209.87    <none>        443/TCP                      104s

  • 참고 - https://kubernetes.io/ko/docs/concepts/services-networking/ingress/

댓글남기기