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를 통해 설치한 예제는 아래 링크를 참고!!
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가 부여된다.