기타
VMware NSX-ALB (Avi Load Balancer) 외부 api 전달
ipxy
2025. 3. 26. 16:15
728x90
✅ 목표
쿠버네티스 클러스터 내부에서 나가는 요청이 외부 API로 직접 나가는 것이 아니라,
반드시 NSX-ALB의 공인 IP:80을 통해 외부 API로 전달되어야 한다.
즉, 요청 흐름은 다음과 같습니다:
[Pod 또는 API Gateway] → [NSX-ALB 공인 IP:80] → [외부 API 서버 (예: api.example.com:80)]
✅ NSX-ALB에서 설정해야 할 것
NSX Advanced Load Balancer (ALB)에서 다음 구성으로 설정하면 됩니다:
🛠️ 1. Virtual Service (VS) 생성
- Name: vs-external-api
- VIP (Virtual IP): 1.2.3.4 (공인 IP)
- Port: 80
- Application Profile: HTTP (또는 TCP도 가능)
- SSL: 사용하지 않음 (HTTP 라고 가정)
🛠️ 2. Pool 생성 (포워딩 대상)
- Name: pool-api-example
- Type: External
- Servers:
- api.example.com 의 실제 IP 주소 (예: 93.184.216.34)
- Port: 80
- Health Monitor: HTTP or TCP
🧠 보통 외부 도메인의 경우 DNS 해석이 필요하므로 "FQDN 기반 서버 등록" 기능을 활용할 수 있습니다.
🛠️ 3. Virtual Service → Pool 매핑
- 앞서 만든 vs-external-api 가
- 요청을 pool-api-example 에 포워딩하도록 연결합니다.
🛠️ 4. Host 헤더 처리 (선택적)
만약 외부 API 서버가 Host 헤더 기준으로 요청을 필터링한다면
HTTP Request Policy 를 추가해서 Host 헤더를 수정할 수 있습니다.
예:
- Match: All requests
- Action: Add Header Host: api.example.com
✅ 파드 또는 API Gateway에서 호출 시
curl -H "Host: api.example.com" http://1.2.3.4/
→ ALB가 api.example.com:80 으로 요청을 포워딩
→ 응답은 다시 파드로 돌아옴
✅ 주의사항
항목 | 주의할 점 |
DNS | 외부 API의 IP는 정적 IP여야 이상적. DNS TTL 관리 주의 |
응답 헤더 처리 | 외부 API의 응답에서 리디렉션이나 쿠키 도메인 문제가 생길 수 있음 |
ALB 포트 | HTTPS API 사용 시 ALB에 SSL Termination 또는 Passthrough 설정 필요 |
클러스터 네트워크 | 파드 또는 노드가 ALB VIP (공인 IP)에 접근 가능해야 함 |
728x90