# [작업 B stage2/3] DestinationRule = 46(churn) + 44(outlier, 교정판) 합본. # # Stage2("+outlier")·Stage3("+outlier+retry")에서 쓴다. 46의 connection churn # (maxRequestsPerConnection:1 — 매 요청 새 upstream 연결, dead-IP를 실제로 뽑게 만듦)과 # 44의 outlier detection(연속 5xx/connect 실패 endpoint를 eject)을 **같은 portLevelSettings[443] # 블록 안에** 함께 둔다 — 44 자체 교정 코멘트에 적은 대로, portLevelSettings가 존재하는 포트는 # 그 블록 밖(top-level)의 값을 상속하지 않으므로 반드시 한 블록에 다 넣어야 실제로 반영된다. # # 44와 파라미터 완전히 동일(consecutive5xxErrors:3, interval:5s, baseEjectionTime:30s, # maxEjectionPercent:50, minHealthPercent:0) — churn 유무만 다른 대조군이 되도록. apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: gslb-tls-origination # 43/44/46과 같은 이름 — apply로 스왑 namespace: dns-lab spec: exportTo: ["."] host: gslb.lab.internal trafficPolicy: portLevelSettings: - port: { number: 443 } connectionPool: tcp: { connectTimeout: 1s } # 44와 동일 — 죽은 IP connect 실패를 빨리 판정 http: maxRequestsPerConnection: 1 # 46과 동일 — 매 요청마다 새 upstream 연결(churn) outlierDetection: consecutive5xxErrors: 3 consecutiveGatewayErrors: 3 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50 minHealthPercent: 0 tls: mode: SIMPLE sni: gslb.lab.internal insecureSkipVerify: true