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

ZoneIngress view to see envoy data #2976

Closed
lahabana opened this issue Sep 19, 2024 · 2 comments
Closed

ZoneIngress view to see envoy data #2976

lahabana opened this issue Sep 19, 2024 · 2 comments
Assignees
Labels
kind/design Design doc or related triage/accepted The issue was reviewed and is complete enough to start working on it
Milestone

Comments

@lahabana
Copy link
Contributor

lahabana commented Sep 19, 2024

Description

This should only be the case when using MeshService.

We are now able to show by reading the config the services behind a zoneIngress.
We should be able to show a view similar to the dataplane view with stats etc.

This would make it a lot easier for users to figure if the traffic is going cross zone or not.

Have a view similar to the dataplane view.
Some things worth noting is that ingress works a bit differently (it has a single inbound listener but many outbound clusters).

Let's have this only work when using MeshService: Exclusive .
@lahabana to add an example conf and more info

@lahabana lahabana added triage/pending This issue will be looked at on the next triage meeting kind/feature New feature labels Sep 19, 2024
@jakubdyszkiewicz jakubdyszkiewicz added triage/accepted The issue was reviewed and is complete enough to start working on it kind/design Design doc or related and removed triage/pending This issue will be looked at on the next triage meeting kind/feature New feature labels Sep 23, 2024
@johncowen johncowen added this to the backlog milestone Nov 4, 2024
@lahabana lahabana modified the milestones: backlog, 2.10.x Nov 6, 2024
@lahabana lahabana changed the title ZoneIngress view to see stats ZoneIngress view to see envoy data Nov 6, 2024
@lahabana
Copy link
Contributor Author

lahabana commented Nov 27, 2024

An ingress config dump.

Useful bits:

jq '.configs[].dynamic_active_clusters' ingress.json where we have a list of clusters with name: <a unique service identifier like: default_demo-app-v1_kuma-demo_default_msvc_5050>

jq '.configs[].dynamic_listeners' ingress.json where there's 1 with name: inbound:<ip>:<port> it's the only "inbound" and has a list of matches for each cluster.

So If I scheme this we should have a dp view a bit like:

flowchart LR

inbound("`inbound:<ip>:<port>`")
cluster1("`<mesh>_cluster1_<namespace>_<zone>_msvc|extsvc|mmzsvc_<port>`")
cluster2("`<mesh>_cluster2_<namespace>_<zone>_msvc|extsvc|mmzsvc_<port>`")

inbound-->cluster1
inbound-->cluster2
Loading

johncowen added a commit that referenced this issue Dec 9, 2024
We have a new task to add some of the traffic visualization and envoy
debug information over in Zones for ZoneProxies
(#2976).

Zone Proxies (Ingresses/Egresses) are more or less just Dataplanes, or
maybe better said just Envoy instances.

It's maybe better to think of a Zone Proxy as a Kuma thing that is
essentially an Envoy Instance and similarly a Dataplane as a Kuma thing
that is essentially an Envoy Instance.

Our current modules related to this are:

- `zone-ingresses`
- `zone-egresses`
- `data-planes`

and

- `connections`

Currently `data-planes` depends on `connections` for the traffic
functionality related to `inbounds` and `outbounds` (a.k.a `'bounds`,
a.k.a. `connections`)

You can kinda see that `zones-'gresses` should also depend on
`connections`, but I think its further than that.

---

There is a lot of older code from before we made `connections` that is
currently in `data-planes`. This is functionality/views for `XDS
Configuration`, `Stats` and `Clusters`.

We also have almost identical code in `zones-*gresses` for
functionality/views `XDS Configuration`, `Stats` and `Clusters`.

This functionality/views for `XDS Configuration`, `Stats` and `Clusters`
should therefore be part of `connections` (a.k.a. "the envoy related
stuff") and we reuse that for all modules that need it (similar to how
we did `subscriptions`)

This gives us something like:

- `zone-ingresses` depends on `connections` 
- `zone-egresses` depends on `connections` 
- `data-planes` depends on `connections` 

Instead of:

- `zone-ingresses` has its own stuff to display Envoy things 
- `zone-egresses` has its own stuff to display Envoy things 
- `data-planes` depends on `connections` 

This PR moves any DataSource `sources` related to `stats`, `xds` or
`clusters` over to `connections`.

I also tried moving the Views in this PR, but it was so frustratingly
difficult and finickity to do because of the way we "flatly" structure
and "overly" name our route files in a very inconsistent and error prone
way that I pulled it back out and plan to PR that separately. I'll have
more to say on this at some point and will probably link back here.

---

Working towards #2976

Signed-off-by: John Cowen <[email protected]>
@johncowen
Copy link
Contributor

Closed by #3296, #3321 contains followup work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/design Design doc or related triage/accepted The issue was reviewed and is complete enough to start working on it
Projects
None yet
Development

No branches or pull requests

3 participants