nginx ingress controller 설치

Smart-JYS
7 min readOct 28, 2021

--

ingress controller

ingress controller는 kubernetes에서 ingress를 관리 해주는 역할을 합니다. controller 종류에는 몇가지가 있는데 자세한 부분은 문서를 참고 바랍니다.

해당 글에서는 nginx 기반 ingress controller에 대해 언급 하도록 하겠습니다.

nginx 기반 컨트롤러는 2가지 오픈소스가 존재 합니다.

첫번째 kubernetes/ingress-nginx가 있고, kubernetes community에서 지원하는 controller입니다.

두번째로는 nginxinc/kubernetes-ingress가 있습니다. nginxinc는 nginx를 만든 곳에서 만든 kubernetes ingress controller입니다.

모두 nginx 엔진 기반이고, 조금의 차이점이 있습니다. 또 nginx plus가 있는데 nginx에서 제공해주는 유료 버전이 있습니다.

자세한 내용은 문서에 내용을 참고 바랍니다.

ingress controller은 외부 트래픽을 kubernetes 내부로 proxy 해주는 역할을 합니다. 여기서 kubernetes를 써보신 분이라면 의문이 생길 수 있습니다.

“외부 트래픽을 kubernetes 내부로 통신하기 위해서 node port와 service type을 load balancer로 하면 되는거 아닌가?”

하지만 node port 또는 service type을 load balancer로 변경한다는 것은 service object 를 변경하는 것입니다. ingress controller는 service type이 load balancer면서 ingress를 관리 해주는 역할을 합니다.

kubernetes 에서 제공하는 ingress controller를 설치하고 구성 해보도록 하겠습니다.

위의 github repository에 가면 설치에 대한 가이드가 있습니다. manifest 또는 helm으로 설치가 가능하고, 여기서는 helm으로 설치 해보겠습니다.

helm을 설치 하기 위해 해당 repo를 업데이트 합니다.

❯ helm3 repo add ingress-nginx https://kubernetes.github.io/ingress-nginx❯ helm3 repo update

helm은 values.yaml 을 통해서 가변적으로 구성할 수 있기 때문에 values.yaml 파일을 저장합니다.

❯ helm3 show values ingress-nginx/ingress-nginx > values.yaml❯ helm3 install ingress-controller ingress-nginx/ingress-nginx -f values.yaml

설치가 완료 되었습니다.

만약에 아래와 같은 에러를 만난다면…..

❯ helm3 install ingress-controller ingress-nginx/ingress-nginx -f values.yaml
Error: chart requires kubeVersion: >=1.19.0-0 which is incompatible with Kubernetes v1.18.**

kube 버전으로 인해 설치가 되지 않습니다. chart 의존성 설정 때문입니다. kubernetes/ingress-nginx 레포에서 Chart.yaml 파일을 보면 kubeVersion을 ≥1.19.0–0으로 명시 했기 때문에 1.18 버전에는 설치가 되지 않습니다. 차트 버전으로 인해 kubernetes 버전을 업그레이드 하는건 좋지 않은 방법입니다. ingress controller 낮은 버전으로 설치 하겠습니다.

❯ helm3 search repo ingress-nginx --versions | head -10
NAME CHART VERSION APP VERSION DESCRIPTION
ingress-nginx/ingress-nginx 4.0.6 1.0.4 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.0.5 1.0.3 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.0.3 1.0.2 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.0.2 1.0.1 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 4.0.1 1.0.0 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 3.39.0 0.49.3 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 3.38.0 0.49.2 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 3.37.0 0.49.1 Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx 3.36.0 0.49.0 Ingress controller for Kubernetes using NGINX a...

chart버전을 수동으로 입력해서 설치 합니다. values.yaml 파일도 다시 내려 받습니다.

❯ helm3 show values ingress-nginx/ingress-nginx --version 3.39.0 > values.yaml❯ helm3 install ingress-controller ingress-nginx/ingress-nginx --version 3.39.0 -f values.yaml

설치가 완료 되었습니다.

--

--

Smart-JYS

자신이 하는 일을 잘 이해할수록 그 일을 더 잘한다.