Skip to content

Add Envoy Gateway compatibility matrix#3841

Open
KUANPEIEN wants to merge 3 commits into
pluralsh:masterfrom
KUANPEIEN:add-envoy-gateway-compatibility
Open

Add Envoy Gateway compatibility matrix#3841
KUANPEIEN wants to merge 3 commits into
pluralsh:masterfrom
KUANPEIEN:add-envoy-gateway-compatibility

Conversation

@KUANPEIEN

Copy link
Copy Markdown
Contributor

Summary

Adds Envoy Gateway to the compatibility matrix coverage.

  • Adds static/compatibilities/envoy-gateway.yaml
  • Adds a scraper at utils/compatibility/scrapers/envoy-gateway.py
  • Registers envoy-gateway in static/compatibilities/manifest.yaml

Sources

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 with index.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.py
  • Parsed static/compatibilities/envoy-gateway.yaml and static/compatibilities/manifest.yaml with yaml.safe_load
  • Dry-ran the scraper with update_compatibility_info stubbed to verify it extracts 14 release rows from the official matrix
  • git diff --check

I did not run the full compatibility update locally because this machine does not have helm installed.

Checklist

  • I have added a meaningful title and summary to convey the impact of this PR to a user.
  • If required, I have updated the Plural documentation accordingly.
  • I have added tests to cover my changes.
  • I have deployed the agent to a test environment and verified that it works as expected (required only when changing agent code).

This contribution follows the compatibility bounty guidance in the repository README for a new application plus scraper.

@soffi-ai

soffi-ai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Soffi AI Summary

This 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 (utils/compatibility/scrapers/envoy-gateway.py) that fetches and parses the official Envoy Gateway compatibility matrix page, a pre-populated static data file (static/compatibilities/envoy-gateway.yaml) covering 14 releases from v0.2.0 through v1.8.0 with their respective Kubernetes version constraints and OCI image references, and an entry in static/compatibilities/manifest.yaml to register the new add-on with the rest of the system.

A notable implementation detail is that Envoy Gateway's Helm chart is distributed as an OCI artifact (oci://docker.io/envoyproxy/gateway-helm) rather than a classic HTTP Helm repository, which the scraper and data file accommodate explicitly.

Commits

Commit Summary
65273a9 Initial addition of the Envoy Gateway compatibility matrix: introduced the static YAML data file with 14 release entries, the Python scraper to keep it up to date, and registered the add-on in the manifest.
4e57238 Addressed review feedback on the initial Envoy Gateway submission (likely scraper robustness or YAML formatting corrections).
1a69551 Further review feedback addressed, finalizing the scraper and/or static data to meet repository conventions.

Deploy in Soffi


Updated: 2026-07-13 22:55 UTC

@greptile-apps

greptile-apps Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds Envoy Gateway to the compatibility matrix by introducing a static data YAML, a BeautifulSoup HTML scraper, and a manifest.yaml registration. The OCI chart URL (oci://docker.io/envoyproxy/gateway-helm) is handled correctly by the existing get_chart_images utility, and the scraper structure follows established patterns in the repo.

  • envoy-gateway.yaml seeds 14 release rows (v0.2–v1.8) with Kubernetes, Envoy Proxy, Rate Limit, and Gateway API compatibility data; the OCI helm chart location is correctly recorded.
  • envoy-gateway.py scrapes the official compatibility matrix page, parses the HTML table, and calls update_compatibility_info — no chart-version or summary logic is needed for this source.
  • All version values in the static YAML use minor-only format (1.8, 1.0, 0.6) instead of full semver; main.py writes these straight to static/compatibilities.yaml without normalisation, so release URLs resolve to v1.8 etc. which would 404 on GitHub before the scraper runs.

Confidence Score: 3/5

Safe 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. 1.8, 1.0) rather than full semver. main.py reads and republishes these values verbatim to static/compatibilities.yaml without normalisation, so every Envoy Gateway release link in the UI would point to a non-existent GitHub tag until the scraper runs and rewrites the file.

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.

Important Files Changed

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

Comment on lines +8 to +9
- version: 1.8
kube: ['1.35', '1.34', '1.33', '1.32']

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 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.

Comment on lines +57 to +63
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")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@KUANPEIEN

Copy link
Copy Markdown
Contributor Author

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants