We are using Istio 1.7.0 and we are trying to put in place a Delegate VirtualService. I was able to deploy the configuration successfully, but when we make the calls the delegate does not kick in. I added variable “PILOT_ENABLE_VIRTUAL_SERVICE_DELEGATE = true” in istiod deployment.
We are using istiocontrolplane to manage configuration, so I tried adding the variable there, too (we know that defining the variable there overrides istiod configuration). But what happens is that when we add the variable via istiocontrolplane, somehow Jaeger tracing stops working and we cannot see the calls in Jaeger UI (besides, from logs we can see that delegate still does not work).
If I add the variable in both istiocontrolplane and istiod, somehow requests start going into some loops.
Is it possible to help understand why this happens, please?
Below you can find the VirtualService definition where we want to set the delegate. I have “hidden” some values with “dummy” values for security reasons:
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: vs-egress-dummy namespace: dummy spec: gateways: - gw-egress-dummy - mesh hosts: - dummy.host http: - match: - headers: x-dummy: exact: "true" name: dummy.name uri: prefix: /dummy-path delegate: name: vs-dummy namespace: dummy
Please note that when we change “delegate” with direct routing (with “route” below), the final destination rule is executed correctly and application defined at “dummy.host.destination” is executed successfully.:
route: - destination: host: dummy.host.destination port: number: 80
Also, VirtualService referenced in the delegate (vs-dummy) works correctly when invoked directly from another application in the mesh.