apiVersion: v1 kind: Pod metadata: name: client namespace: istio-vt-t47-r2 labels: app: client annotations: sidecar.istio.io/inject: "true" spec: containers: - name: curl image: curlimages/curl:8.14.1 command: ["sleep", "infinity"] --- apiVersion: apps/v1 kind: Deployment metadata: name: echo namespace: istio-vt-t47-r2 labels: app: echo spec: replicas: 1 selector: matchLabels: app: echo template: metadata: labels: app: echo annotations: sidecar.istio.io/inject: "true" spec: containers: - name: echo image: mendhak/http-https-echo:37 env: - name: HTTP_PORT value: "8080" - name: HTTPS_PORT value: "8443" ports: - containerPort: 8080 - containerPort: 8443 --- apiVersion: v1 kind: Service metadata: name: echo namespace: istio-vt-t47-r2 spec: selector: app: echo ports: - name: http port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 --- apiVersion: v1 kind: ServiceAccount metadata: name: hop-gw namespace: istio-vt-t47-r2 --- apiVersion: apps/v1 kind: Deployment metadata: name: hop-gw namespace: istio-vt-t47-r2 spec: replicas: 1 selector: matchLabels: istio: hop-gw template: metadata: labels: istio: hop-gw annotations: inject.istio.io/templates: gateway sidecar.istio.io/inject: "true" spec: serviceAccountName: hop-gw containers: - name: istio-proxy image: auto --- apiVersion: v1 kind: Service metadata: name: hop-gw namespace: istio-vt-t47-r2 spec: selector: istio: hop-gw ports: - name: tls port: 8443 targetPort: 8443 --- apiVersion: networking.istio.io/v1 kind: ServiceEntry metadata: name: hop-gw-mock-se namespace: istio-vt-t47-r2 spec: hosts: - mock.istio-verify-ext.svc.homelab.local location: MESH_EXTERNAL ports: - number: 443 name: tls protocol: TLS resolution: DNS --- apiVersion: networking.istio.io/v1 kind: Gateway metadata: name: hop-gw-gateway namespace: istio-vt-t47-r2 spec: selector: istio: hop-gw servers: - port: number: 8443 name: tls protocol: TLS tls: mode: PASSTHROUGH hosts: - mock.istio-verify-ext.svc.homelab.local --- # CORRECTED (run2): DR host must use Istio's internal service-registry FQDN for a real # k8s Service, which stays ..svc.cluster.local regardless of the cluster's actual # kubeadm clusterDomain (homelab.local). See harness-notes.md CORRECTION 2026-07-05. apiVersion: networking.istio.io/v1 kind: DestinationRule metadata: name: hop-gw-dr namespace: istio-vt-t47-r2 spec: host: hop-gw.istio-vt-t47-r2.svc.cluster.local --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: hop-gw-route-to-mesh namespace: istio-vt-t47-r2 spec: hosts: - mock.istio-verify-ext.svc.homelab.local gateways: - mesh tls: - match: - port: 443 sniHosts: - mock.istio-verify-ext.svc.homelab.local route: - destination: # CORRECTED (run2): route destination host for the real k8s hop-gw Service must # match its Istio registry FQDN (svc.cluster.local), not the DNS domain (svc.homelab.local). host: hop-gw.istio-vt-t47-r2.svc.cluster.local port: number: 8443 http: - route: - destination: host: mock.istio-verify-ext.svc.homelab.local retries: attempts: 3 perTryTimeout: 1s --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: hop-gw-route-at-gw namespace: istio-vt-t47-r2 spec: hosts: - mock.istio-verify-ext.svc.homelab.local gateways: - hop-gw-gateway tls: - match: - port: 8443 sniHosts: - mock.istio-verify-ext.svc.homelab.local route: - destination: host: mock.istio-verify-ext.svc.homelab.local port: number: 443