Ingress 개념 및 기본 사용
- Ingress는 서비스를 확인한 후 pod로 트래픽을 전달해주는 역할을 함
- 일종의 service의 규칙이라고 생각하면 편함
- Ingress controller에서 트래픽을 보내줌
- ClusterRole과 Binding으로 pod를 조회할 수 있는 권한을 받음
- Ingress와 service를 연결하는 Ingress Class가 존재함
Nginx 사용 시 마주하게 되는 상황들과 해결 방법
- https 설정을 걸 때는 TLS 설정이 필요함
- 해당 인증서를 Ingress, nginx, LoadBalancer 에 설정이 가능함
- Ingress는 해당 service만 걸리고 nginx로 하면 nginx를 통하는 모든 트래픽이 LoadBalancer는 외부에서 들어오는 트래픽을 암호화할 수 있음
- LoadBalancer를 이용할 경우 외부 트래픽과 LoadBalancer 사이에만 암호화가 적용됨
- 이미 회사의 내부망으로 들어왔기에 상관없지만 만약 node가 여러 곳에 존재한다면 인터넷을 통하게 되기 때문에 안됨
- 인증서는 공인 인증서와 사설 인증서가 존재함
- Ingress의 path의 경우 같은게 겹칠 수 있기에 각자의 prefix로 고유의 path를 주는 편임
- nginx를 사용할 시 http를 자동으로 https로 전환해주는 거나 분산 방식을 바꿀 수 있음
- service의 기본은 round-robin이나 ewma와 같은 것을 사용하면 트래픽에 따라 분산 가능함
세션이란?
- 세션이란 사용자와 서버 간의 연결 상태를 일정 시간 동안 유지하기 위한 단위로 서비스에 필요한 정보를 임시로 저장하는 것이라 보면 됨
- 기본적으로 마이크로 서비스에는 여러 서버를 쓰기 때문에 사용자마다 따로 세션을 저장할 필요가 있음
세션 어피니티와 트래픽 폴리쉬
- 세션 어피니티는 위에 있었던 세션 전략 중 세션 어피니티를 구현한 것이라 보면 됨
- 트래픽 폴리쉬는 internal과 external이 존재함
- internal은 내부의 통신으로 Cluster를 주면 다른 노드까지 되지만 Local은 같은 노드로만 트래픽 전달이 가능함
- external은 외부에서오는 통신으로 Local은 같은 노드로만 트래픽 전달, Cluster는 외부 노드로 트래픽 전달이 가능해짐
- external traffic policy와 Local 그리고 nginx의 DaemonSet을 조합하면 트래픽이 들어올 때 같은 노드로만 트래픽을 전달하면 되기 때문에 네트워크 홉수를 줄일 수 있어 효율이 향상됨
출처: https://inf.run/Ln688