본문 바로가기

컨테이너/Kubernetes

Kubernetes(k3s) helm chart를 이용한 NGINX Ingress Controller 설치

Kubernetes Ingress란?

- Ingress는 HTTP, HTTPS 등 네트워크 Layer7에 대한 설정을 담당하는 리소스

- Ingress의 기본적인 역할 : 외부 HTTP 호출에 대한 트래픽을 처리

  (부하 분산, TLS 종료, 도메인 기반 라우팅 등을 제공)

- Ingress는 쿠버네티스 클러스터 내부 서비스에 외부에서 접근이 가능한 URL을 부여함으로써 일반 사용자들이 쉽게 접근할 수 있는 통로를 제공

- Ingress는 그에 맞는 IngressController가 존재하며 Ingress Controller는 Ingress에 정의된 트래픽 라우팅 규칙을 보고 라우팅을 수행

 

Kubernetes Ingress Controller란 ?

- 실제로 Ingress의 규칙을 읽고 외부의 트래픽을 Service로 전달하는 주체

- Ingress Controller에는 NGINX Ingress Controller, HAProxy, traefik 등 여러가지가 있음

 

 

* 이 글에서는 NGINX Ingress Controller를 설치하는 학습을 해볼 예정!!

 

 

traefik ingress controller를 통해 설치한 예제는 아래 링크를 참고!!

https://gmffl.tistory.com/entry/k3s%EC%97%90-hello-world-HTTP-%EB%B0%B0%ED%8F%ACTraefik-Ingress-Controller-%EC%82%AC%EC%9A%A9

 

k3s에 'hello world' HTTP 배포(Traefik Ingress Controller 사용)

k3s에 Traefik Ingress Controller 사용하여 아주 간단한 'hello world' HTTP 배포하기 - 기본적으로 k3s master node가 구성되어있는 상태여야함 Ingress 기본 개념 HTTP, HTTPS 등 네트워크 Layer 7에 대한 설정을 담당하

gmffl.tistory.com

 


 

NGINX Ingress Controller 설치

- helm을 이용하여 손쉽게 NGINX Ingress Controller를 설치할 수 있음!

- nginx-ingress-controller는 NGINX를 사용하여 Kubernetes 클러스터의 HTTP 서비스에 대한 외부 액세스를 관리하는 인그레스 컨트롤러!

 

 

 

먼저 "ctrl" 이라는 Namespace를 만들어준다.

 

 

kubectl create ns ctrl

 

 

원래는 stable repository에 있는 nginx-ingress를 설치하려고 하였으나.. 차트 설명이 DEPRECATED로 되어있기 때문에 bitnami repository를 이용하도록 한다. 

 

 

 

helm install nginx-ingress-controller bitnami/nginx-ingress-controller

 

 

정상적으로 설치가 되면 service를 확인해본다.

 

 

nginx-ingress-controller의 service Type은 loadBalancer로 되고 외부에서 접근 가능한 EXTERNAL-IP가 저절로 생성되고 이제 curl 명령어나 url로도 직접 접근이 가능하다!

 

 

 

 

TIP)

만약 EXTERNAL-IP 에서 <pending>이 뜬다면 kubectl get all -A 명령을 통해 해당 IP:port 가 중복인 서비스가 이미 동작중에 있는지를 확인하고 있다면 삭제 후에 다시 설치하면 정상적으로 EXTERNAL-IP가 부여된다.