# [변형 A] resolution: DNS → Envoy STRICT_DNS # # A record의 "모든 IP"를 endpoint로 펼쳐 Envoy가 직접 LB한다. DNS refresh 시 사라진 # IP의 host를 제거 → 그 host로의 "기존 커넥션을 drain(HTTP GOAWAY/connection:close)". # ⇒ GSLB가 IP1→IP2로 바꾸면 기존 롱세션이 끊긴다(재현 목표 Mode1). # ⇒ 죽었지만 아직 A record에 남은 IP를 LB가 고르면 connect 실패=트래픽 유실(Mode2). # # 포트 443을 protocol:HTTP 로 선언하는 이유: TLS origination 후 Envoy가 upstream을 # "HTTP"로 취급(L7 conn pool) → host 제거 시 draining이 L7로 관측된다. # exportTo:["."] → dns-lab 내부로만 가시화(다른 namespace/gateway로의 전역 노출을 막는 위생적 # 스코핑 관행 — "CDS NACK 차단" 때문은 아니다. 2026-07-10 정정: 런타임 복수 A레코드는 NACK을 # 유발하지 않는다는 게 실측으로 확인됐다, docs/test-reports/2026-07-09_211314-dns-logical-multia.md 참조). # # ⚠ 41-serviceentry-logical.yaml 과 host가 같아 동시 적용 불가 — 정확히 하나만 apply. apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: gslb-strict 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 } # origination 후 내부는 HTTP resolution: DNS