Add Envoy Gateway compatibility matrix#3841
Conversation
Soffi AI SummaryThis PR extends Plural Console's add-on compatibility coverage by onboarding Envoy Gateway as a tracked component. The motivation is to allow users to see which Envoy Gateway versions are compatible with which Kubernetes versions directly within the Console UI, following the repository's established compatibility bounty pattern. Three artifacts are added in concert: a Python scraper ( A notable implementation detail is that Envoy Gateway's Helm chart is distributed as an OCI artifact ( Commits
Updated: 2026-07-13 22:55 UTC |
Greptile SummaryAdds Envoy Gateway to the compatibility matrix by introducing a static data YAML, a BeautifulSoup HTML scraper, and a
Confidence Score: 3/5Safe to merge after fixing the abbreviated version values in the static YAML; the scraper and manifest changes are correct. The static YAML is checked in with minor-only version strings (e.g. static/compatibilities/envoy-gateway.yaml — version values should be full semver (1.8.0, 1.7.0, … 0.2.0) to match the actual GitHub tags.
|
| Filename | Overview |
|---|---|
| static/compatibilities/envoy-gateway.yaml | New compatibility data file for Envoy Gateway. Registers correct OCI helm URL and 14 release rows, but all version values are minor-only (e.g. 1.8, 1.0) rather than full semver (1.8.0, 1.0.0), which would produce broken GitHub release links before the scraper normalises them. |
| utils/compatibility/scrapers/envoy-gateway.py | New HTML scraper for the Envoy Gateway compatibility matrix. Logic and structure follow established scraper patterns. Minor robustness gap: only 2 of the 5 required column headers are validated before index() is called on all five. |
| static/compatibilities/manifest.yaml | Adds envoy-gateway to the top of the manifest names list; change is correct and minimal. |
Reviews (1): Last reviewed commit: "Add Envoy Gateway compatibility matrix" | Re-trigger Greptile
| - version: 1.8 | ||
| kube: ['1.35', '1.34', '1.33', '1.32'] |
There was a problem hiding this comment.
Abbreviated versions produce broken release URLs
Every version entry uses a minor-only value (e.g. 1.8, 1.0, 0.6). YAML parses these as floats, and after str() conversion the release_url template v{vsn} expands to v1.8, v1.0, etc. The actual GitHub tags are v1.8.0, v1.0.0, v0.6.0 (full semver). main.py reads the YAML as-is and writes it directly to static/compatibilities.yaml without passing through reduce_versions, so downstream consumers (the UI) receive the abbreviated strings and every "Release Notes" link 404s until the scraper runs and normalises them. All version values should use full semver (1.8.0, 1.7.0, … 0.2.0) to match the actual GitHub tags.
| return | ||
|
|
||
| gateway_idx = headers.index("Envoy Gateway version") | ||
| proxy_idx = headers.index("Envoy Proxy version") | ||
| rate_limit_idx = headers.index("Rate Limit version") | ||
| gateway_api_idx = headers.index("Gateway API version") | ||
| kube_idx = headers.index("Kubernetes version") |
There was a problem hiding this comment.
Unguarded
index() calls for three column headers
_find_compatibility_table only verifies that "Envoy Gateway version" and "Kubernetes version" are present before returning. The three subsequent .index() calls for "Envoy Proxy version", "Rate Limit version", and "Gateway API version" are unguarded — if the Envoy Gateway site renames any of those columns the scraper raises an unhandled ValueError instead of printing a clean error and returning. Consider validating all five required headers inside _find_compatibility_table (or with an explicit check before the index lookups) and calling print_error + returning on failure.
| versions: | ||
| - version: 1.8.0 | ||
| kube: ['1.35', '1.34', '1.33', '1.32'] | ||
| requirements: |
There was a problem hiding this comment.
this isn't the right format for the requirements array, but we can just drop/leave empty for now.
| helm_repository_url: oci://docker.io/envoyproxy/gateway-helm | ||
| chart_name: gateway-helm | ||
| versions: | ||
| - version: 1.8.0 |
There was a problem hiding this comment.
we should be able to get image versions from the chart at the very least here, and i'm pretty sure the helpers also can work with oci to infer chart versions.
|
Hi, I addressed the review feedback in the latest commit by dropping the requirements array and adding chart/image version data from the OCI chart. Could you take another look when you have a chance? |
Summary
Adds Envoy Gateway to the compatibility matrix coverage.
static/compatibilities/envoy-gateway.yamlutils/compatibility/scrapers/envoy-gateway.pyenvoy-gatewayinstatic/compatibilities/manifest.yamlSources
Notes
The official Envoy Gateway Helm chart is published as an OCI chart at
oci://docker.io/envoyproxy/gateway-helm, not as a classic HTTP Helm repository withindex.yaml. This PR records the OCI chart location and scrapes the official compatibility matrix for Kubernetes, Envoy Proxy, Rate Limit, and Gateway API version compatibility.Test Plan
python -m py_compile utils/compatibility/scrapers/envoy-gateway.pystatic/compatibilities/envoy-gateway.yamlandstatic/compatibilities/manifest.yamlwithyaml.safe_loadupdate_compatibility_infostubbed to verify it extracts 14 release rows from the official matrixgit diff --checkI did not run the full compatibility update locally because this machine does not have
helminstalled.Checklist
This contribution follows the compatibility bounty guidance in the repository README for a new application plus scraper.