ingress 관련메모
Posted by Albert 5Day 7Hour 32Min 38Sec ago [2025-12-10]
✅ 1. MetalLB IPAddressPool 이 의미하는 것
spec: addresses: - 192.168.56.20-192.168.56.40
이 IP들은 서버에 실제로 설정되는 IP가 아니라,
K8s에서 **LoadBalancer 타입의 서비스에 할당될 가상 IP(VIP)**이다.
즉:
- 서버의 NIC(IP)는 그대로 (예: 192.168.56.10)
- 서비스가 생성될 때 MetalLB가 Pool에서 하나를 꺼내 배정함 (예: 192.168.56.20)
- 이를 ARP/NDP로 네트워크에 광고해서 외부에서 접근 가능하도록 해줌.
서버가 20~40까지 IP 21개를 써버리는 게 아님
→ 단지 “사용 가능한 IP 목록”을 MetalLB에게 준 것.
✅ 2. aaa.com, bbb.com 같은 도메인 운영은 어떻게 되는가?
Ingress 기반 운영에서는 LoadBalancer IP는 보통 1개면 충분하다.
도메인별로 IP를 따로 쓸 필요가 없음.
보통 구조는:
사용하는 실제 서버 IP
- 서버 NIC IP (예: 192.168.56.10)
- 도메인이 바인딩될 공인 IP / NAT IP (운영 환경)
K8s 외부 접근용 IP = MetalLB에서 1개 할당
예:
- MetalLB 제공 LoadBalancer IP → 192.168.56.20
그럼 도메인을 다음처럼 설정하면 끝:
도메인A 레코드설명aaa.com192.168.56.20Ingress 통해 라우팅됨bbb.com192.168.56.20동일 Ingress Controller로 라우팅됨
✅ 3. 실제 Ingress 예시
ingress-aaa.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: aaa-ingress
spec:
ingressClassName: nginx
rules:
- host: aaa.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: aaa-service
port:
number: 80
ingress-bbb.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bbb-ingress
spec:
ingressClassName: nginx
rules:
- host: bbb.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: bbb-service
port:
number: 80
같은 LoadBalancer IP(192.168.56.20)에 들어와도,
Ingress Controller가 Host 기반으로 트래픽을 분기함.
결론 (가장 중요한 핵심)
✔ 192.168.56.20~40 IP가 서버에 실제로 붙는 IP가 아니다
→ MetalLB가 LoadBalancer Service에 쓰기 위한 가상 IP Pool
✔ 도메인별로 별도의 IP가 필요하지 않음
→ 하나의 LoadBalancer IP만 있으면 여러 도메인 운영 가능
✔ DNS에 A레코드로 LoadBalancer IP만 등록하면 됨
→ ingress가 도메인별로 개별 서비스로 라우팅
✨ 운영 시 추천 구성
운영에서는 보통:
- 서버 실제 IP: 192.168.56.10
- MetalLB LoadBalancer IP(1개만 사용): 192.168.56.20
- aaa.com → 192.168.56.20
- bbb.com → 192.168.56.20
이 구성으로 수십 개 도메인이 모두 Ingress로 운영 가능.