# DestinationRule — sidecar → egress gateway 구간에 ISTIO_MUTUAL을 강제하는 핵심 리소스.
#
# PASSTHROUGH 세트의 DR은 subset 식별만 했지만(TLS 정책 없음), ISTIO_MUTUAL 변형에서는
# 이 trafficPolicy가 반드시 필요하다:
#   - tls.mode: ISTIO_MUTUAL → sidecar가 egress gateway로 갈 때 메시 mTLS(SPIFFE 인증서)로 감쌈.
#   - tls.sni: edition.cnn.com → 그 메시 mTLS handshake의 SNI를 외부 도메인으로 설정.
#       egress gateway의 Gateway server(hosts: [edition.cnn.com])가 이 SNI로 필터체인을 매칭한다.
#       이 sni가 없거나 어긋나면 게이트웨이 listener가 매칭에 실패해 연결이 끊긴다.
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: egressgateway-cnn
  namespace: mesh-test
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
    - name: cnn
      trafficPolicy:
        loadBalancer:
          simple: ROUND_ROBIN
        portLevelSettings:
          - port:
              number: 15443          # egress gw 수신 포트(Gateway server와 일치)
            tls:
              mode: ISTIO_MUTUAL     # sidecar→gateway 를 메시 mTLS로 (SPIFFE 신원 제시)
              sni: edition.cnn.com   # gateway server SNI 매칭 키
