-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Request Headers Route Rule with composite services does not work #1380
Comments
@my3sons please try 0.8 and let us knwo if this issue persists. |
Hello Shriram @rshriram , I did retest this scenario with 0.8 and unfortunately, the issue still seems to persist. Below are the VirtualService configs for both my Composite (foo) and atomic (bar). When I send a request with header client-id:esp, the request gets to the composite fine, but the call to the atomic returns 404. I did check the istio-proxy config for my composite and I see the header match rule in there for bar and it all looks good. I am guessing that the header is still not being passed. Is there any easy way to debug this from the composite's proxy?
|
@my3sons It's quite difficult to track your issue as your foo service always return 404 even when calling it from within the mesh and the resources you shared doesn't match. Can you upload the full yamls for the app and the routing that you are trying to use? Also, when you access the |
@ymesika Hi Yossi, I am not sure what you mean by the resources I shared don't match, but anyways I have uploaded all my yamls, they should be pretty self-explanatory, but please reach out if you have any questions. With respect to service bar, in my example, bar would never be called from outside the cluster, it would only be called by foo. FWIW, if I simply alter bar-vs.yaml to just route to destination bar (without client-id header), then when I call foo, I get back a successful response from bar. |
This issue has been automatically marked as stale because it has not had activity in the last 90 days. It will be closed in the next 30 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions. |
@ayj commented on Mon Oct 16 2017
@my3sons commented on Sun Oct 15 2017
Is this a BUG or FEATURE REQUEST?:
BUG
Did you review existing epics or issues to identify if this already being worked on? (please try to add the correct labels and epics):
Bug:
Y
What Version of Istio and Kubernetes are you using, where did you get Istio from, Installation details
Is Istio Auth enabled or not ?
NO AUTH
What happened:
I have a composite microservice (foobar) that is calling 2 nested atomic services (foo and bar) and all 3 services are part of my istio service mesh. I set up a Route Rule (see below) with a destination of bar and a match configuration based on source and request header. I am expecting that if I send a curl request to my ingress controller such as the following:
curl -s http://10.111.233.201:80/foobar --header "clientid:esp"
I should see that the http request from foobar to bar will be directed to v2 of bar. However, I am unable to ever get that match rule to work. I have tried making curl requests directly to ingress controller, as well as by getting a shell into one of the other pods (e.g. foo or bar) and submitting request from there, but I get the same outcome.
If I remove the request headers rule and just go with the match on source, the route rule works as expected. I am assuming that the request headers are not being passed from foobar down to bar via Envoy?
The actual implementation of my services is Java and foobar is making http requests to foo and bar using Spring RestTemplate. The urls that I have configured for those http calls are http://foo:8080/foo and http://bar:8080/bar respectively (see foobar.yaml below for my service configs).
As I have mentioned above, all the route rules I have set up previously based on source and/or version from foobar to the nested services have all worked as expected. It is just the request header based rules that seem to not be working.
It should be noted that if I set up a similar rule (using request headers) on one of the atomic services, everything works as expected.
My Route Rule
foobar.yaml
The text was updated successfully, but these errors were encountered: