[Ingress, Egress 개념]
네트워크 트래픽은 Ingress, Egress로 구분된다.
- Ingress: 외부로부터 서버로 유입되는 트래픽
- Egress: 서버 내부에서 외부로 나가는 트래픽
쿠버네티스에도 Ingress라는 개념이 존재한다. 즉, Ingress 트래픽을 어떻게 처리할지 결정한다.
Ingress를 사용하지 않았을 경우 외부 트래픽을 처리하는 방법은 "포트번호, 외부IP" 등으로 구분할 수 있으나 세부적인 처리로직을 구현하기에는 한계가 있다고 한다.
Ingress를 통해서 L7 수준의 요청처리를 할 수 있다고 한다.
ex) 로드밸런싱, TLS/SSL 인증서 처리, 특정 HTTP경로의 라우팅
[쿠버네티스에서 Ingress 적용하기]
쿠버네티스에서 Ingress를 적용하려면 2가지가 필요하다.
- YAML파일에서 적용되는 Ingress Object
- 실제 규칙이 적용될 Ingress Controller
YAML적용
alicek106.com 이라는 호스트명으로 접근하는 네트워크 요청에 ingress를 적용하되,
http 프로토콜을 통해 /api/hostname-service 라는 경로로 접근하는 요청을 hostname-service 라는 서비스의 80포트로 전달하라는 뜻.
But 이렇게 설정해도 실제로는 아무일도 일어나지 않는다고 한다.
IngressController를 붙여줘야 실제로 규칙이 적용된다.
nginx Ingress Controller 등을 구동해서 ingress.yaml 파일을 보고 실제 동작을 하게 된다.
[Quick Example]
- nginx Ingress Controller를 붙인다고 가정한다.
nginx controller 생성
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
위 명령어는 Nginx Controller를 위한 Configmap, Namespace 등을 일괄적으로 생성하므로, 더 이상 신경 쓸 필요는 없다고 한다.
Ingress 규칙 생성
alicek106.example.com 도메인의 /echo-hostsname 경로로 접근하는 요청을 hostname-service의 80포트로 전달하게 된다.
Ingress Controller도 만들었고, Ingress 규칙도 만들었으니 된 것 같지만 아직 이를 받아줄 수 있는 서비스가 없으므로 서비스를 만들어야 한다.
[참조]
https://blog.naver.com/alice_k106/221502890249
'Kubernetes' 카테고리의 다른 글
Istio (0) | 2023.01.31 |
---|---|
Service Mesh (0) | 2023.01.31 |
Service란? (0) | 2022.12.06 |
ConfigMap이란? (0) | 2022.12.06 |