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
Kiali render hostnames as individual service instead of serviceentry as whole #6962
Comments
I confirm seeing SE per host in the graph, this is because Istio is generating a Service per SE host in Service Registry. |
@hhovsepy but it does not happen everytime, sometime i get the visualisation that i want where it's shown as a single entity. |
Seems like Kiali would need a new functionality in a Graph. A checkbox to merge all URLs of the ServiceEntry into one or show it separately. |
@hhovsepy After thinking about this I think this should not be an option, I think the requested behavior is the intended behavior, and only a single ServiceEntry node should exist for all of the hosts. And so, this does seem like a bug, and actually a regression, as I believe the code intends to consolidate into a single node. Note that this is still namespace specific, so if a ServiceEntry is exported to multiple namespaces, a separate ServiceEntry node could show up in each of the namespaces, because Kiali treats each export as a separate SE. |
Yes, that's what i wanted to point out
Yes, currently it shows graph in two ways. They are seen randomly on page refresh.
I would actually love if we can have a 3rd way where we see 1 symbol per SE but globally instead of showing at namespace level. Anyway, even the expected behaviour[1], works completely fine. If someone can help me find the piece od code that renders the graph i might be able to figure out the fix. |
This has been requested before, but sort of breaks the model, so unlikely to do this option. |
@im-Amitto Just to confirm, when you see the bad behavior, the many nodes are actually service nodes (triangles), not service entry nodes (5 sides), right? |
yes, exactly |
I have had the same behavior even when my SE only has 1 host in it. Sometimes I see the SE icon, other times I just see a triangle and the host listed out. I think there are 2 issues in play, both related to how Kiali displays ServiceEntries
|
I'm seeing the behavior, very strange... Update: I see the problem, it stems from recent multi-cluster work and it is due to some random ordering of nodes, so that is why it is intermittent. Still figuring out a solution, but should have a fix fairly soon. |
- I'm not sure if telemetry changed recently but when making requests of a service entry the telemetry may not include any cluster or namespace information, just the destination_service_name (i.e. the requested host) - The subsequent "unknown" values for cluster and namespace can not be used to help fetch the ServiceEntry config for matching. Depending on random node ordering, sometimes we would "get lucky" and fetch the needed information, but the whole approach was inherently flawed. - ServiceEntry definitions are really used by the source node, to properly route out of the mesh, and so the SE definition should really be fetched using the source node's cluster+namespace information (or so I currently think). This PR makes that change. - The PR also adds a useful optimization that can speed up this appender; or namespaces that only have injected service nodes we will no longer bother with loading SE definitions or doing the matching, because injected service nodes are not going to be converted to a ServiceEntry. kiali#6962
- I'm not sure if telemetry changed recently but when making requests of a service entry the telemetry may not include any cluster or namespace information, just the destination_service_name (i.e. the requested host) - The subsequent "unknown" values for cluster and namespace can not be used to help fetch the ServiceEntry config for matching. Depending on random node ordering, sometimes we would "get lucky" and fetch the needed information, but the whole approach was inherently flawed. - ServiceEntry definitions are really used by the source node, to properly route out of the mesh, and so the SE definition should really be fetched using the source node's cluster+namespace information (or so I currently think). This PR makes that change. - The PR also adds a useful optimization that can speed up this appender; or namespaces that only have injected service nodes we will no longer bother with loading SE definitions or doing the matching, because injected service nodes are not going to be converted to a ServiceEntry. kiali#6962
- I'm not sure if telemetry changed recently but when making requests of a service entry the telemetry may not include any cluster or namespace information, just the destination_service_name (i.e. the requested host) - The subsequent "unknown" values for cluster and namespace can not be used to help fetch the ServiceEntry config for matching. Depending on random node ordering, sometimes we would "get lucky" and fetch the needed information, but the whole approach was inherently flawed. - mesh_external ServiceEntry definitions are really used by the source node, to properly route out of the mesh, and so the SE definition needs to be fetched using the source node's cluster+namespace information. This PR makes that change. It also better handles the mesh_internal scenario, which *does* use the cluster+namespace provided. - The PR also adds a useful optimization that can speed up this appender; for namespaces that only have injected service nodes we will no longer bother with loading SE definitions or doing the matching, because injected service nodes are not going to be converted to a ServiceEntry. - The tests are updated to not use an "unknown" node as the SE requestor, that is not a valid scenario. Also, fixed an issue in the mocking of one test. kiali#6962
- I'm not sure if telemetry changed recently but when making requests of a service entry the telemetry may not include any cluster or namespace information, just the destination_service_name (i.e. the requested host) - The subsequent "unknown" values for cluster and namespace can not be used to help fetch the ServiceEntry config for matching. Depending on random node ordering, sometimes we would "get lucky" and fetch the needed information, but the whole approach was inherently flawed. - mesh_external ServiceEntry definitions are really used by the source node, to properly route out of the mesh, and so the SE definition needs to be fetched using the source node's cluster+namespace information. This PR makes that change. It also better handles the mesh_internal scenario, which *does* use the cluster+namespace provided. - The PR also adds a useful optimization that can speed up this appender; for namespaces that only have injected service nodes we will no longer bother with loading SE definitions or doing the matching, because injected service nodes are not going to be converted to a ServiceEntry. - The tests are updated to not use an "unknown" node as the SE requestor, that is not a valid scenario. Also, fixed an issue in the mocking of one test. #6962
A fix has been merged and it will be included in Kiali 1.79, due for release Jan 22. If you need a backport to an existing version, please let me know. |
No urgency, but would love to understand how to backport stuff to an existing version. |
@im-Amitto Backporting typically consists of using a git cherry-pick of a merged PR from the current version to an older version. If it doesn't map perfectly then manual edits are needed to make sure the change is compatible. Once backported we have defined some git actions to release a new patch version upstream. |
@im-Amitto , no, I don't think recreating the service entries would matter. @lonnixrdc , have you been able to try out v1.79? |
@im-Amitto Can you try it with and without the "Show Service Nodes" Graph Display option enabled? If you are still having a problem we may need to start the debugging process again, as I'm wondering if it's the same issue. Prior to the fix it was easily reproducible, but after the fix were were unable to reproduce on our side. |
@im-Amitto @lonnixrdc , anything else to report here, I'm not sure what could still be the issue. |
@jshaughn I debugged it a little more to be sure that i am not missing anything on my end but everything seems to be correct. Config for service entry with reference to multiple domains Graph is still showing individual external service in the graph |
@im-Amitto Thanks for the feedback, I will look into this again. Just to be clear, the previous behavior would "flip-flop" between the single node and the multiple nodes. Is that still true, or now do you always see expanded number of nodes? |
@jshaughn Correct, since the upgrade i have not seen the single node even once. |
@im-Amitto Just to confirm, the ServiceEntry in your screenshot is still defined as in the original description? I see above that the
Then there could be an issue. I just need to make sure that the One other test you could maybe try, just for sanity, would be to define the |
@jshaughn Looks like we are on correct track
Aware about this, we are not using it in any service entry.
What worked
What did not
I can't really use it as the SE are pretty common among different micro-service around the namespaces. |
@im-Amitto OK, thanks for the quick feedback. It seems Kiali has an issue dealing with |
@im-Amitto I have opened #7153 for this new problem. |
Describe the bug
Loom Video :-> https://www.loom.com/share/2c1906c2ffe042dcbf6d96ca9e4f7ef4
A serviceentry is supposed to be visualised as single icon in graph does not matter how many number of hostnames it has in it.
It should be shown as a single icon but kiali is showing 1 service icon per hostname. It does not happen always. It does show the service entry as a single icon sometime but goes back to showing one icon per hostname on refresh.
Expected Behavior
Single icon for a single service entry
What are the steps to reproduce this bug?
Environment
The text was updated successfully, but these errors were encountered: