반응형
강의 동영상 : https://www.youtube.com/watch?v=7jzZAUUReMg
원본 동영상 : https://www.youtube.com/watch?v=Q2iGx3iW-Mg
NGINX 공식 문서 : https://docs.nginx.com/nginx-ingress-controller
NGINX Ingress Controller Github : https://github.com/nginxinc/kubernetes-ingress
1. Ingress Controller
- Ingress
- Kubernetes Cluster내에서 동작하는 Service들의 Load Balancer 역할을 하는 Kubernetes Cluster의 한 요소
- 주요 기능
- Routing 지원 : Host-based Routing이나 Path-based Routing을 통해 Client의 Request들이 알맞은 Service POD들로 전달.
- TLS/SSL termination 지원
- NGINX Ingress Controller
- 기능의 차이는 있지만 NGINX, NGINX Plus 모두 Routing 기능과 TLS/SSL Termination을 지원하는 Ingress Controller 기능을 제공.
- HTTP 외에 gRPC, Websocket, TCP/UDP Load Balancing 지원.
2. Building the Ingress Controller Image
- 다음 Document 참조 : https://docs.nginx.com/nginx-ingress-controller/installation/building-ingress-controller-image/
2.1 Building the Image
1. Clone the ingress controller repo
$ git clone https://github.com/nginxinc/kubernetes-ingress/
$ cd kubernetes-ingress
$ git checkout v2.1.1 // 2022/3/25 현재 2.1.1 이 최신 버전. 동영상에서는 v1.11.2
2. Build
# NGINX case (Debian or Alpine)
$ make debian-image PREFIX=registry.brwandwarf.com/nginx-ingress TARGET=download
$ make alpine-image PREFIX=registry.brwandwarf.com/nginx-ingress TARGET=download
- Remark : registry.brwandwarf.com는 Image가 올라갈 Private Registry의 예이다.
# NGINX Plus case
$ cp nginx-repo.* .../kubernetes-ingress
$ make debian-image PREFIX=registry.brwandwarf.com/nginx-ingress TARGET=download
- Remark : NGINX Plus image로 Build 하려면 certificate 와 license key file을 Project Root Path에 복사한 후에 Build 해야 한다.
- 참고 : NGINX와 NGINX Plus의 차이는 간단하게 여기에서 확인할 수 있다 - [Link]
3. Push the image
- Image Repository에 Image를 Push
$ make push PREFIX=registry.brwandwarf.com/nginx-ingress
- Demo에서는 Local Image repository만을 사용하기 때문에 다음 명령과 비슷하게 Build
$ make debian-image-plus PREFIX=nginx-ingress TARGET=container
3. Installation with Helm
- Helm은 Kubernetes Package Management Tool로 Chart라 불리는 쿠버네티스 리소스 명세 파일들을 통해 패키지들을 관리한다. Node.js에서 npm과 같은 개념으로 생각하면 된다.
- Chart : Kubernetes Resource 명세 파일
- Repository : Chart 저장소
- [참조]
3.1 설치
1. Helm Repository 추가
$ helm repo add nginx-stable https://helm.nginx.com/stable
$ helm repo update
2. Installing via Helm Repository ([Link])
- 'my-release'라는 명칭으로 Install. NGINX Plus의 경우에는 registry.brwandwarf.com라는 이름의 Private Repository에서 Image를 pull 하는 것으로 가정.
# For NGINX $ helm install my-release nginx-stable/nginx-ingress ... # For NGINX Plus $ helm install my-release nginx-stable/nginx-ingress --set controller.image.repository=registry.brwandwarf.com/nginx-plus-ingress --set controller.nginxplus=true
- 동영상 에서는 Local Repository를 사용하기 때문에 아래 Command 사용
- controller.nginxplus=true는 각종 설정값 중에 하나의 사용 예. Link 하단 참조.
$ helm install my-release nginx-stable/nginx-ingress --set controller.image.repository=nginx-plus-ingress --set controller.nginxplus=true
- 위에까지 실행하면 Nginx ingress controller POD가 동작하는 것을 확인할 수 있다.
3.3 Demo
- 영상에서는 2개의 Coffe Service와 1개의 Tea Service를 실행
- Pod 확인
- Service 확인
- 실행 예
'DevOps > NGINX' 카테고리의 다른 글
NGINX MSA 디지털 트레이닝 - 7강 : NGINX Kick Starter (1) | 2022.05.06 |
---|---|
NGINX MSA 디지털 트레이닝 - 6강 : NGINX App Protect - WAF (1) | 2022.04.02 |
NGINX MSA 디지털 트레이닝 - 4강 : API Gateway (1) | 2022.03.21 |
NGINX MSA 디지털 트레이닝 - 3강 : Load Balancing (1) | 2022.03.13 |
NGINX MSA 디지털 트레이닝 - 2강 : Reverse Proxy (1) | 2022.03.09 |