Skip to content
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

Istio Ambient L7 telemetry #7345

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft

Istio Ambient L7 telemetry #7345

wants to merge 7 commits into from

Conversation

josunect
Copy link
Contributor

@josunect josunect commented May 7, 2024

Describe the change

  • Use reporter="waypoint" in the queries for the ns graph
  • Remove edges also when hiding waypoint to prevent error

image

TODO:

  • Response time
  • Throughput

Steps to test the PR

Install istio Ambient 1.22:

  1. Install Istio:
    istio/install-istio-via-istioctl.sh -c kubectl -cp ambient
  2. Install Kiali
  3. Install bookinfo as Ambient namespace with a Waypoint proxy:
    istio/install-bookinfo-demo.sh -c kubectl -ai false -tg -w true

Automation testing

Issue reference

Fixes #7344

@josunect josunect self-assigned this May 8, 2024
@josunect josunect added enhancement This is the preferred way to describe new end-to-end features. ambient Related to Istio Ambient Mesh sub-task Ties an issue to an epic labels May 8, 2024
@josunect
Copy link
Contributor Author

josunect commented May 29, 2024

It would be better for the Telemetry to check if the namespace is Ambient, and just prepare the query for Ambient. But, what if this is applied to just the pod?

  • Some queries are done for namespace?
  • A namespace can be Ambient, but a pod can override the Ambient config.
  • A namespace can be Ambient and with Sidecars, Sidecars will have preference.
  • Many checks -> Might affect performance?

@jshaughn
Copy link
Collaborator

jshaughn commented May 30, 2024

Hi @josunect , I'm using Istio 1.22.0 and the test setup didn't quite work for me. I performed "install bookinfo as Ambient namespace with a Waypoint proxy:
> istio/install-bookinfo-demo.sh -c kubectl -ai false -tg -w true

and it installed a waypoint but none of the bookinfo traffic generated L7 metrics. I think the command in the hackscript needs to include the --enroll-namespace arg:
> istioctl x waypoint apply --enroll-namespace --wait --namespace bookinfo

After this I did get some waypoint telemetry, but only for the traffic involving productpage, for for the traffic between the reviews and ratings services. Productpage does have a virtual service (L7 feature), I'm not sure if that has something to do with it. Anyway, your graph shows that http traffic, so I'm not sure what you did differently.

Actually, I just had a convo on the #ambient slack channel and it seems like a mystery. I'll try again tomorrow... Were you using minikube?

It would be better for the Telemetry to check if the namespace is Ambient, and just prepare the query for Ambient. But, what if this is applied to just the pod?

Originally, I too thought we would be able to make this sort of optimization. But because of the design flexibility that you mention above, I don't think it's possible. I think it's only possible if maybe Kiali is told that the mesh is "ambient only", or something like that, and then we can assume that we don't have any sidecar telem.

@josunect
Copy link
Contributor Author

josunect commented May 31, 2024

Hi @josunect , I'm using Istio 1.22.0 and the test setup didn't quite work for me. I performed "install bookinfo as Ambient namespace with a Waypoint proxy: > istio/install-bookinfo-demo.sh -c kubectl -ai false -tg -w true

and it installed a waypoint but none of the bookinfo traffic generated L7 metrics. I think the command in the hackscript needs to include the --enroll-namespace arg: > istioctl x waypoint apply --enroll-namespace --wait --namespace bookinfo

After this I did get some waypoint telemetry, but only for the traffic involving productpage, for for the traffic between the reviews and ratings services. Productpage does have a virtual service (L7 feature), I'm not sure if that has something to do with it. Anyway, your graph shows that http traffic, so I'm not sure what you did differently.

Actually, I just had a convo on the #ambient slack channel and it seems like a mystery. I'll try again tomorrow... Were you using minikube?

It would be better for the Telemetry to check if the namespace is Ambient, and just prepare the query for Ambient. But, what if this is applied to just the pod?

Originally, I too thought we would be able to make this sort of optimization. But because of the design flexibility that you mention above, I don't think it's possible. I think it's only possible if maybe Kiali is told that the mesh is "ambient only", or something like that, and then we can assume that we don't have any sidecar telem.

Thanks, @jshaughn I have updated the hack script for bookinfo.
Yes, I was testing with minikube. It looks there is a traffic issue with kind? Traffic generator returns 503. This is what I see:

image

From the logs:
503 Service Unavailable

With kind and following the steps in https://istio.io/latest/docs/ambient/getting-started/, I have the graph:

image

@josunect
Copy link
Contributor Author

josunect commented May 31, 2024

@jshaughn I've done some changes in the bookinfo installation script for Ambient:

  • Uses GW api gateway instead of gateway
  • Installs GW API CRDs if Ambient is enabled (In previous version they were installed just for creating the waypoint proxy)
  • Remove the Authorization policy (It was preventing to access the service and it is not needed by default)

image

(The command should be the same, install-bookinfo-demo.sh -c kubectl -ai false -tg -w true)

@jmazzitelli
Copy link
Collaborator

This looks good except for one thing that may or may not be correct. I don't know. Take a look at this screencast - when I hover over some of the edges, almost the entire graph goes into "focus" (graying out only small parts of the graph).

Screencast.from.2024-05-31.10-51-08.webm

This is when Waypoint proxies are displayed. When waypoints are not displayed, the focus looks correct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ambient Related to Istio Ambient Mesh enhancement This is the preferred way to describe new end-to-end features. sub-task Ties an issue to an epic
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Istio Ambient Telemetry for Istio 1.22
3 participants