# T92 manifest — 이번 실측(2026-07-05, homelab)에 적용된 리소스 정의. # # 원본 정의는 번들 랩 킷 files/lab/ 의 00~45.yaml 이다(이 verify 폴더 기준 ../../lab/). # setup.sh / flip-test.sh 가 아래 플레이스홀더를 클러스터에서 발견한 값으로 치환해 적용했다. # # ── 이번 실측에서 치환된 구체값 ───────────────────────────────────────────── # __CLUSTER_DNS__ = 10.250.0.3 (kube-system/coredns ClusterIP) # __LABDNS_IP__ = 10.250.47.57 (dns-lab/lab-dns ClusterIP) # __CLUSTER_DOMAIN__ = homelab.local (coredns Corefile 에서 자동 발견 — cluster.local 아님) # backend-a ClusterIP = 10.250.4.141 (GSLB 후보 IP #1) # backend-b ClusterIP = 10.250.196.43 (GSLB 후보 IP #2) # gslb.lab.internal 초기 A record = 10.250.4.141 (backend-a) # # 인프라 매니페스트(00-namespace / 10-lab-dns / 20-backends / 30-client)는 files/lab/ 원본 + # 위 치환값으로 적용됐다(분량 관계로 여기 재수록하지 않음 — 번들 킷이 정본). 아래에는 이 랩의 # "실험 변수"에 해당하는 CRD 4종만 실제 적용된 그대로 인라인한다(flip-test.sh 가 apply). --- # [STRICT 변형] resolution: DNS -> Envoy STRICT_DNS (strict mode1 에서 적용) apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: gslb-strict namespace: dns-lab spec: exportTo: ["."] # dns-lab 내부로만 가시화(gateway 전역 누수/NACK 차단) hosts: ["gslb.lab.internal"] location: MESH_EXTERNAL ports: - { number: 80, name: http, protocol: HTTP } - { number: 443, name: https, protocol: HTTP } # origination 후 내부는 HTTP(L7 conn pool) resolution: DNS --- # [LOGICAL 변형] resolution: DNS_ROUND_ROBIN -> Envoy LOGICAL_DNS (logical mode1/mode3 에서 적용) # ⚠ gslb-strict 와 host 동일 -> 동시 적용 불가. flip-test.sh 가 apply 전에 반대 변형을 delete. 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 --- # VirtualService — client 평문 HTTP(:80) -> :443 라우팅 (TLS origination 진입점) apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: gslb-80-to-443 namespace: dns-lab spec: exportTo: ["."] hosts: ["gslb.lab.internal"] http: - match: [{ port: 80 }] route: - destination: host: gslb.lab.internal port: { number: 443 } --- # DestinationRule — port 443 에 TLS origination(SIMPLE). 이게 있어야 upstream 이 L7(HTTP conn pool)로 # 관리되어 STRICT flip 시 drain(GOAWAY/close)이 관측된다. insecureSkipVerify=랩 단순화용. apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: gslb-tls-origination namespace: dns-lab spec: exportTo: ["."] host: gslb.lab.internal trafficPolicy: portLevelSettings: - port: { number: 443 } tls: mode: SIMPLE sni: gslb.lab.internal insecureSkipVerify: true # 주: mode2(유실+복구)는 이번 T92 실측 범위에서 제외(44-DR-outlier / 45-VS-retry 미적용). # T92 는 STRICT drain vs LOGICAL preserve 대조(mode1) + LOGICAL 트레이드오프(mode3)에 집중.