Skip to content

gateway-api: GRPCRoute silently excluded from Envoy config when listener has explicit allowedRoutes.kinds #44824

@eufriction

Description

@eufriction

Is there an existing issue for this?

  • I have searched the existing issues

Version

equal or higher than v1.19.1 and lower than v1.20.0

What happened?

getGatewayKindForObjectinoperator/pkg/gateway-api/helpers.gois missing acase *gatewayv1.GRPCRoute. When a listener sets allowedRoutes.kindsexplicitly (e.g. bothHTTPRouteandGRPCRoute), isKindAllowedcalls this function and gets back"Unknown"for any GRPCRoute, so the route is silently excluded from the generatedCiliumEnvoyConfig. Traffic fails. The route status misleadingly shows Accepted: True`.

How can we reproduce the issue?

  1. Create a Gateway listener with allowedRoutes.kinds listing both HTTPRoute and GRPCRoute.
  2. Attach a GRPCRoute to it. The route status shows accepted but kubectl get ciliumenvoyconfig -A -o yaml contains no gRPC routes.

Repository to reproduce with 1.19.1 running on kind may be found here: https://github.com/eufriction/k8s-cilium-gapi

Only the manifests needed are here: https://github.com/eufriction/k8s-cilium-gapi/tree/main/scenarios/23-http-grpc-shared-port-allowed-routes

Cilium Version

1.19.1

Kernel Version

Linux k8s-cilium-gapi-worker3 6.12.72-linuxkit #1 SMP Wed Feb 25 13:21:17 UTC 2026 aarch64 aarch64 aarch64 GNU/Linux

Kubernetes Version

❯ kubectl version
Client Version: v1.35.2
Kustomize Version: v5.7.1
Server Version: v1.35.0

Regression

No response

Sysdump

No response

Relevant log output

Anything else?

No response

Cilium Users Document

  • Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.feature/k8s-gateway-apikind/bugThis is a bug in the Cilium logic.kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.needs/triageThis issue requires triaging to establish severity and next steps.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions