# [변형 B] resolution: DNS_ROUND_ROBIN → Envoy LOGICAL_DNS # # A record에서 "필요할 때 1개 IP"만 골라 논리적 endpoint 1개로 취급한다. 새 커넥션은 # 최신 DNS 결과로 맺되, "기존 커넥션은 절대 drain 하지 않는다". # ⇒ GSLB가 IP1→IP2로 바꿔도 기존 롱세션은 유지되고, 신규만 IP2로 간다(Mode1 대조군). # ⇒ 트레이드오프: 물고 있던 IP가 나중에 죽어도 Envoy가 모른 채 유지 → 뒤늦게 끊긴다(Mode3). # # ⚠ 함정(memory: dual-gateway-egress-lab): LOGICAL_DNS는 lb_endpoint가 1개여야 한다. # A record가 multi-IP면 이 SE를 받는 프록시가 CDS push를 NACK(같은 push의 listener까지 # 통째로 드롭)할 수 있다. 그래서 Mode1/Mode3의 flip은 "단일 IP → 단일 IP"로만 한다. # exportTo:["."] 로 가시성을 dns-lab 내부로 한정해 gateway 전역 영향도 원천 차단. # # ⚠ 40-serviceentry-strict.yaml 과 host가 같아 동시 적용 불가 — 정확히 하나만 apply. apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: gslb-logical namespace: dns-lab spec: exportTo: ["."] hosts: ["gslb.lab.internal"] location: MESH_EXTERNAL ports: - { number: 80, name: http, protocol: HTTP } - { number: 443, name: https, protocol: HTTP } resolution: DNS_ROUND_ROBIN