Skip to content

Set support level to Core in the Gateway API Compatibility doc #860

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

Merged
merged 2 commits into from
Jul 13, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 62 additions & 50 deletions docs/gateway-api-compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,32 @@ This document describes which Gateway API resources NGINX Kubernetes Gateway sup

## Summary

| Resource | Support Status |
|-------------------------------------|---------------------|
| [GatewayClass](#gatewayclass) | Partially supported |
| [Gateway](#gateway) | Partially supported |
| [HTTPRoute](#httproute) | Partially supported |
| [TLSRoute](#tlsroute) | Not supported |
| [TCPRoute](#tcproute) | Not supported |
| [UDPRoute](#udproute) | Not supported |
| [ReferenceGrant](#referencegrant) | Supported |
| [Custom policies](#custom-policies) | Not supported |
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
| [GatewayClass](#gatewayclass) | Supported | Not supported | Not Supported | v1beta1 |
| [Gateway](#gateway) | Supported | Not supported | Not Supported | v1beta1 |
| [HTTPRoute](#httproute) | Supported | Partially supported | Not Supported | v1beta1 |
| [ReferenceGrant](#referencegrant) | Supported | N/A | Not Supported | v1beta1 |
| [Custom policies](#custom-policies) | Not supported | N/A | Not Supported | N/A |
| [TLSRoute](#tlsroute) | Not supported | Not supported | Not Supported | N/A |
| [TCPRoute](#tcproute) | Not supported | Not supported | Not Supported | N/A |
| [UDPRoute](#udproute) | Not supported | Not supported | Not Supported | N/A |

## Terminology

We use the following words to describe support status:
Gateway API features has three [support levels](https://gateway-api.sigs.k8s.io/concepts/conformance/#2-support-levels):
Core, Extended and Implementation-specific. We use the following terms to describe the support status for each level and
resource field:

- *Supported*. The resource or field is fully supported and conformant to the Gateway API specification.
- *Supported*. The resource or field is fully supported.
- *Partially supported*. The resource or field is supported partially or with limitations. It will become fully
supported in future releases.
- *Not supported*. The resource or field is not yet supported. It will become partially or fully supported in future
releases.

Note: it might be possible that NGINX Kubernetes Gateway will never support some resources and/or fields of the Gateway
API. We will document these decisions on a case by case basis.
> Note: it might be possible that NGINX Kubernetes Gateway will never support some resources and/or fields of the Gateway API. We will document these decisions on a case by case basis.

> NGINX Kubernetes Gateway doesn't support any features from the experimental release channel.

## Resources

Expand All @@ -37,10 +40,13 @@ the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/

### GatewayClass

> Status: Partially supported.
> Support Levels:
> - Core: Supported.
> - Extended: Not supported.
> - Implementation-specific: Not supported.

NGINX Kubernetes Gateway supports only a single GatewayClass resource configured via `--gatewayclass` flag
of the [static-mode](./cli-help.md#static-mode) command.
NGINX Kubernetes Gateway supports only a single GatewayClass resource configured via `--gatewayclass` flag of
the [static-mode](./cli-help.md#static-mode) command.

Fields:

Expand All @@ -57,11 +63,13 @@ Fields:

### Gateway

> Status: Partially supported.
> Support Levels:
> - Core: Supported.
> - Extended: Not supported.
> - Implementation-specific: Not supported.

NGINX Kubernetes Gateway supports only a single Gateway resource. The Gateway resource must reference NGINX Kubernetes
Gateway's corresponding GatewayClass.
See [static-mode](./cli-help.md#static-mode) command for more info.
Gateway's corresponding GatewayClass. See [static-mode](./cli-help.md#static-mode) command for more info.

Fields:

Expand All @@ -75,38 +83,37 @@ Fields:
* `tls`
* `mode` - partially supported. Allowed value: `Terminate`.
* `certificateRefs` - The TLS certificate and key must be stored in a Secret resource of
type `kubernetes.io/tls`. Only a single reference is supported. You must deploy the Secret before the
Gateway resource.
type `kubernetes.io/tls`. Only a single reference is supported.
* `options` - not supported.
* `allowedRoutes` - supported.
* `addresses` - not supported.
* `status`
* `addresses` - Pod IPAddress supported.
* `conditions` - Supported (Condition/Status/Reason):
* `conditions` - supported (Condition/Status/Reason):
* `Accepted/True/Accepted`
* `Accepted/True/ListenersNotValid`
* `Accepted/False/ListenersNotValid`
* `Accepted/False/Invalid`
* `Accepted/False/UnsupportedValue`: Custom reason for when a value of a field in a Gateway is invalid or not
* `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Gateway is invalid or not
supported.
* `Accepted/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting Gateway.
* `Accepted/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting Gateway.
NKG only supports a single Gateway.
* `Programmed/True/Programmed`
* `Programmed/False/Invalid`
* `Programmed/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting
* `Programmed/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting
Gateway. NKG only supports a single Gateway.
* `listeners`
* `name` - supported.
* `supportedKinds` - supported.
* `attachedRoutes` - supported.
* `conditions` - Supported (Condition/Status/Reason):
* `conditions` - supported (Condition/Status/Reason):
* `Accepted/True/Accepted`
* `Accepted/False/UnsupportedProtocol`
* `Accepted/False/InvalidCertificateRef`
* `Accepted/False/ProtocolConflict`
* `Accepted/False/UnsupportedValue`: Custom reason for when a value of a field in a Listener is invalid or
* `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Listener is invalid or
not supported.
* `Accepted/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting
* `Accepted/False/GatewayConflict` - custom reason for when the Gateway is ignored due to a conflicting
Gateway. NKG only supports a single Gateway.
* `Programmed/True/Programmed`
* `Programmed/False/Invalid`
Expand All @@ -118,7 +125,10 @@ Fields:

### HTTPRoute

> Status: Partially supported.
> Support Levels:
> - Core: Supported.
> - Extended: Partially supported.
> - Implementation-specific: Not supported.

Fields:

Expand Down Expand Up @@ -149,34 +159,24 @@ Fields:
* `Accepted/False/NoMatchingListenerHostname`
* `Accepted/False/NoMatchingParent`
* `Accepted/False/NotAllowedByListeners`
* `Accepted/False/UnsupportedValue`: Custom reason for when the HTTPRoute includes an invalid or unsupported
value.
* `Accepted/False/InvalidListener`: Custom reason for when the HTTPRoute references an invalid listener.
* `Accepted/False/GatewayNotProgrammed`: Custom reason for when the Gateway is not Programmed. HTTPRoute may
be valid and configured, but will maintain this status as long as the Gateway is not Programmed.
* `Accepted/False/UnsupportedValue` - custom reason for when the HTTPRoute includes an invalid or
unsupported value.
* `Accepted/False/InvalidListener` - custom reason for when the HTTPRoute references an invalid listener.
* `Accepted/False/GatewayNotProgrammed` - custom reason for when the Gateway is not Programmed. HTTPRoute
may be valid and configured, but will maintain this status as long as the Gateway is not Programmed.
* `ResolvedRefs/True/ResolvedRefs`
* `ResolvedRefs/False/InvalidKind`
* `ResolvedRefs/False/RefNotPermitted`
* `ResolvedRefs/False/BackendNotFound`
* `ResolvedRefs/False/UnsupportedValue`: Custom reason for when one of the HTTPRoute rules has a backendRef
* `ResolvedRefs/False/UnsupportedValue` - custom reason for when one of the HTTPRoute rules has a backendRef
with an unsupported value.

### TLSRoute

> Status: Not supported.

### TCPRoute

> Status: Not supported.

### UDPRoute

> Status: Not supported.

### ReferenceGrant

> Status: Supported.
> Support Level: Core
> Support Levels:
> - Core: Supported.
> - Extended: N/A.
> - Implementation-specific: N/A

Fields:

Expand All @@ -190,6 +190,18 @@ Fields:
* `kind` - supports `Gateway` and `HTTPRoute`.
* `namespace`- supported.

### TLSRoute

> Status: Not supported.

### TCPRoute

> Status: Not supported.

### UDPRoute

> Status: Not supported.

### Custom Policies

> Status: Not supported.
Expand Down