6주차 - Ingress
0. 목적성
Ingress의 통신흐름을 확인하고 Ingress-Nginx Controller 정책을 설정합니다.
실제 패킷을 확인해서 추가된 헤더들을 확인하고 OSI 7 Layer에서 로드밸런싱이 되는 것을 확인합니다.
host 기반 라우팅과 HTTPS 처리가 어떻게 되는지 확인합니다.
1. Ingress
ClusterIP 는 노드를 통해 pod을대상으로트래픽을 라우팅하는 서비스타입입니다.
LoadBalancer 서비스 타입은 기능에 제약성이 많습니다.
layer 3 를 기반으로 작동하고 있어서
tls termination, virtual host, path-base routing 이 안된다.
layer3는 service들이 healthy한지 모르게 됩니다. 노드가 없어지면 라우팅 테이블에 오랫동안 무제가 생긴다.
LoadBalncer는 한개의 내부 서비스를 외부 사용자들에게 접근 가능하게함
이 때문에 Ingress 라는 서비스 타입이 생겼습니다.
여러 서비스들에 대해서 한개의 로드밸런서로 유연한 설정을 할 수 있습니다.
ClusterIP 나 NodePort는
1.1 Ingress 소개
Ingress는 클러스터 내부의 서비스(ClusterIP, NodePort, Loadbalancer)를 외부로 노출(HTTP/HTTPS) - Web Proxy 역할을 합니다.
oad balancing, SSL termination and name-based virtual hosting. 의 기능들을 모두 지원합니다.
여기서 중요한 부분은 여러개의 노드/서비스들에 대해서 LB가 가능합니다.
1.2 Ingress 네트워크 흐름
1.2.1 서비스에 NODEPORT 서비스를 생성합니다.
1.2.2 Ingress Controller Pod를 배치합니다.
1.2.3 해당 Ingress Controller Pod를 LoadBalancer로 분산부하를 실행합니다.
1.2.4 LAYER 7에서 파드의 IP 로 바로 트래픽을 전달합니다.
1.3 [실습] nginx Ingress Controller 설치 및 k3 환경 구성
- k3 환경 구성
다양한 Nginx 인그레스 컨트롤러 인입 방법이 있습니다
metalb, host network 사용, provisioned edge, external Ips
1.4 [실습] ingress 정책설정 및 통신 흐름 확인
INGRESS NGINX 파드를 생성해서 NODE PORT로 외부 노출합니다.
인그레스 정책 설정으로 EXTERNAL POLICY를 LOCAL로 설정하고
3.1 디플로이먼트와 서비스를 생성합니다.
Ingress Nginx 로 backend pod IP 바로 접근 가능하다.
3.2 인그레스 정책 생성합니다.
3.3 인그레스 접속 분산 확인
3.4 패킷 XFF 확인
xff 가 해당 나의 ip가 찍히는것을 볼 수 있습니다.
1.5 [실습] hostbased 라우팅
인그레스 를 통한 접속 까지 확인했습니다!~
Last updated