apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: netbird namespace: netbird spec: hosts: - netbird.kube.huskypup.net gateways: - istio-system/edge http: # Management REST API - match: - uri: prefix: /api route: - destination: host: netbird-management.netbird.svc.cluster.local port: number: 80 # Management gRPC (listens on port 33073, separate from REST API on 80) - match: - uri: prefix: /management.ManagementService/ route: - destination: host: netbird-management-grpc.netbird.svc.cluster.local port: number: 33073 # Signal gRPC - match: - uri: prefix: /signalexchange.SignalExchange/ route: - destination: host: netbird-signal.netbird.svc.cluster.local port: number: 80 # Relay WebSocket - match: - uri: prefix: /relay route: - destination: host: netbird-relay.netbird.svc.cluster.local port: number: 33080 # Dashboard (all other paths go to dashboard nginx) # No URI rewrite — the static export has .html and .txt files for every route. # nginx try_files handles SPA fallback to /index.html. - route: - destination: host: netbird-dashboard.netbird.svc.cluster.local port: number: 80