# [변형 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 내부로만 가시화(gateway 전역 누수/CDS NACK 함정 차단). # # ⚠ 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