-
Notifications
You must be signed in to change notification settings - Fork 468
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
Conformance display profiles on gatewayapi docs #2874
Conformance display profiles on gatewayapi docs #2874
Conversation
Hi @xtineskim. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Thanks @xtineskim! /ok-to-test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this PR, @xtineskim!
hack/mkdocs-copy-geps.py
Outdated
http_reports.drop_duplicates(subset='organization', inplace=True, keep='last') | ||
|
||
table = pandas.DataFrame(columns=http_reports['organization']) | ||
table.insert(loc=0, column='Features', value=httproute_extended_conformance_features_list) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be better use of the space if we come up with list of shortened feature names. Just removing the HttpRoute prefix will help. Maybe there could be a link from the shortened feature name to its reference in the API or a similar option.
For example, HTTPRouteBackendRequestHeaderModification
could be called Header Modification
and point to github.com/kubernetes-sigs/gateway-api/blob/e81022784e13b041a91f73725e9f3e393fccdbfc/conformance/utils/suite/features.go#L101
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This also helps if readers aren't familiar with the terms we use for our features.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But we can leave this for the next version, as we wouldn't want to hold the first iteration.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 on this being very nice to have but also not a blocker. If you run out of time to fit this into this PR, do you mind filing a follow up issue so we don't lose track of it?
@@ -38,7 +38,7 @@ profiles: | |||
- HTTPRouteRequestTimeout | |||
- HTTPRouteResponseHeaderModification | |||
- HTTPRouteSchemeRedirect | |||
name: HTTP | |||
name: HTTP |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If an implementation adds a broken-format report, will it mess up the display completely, or just for that implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good question - it will be missing from the display. For example, currently the generate_table
filters for the name "HTTP", and if that column is missing (the format results in the column being in an incorrect location in the dataframe), then it will be dropped. I guess it's somewhat of a check
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like @robscott's proposal to group reports by macro-categories (Gateway and Mesh) and have implementations on the y-axis. I see the additional problems we need to tackle here:
- for each Gateway API Version, an implementation can submit multiple reports for different implementation versions
- for each Gateway API version and implementation version, there can be multiple reports related to the modes
- an organization can have multiple projects (at Kong, for example, we have the Gateway Operator we'll add conformance for soon)
For this reason, I'd like to iterate on Rob's proposal and add the following details:
Gateway Profile
HTTPRoute
Org | Project | Version | Mode | HostRewrite | MethodMatching | MethodMatching | PathRedirect | ... |
---|---|---|---|---|---|---|---|---|
Kong | kubernetes-ingress-controller | v3.1.2 | default | ✅ | ❌ | ❌ | ❌ | |
Kong | project-2 | v1.2.3 | with-the-lot | ✅ | ✅ | ✅ | ✅ | |
EnvoyProxy | envoy-gateway | 0.6.0 | default | ✅ | ✅ | ✅ | ✅ |
Mesh Profile
HTTPRoute
...
I understand this decreases the readability of the table, but I didn't find a better way to include all the needed information.
@mlavacca thanks for your input! I think with @candita's comment about having abbreviated names (maybe not in this pr), I think it would be better. I'll make the changes to switch the axis Per your comments listed:
Currently I am just grabbing the latest report uploaded (nginx, contour both have 2 yaml reports, but i sort the versions and keep the latest one). I'm hoping that as new conformance reports are generated, all the profiles will be included in the latest report
Ah good catch with the mode, I forgot that use case (reference for others). I haven't seen any project report use that field either (yet). To address this, I can add a filter for mode for the loaded dataframes to look for the mode type, but also add in the default mode for current projects. Thanks for the reminder on this!
I'm assuming though that this will have it's own folder, and a different project name? And if the project name is different, that shouldn't be a problem 👍 |
@robscott thank you for the suggestions! 🤝 slowly addressing the above comments, and i like the proposal of having the Gateway Profile and the Mesh Profile.
|
This is actually one of my concerns with the current names of the conformance profiles. I think we may want to just settle on "mesh" and "gateway" conformance profiles and then have per-route details covered by the supported features. Interested in what @shaneutt and @mlavacca think about that though.
Yes, I think both Kuma and Istio support the Mesh and Gateway concepts in Gateway API, so they'd be covered under both sections. |
Yep, Kuma does indeed support HTTPRoute for both Mesh and Gateway! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for all the work on this @xtineskim! This is looking like it's really close, just a few more nits but otherwise LGTM.
site-src/implementation-table.md
Outdated
| kumahq | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | | ||
| nginxinc | :x: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | | ||
| projectcontour | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | | ||
| solo.io | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@xtineskim I think we might need to show both "Organization" and "Project" here for now. Otherwise we end up with incomplete information. For example, in this case, most people would want to know the product name ("Gloo Gateway"), while in the case of Kong above, the "Kubernetes Ingress Controller" product name is really not sufficient. Until we have a better solution in conformance reports, I think we'll just have to settle for reporting both.
@mlavacca Do you think it's worth adding a new field (or merging fields) in conformance reports to make this easier to handle? Maybe we should just have a single product name field that represents everything?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in the reports we already have organization
and project
, which if merged provide a unique tuple. Acutally, this is very related to my comment above: #2874 (review). I agree we should address both org+project and implementation version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gotcha, i'll add them in 👍
@@ -0,0 +1,25 @@ | |||
The following tables are populated from the conformance reports uploaded by project implementations. They are separated into the extended features that each project supports listed in their reports. | |||
|
|||
## Gateway Profile |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure where/how to fit this in, but we'll likely want to always support the current and previous version of Gateway API here. Maybe we need something like:
## v1.1
### Gateway
#### HTTPRoute
...
## v1.0
Admittedly a report for v1.1 hasn't merged yet, but that should happen relatively soon with #3025.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this could also be a followup item though if we can't get it in this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah i think i'd like to noodle on it a bit. I don't like the way i have the version handled, but maybe a way to have older pages potentially? 🤔
hack/mkdocs-copy-geps.py
Outdated
@@ -15,10 +15,109 @@ | |||
import shutil | |||
import logging | |||
from mkdocs import plugins | |||
import yaml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: I think this file should probably be renamed to represent the broader scope of the script.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
im thinking of putting this conformance report generation into it's own make-implementation-table.py
and have it as it's own hook. Thoughts??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM, thanks!
hack/mkdocs-copy-geps.py
Outdated
http_reports.drop_duplicates(subset='organization', inplace=True, keep='last') | ||
|
||
table = pandas.DataFrame(columns=http_reports['organization']) | ||
table.insert(loc=0, column='Features', value=httproute_extended_conformance_features_list) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 on this being very nice to have but also not a blocker. If you run out of time to fit this into this PR, do you mind filing a follow up issue so we don't lose track of it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @xtineskim, a couple tiny nits but otherwise LGTM.
site-src/implementation-table.md
Outdated
|
||
### HTTPRoute | ||
|
||
| Organization | project | version | HTTPRouteMethodMatching | HTTPRouteQueryParamMatching | HTTPRouteResponseHeaderModification | HTTPRouteBackendTimeout | HTTPRouteHostRewrite | HTTPRouteParentRefPort | HTTPRoutePathRedirect | HTTPRoutePathRewrite | HTTPRoutePortRedirect | HTTPRouteRequestMirror | HTTPRouteRequestMultipleMirrors | HTTPRouteRequestTimeout | HTTPRouteSchemeRedirect | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Would be nice if Project and Version were capitalized
hack/mkdocs-copy-geps.py
Outdated
@@ -15,10 +15,109 @@ | |||
import shutil | |||
import logging | |||
from mkdocs import plugins | |||
import yaml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM, thanks!
Thanks @xtineskim, this is a great addition! /lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: robscott, xtineskim The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
What type of PR is this?
/kind documentation
What this PR does / why we need it:
Related to #2550. tldr, we lack a way to quickly show different implementations of the Gateway API and their features. After trying various plugins for
mkdocs
, the most convenient was a markdown table that could be sorted based on columns. Not the most ideal experience, but it's a start for showing conformance profile reports on the gateway api siteWhich issue(s) this PR fixes:
#2550 (although this will need more iteration in the future.It's a start)
Fixes #
Does this PR introduce a user-facing change?: