From a86b038f1e2d8781918cc1ef653922809a18dc76 Mon Sep 17 00:00:00 2001 From: Joel Roberts Date: Thu, 20 Jun 2024 17:12:11 -0600 Subject: [PATCH] Add Backend Protocol Section to implementators guide #2453 --- site-src/guides/implementers.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/site-src/guides/implementers.md b/site-src/guides/implementers.md index eed5e62ead..653c770698 100644 --- a/site-src/guides/implementers.md +++ b/site-src/guides/implementers.md @@ -355,3 +355,35 @@ or both. Implementations that support cross-namespace references MUST watch ReferenceGrant and reconcile any ReferenceGrant that points to an object that's referred to by an in-scope Gateway API object. + +## Backend Protocol + +Not all implementations of Gateway API support automatic protocol selection. In some cases protocols are disabled without an explicit opt-in. + +When a Route's backend references a Kubernetes Service, application developers can specify the protocol using ServicePort appProtocol field. + +Reference [Backend Protocol Selection](https://gateway-api.sigs.k8s.io/guides/backend-protocol/) within the user guide. + +### Supporting Protocols + +If a Route is not able to send traffic to the backend using the specified protocol then the backend is considered invalid. Implementations MUST set `ResolvedRefs` condition to `False` with the Reason `UnsupportedProtocol`. + +Implementations MAY support the following combinations below: + +ServicePort Protocol | ServicePort AppProtocol | Route Type | Supported +-|-|-|- +`TCP` | `kubernetes.io/h2c` | `GRPCRoute` | Yes [1] +`TCP` | `kubernetes.io/h2c` | `HTTPRoute` | Yes +`TCP` | `kubernetes.io/ws` | `HTTPRoute` | Yes +`TCP` | `kubernetes.io/wss` | `TLSRoute` | Yes + +1. GRPC works over h2c - so a GRPCRoute should be able to connect to an h2c backend + +Implementations MAY support the following combinations below: + +ServicePort Protocol | ServicePort AppProtocol | Route Type | Supported +-|-|-|- +ServicePort Protocol | ServicePort AppProtocol | Route Type | Supported +`TCP` | `kubernetes.io/wss` | `HTTPRoute` | Conditional [1] + +1. Only if there is a corresponding `BackendTLSPolicy` - see [GEP-1897](/geps/gep-1897) \ No newline at end of file