-
Notifications
You must be signed in to change notification settings - Fork 0
Ingress Nginx
cjlotto edited this page Aug 12, 2023
·
1 revision
-
https://www.app.com
이라는 루트 경로,https://www.app.com/customer
,https://www.app.com/login
이라는 경로 매개변수가 있는 경로가 있다고 해보자. - Kubernetes Cluster에서 Pod + Service별로 root(/), /customer, /login에 대한 App service를 하고있다고하자.
- 보통은 L7, L4 스위치 장치로 IP Load Balacing을 할 수 있다. 그런데, 쿠버네티스에서는 Ingress를 통해 이 스위치역할을 해줄 수 있다.
- App을 Version1에서 Version2로 업데이트할 때, 쿠버네티스의 Ingress를 통해 percentage(%)로 Version1에는 80%, Version2에는 10% 이런식으로해서 Canary Update를 수행할 수 있다.
- Ingress는 쿠버네티스 설치 시, 가지고 있는 객체이다.
- 여기에 Host, Path - Service Name과 매칭을 선언할 수 있다.
- 이는 정의만할 뿐 실제 구동하는 구현체는 아니기 때문에, Ingress Controller가 필요하다.
- 실제 Ingress에서 하고자하는 내용을 수행하는 구현체가 Ingress Controller이다. (Ex. Nginx, Kong)
- 가령, Nginx를 Ingress Controller로 사용했다면, Namespace로 Nginx가 만들어지면서, 실제 구동하는 Controller가 Pod로 배포된다.
- 이 배포된 Ingress Controller가 Ingress에서 작성해놨던 Rule을 확인하여 Traffic을 Balancing하여 알맞은 서비스에 연결해준다.
- Ingress Controller도 Service 객체를 통해 트래픽을 받기에, On-prem이면, Nodeport를, Cloud면 Load Balacer를 사용하게 된다.
- 위에서 많이 설명함
- 위에서 많이 설명했지만 덫 붙임.
- Ingress에서 @weight를 붙이면, %를 지정할 수 있다.
- Ingress에서 @header를 붙여서 Language를 지정하면 가령, 미국에서 서비스할 때 언어를 eng로 지정 시, 트래픽을 100% 받게 된다.
- Nginx Ingress Controller를 사용한다고 하자.
- 해당하는 Controller Pod를 443 포트로 연결해 놓아야 한다.
- Ingress에는 rule을 설정하고, tls를 secret으로 연결한다.
- secert에 ssl 인증서를 갖고있다.
- 사용자는 https를 붙여야 접근이 가능해진다.