Skip to content

Commit 041f24f

Browse files
authored
Restructure, reformat and rewrite API Compatibility Documentation (#1337)
Restructure, reformat and rewrite API Compatibility Documentation This commit makes a few changes to increase readability: - The table format from the summary is re-used for individual resources - The order of resources is changed to match the API specification - Capilisation and other style concerns have been standardised - Text has been rewritten for conciseness where possible I considered linking to the API specification sections to match the resources, but I noticed that they were versioned, which could possibly create issues for us in managing drift.
1 parent 21a2507 commit 041f24f

File tree

1 file changed

+138
-111
lines changed

1 file changed

+138
-111
lines changed

site/content/overview/gateway-api-compatibility.md

Lines changed: 138 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,37 @@ docs: "DOCS-000"
1111
{{< bootstrap-table "table table-striped table-bordered" >}}
1212
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
1313
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
14-
| [GatewayClass](#gatewayclass) | Supported | Not supported | Not Supported | v1 |
15-
| [Gateway](#gateway) | Supported | Not supported | Not Supported | v1 |
16-
| [HTTPRoute](#httproute) | Supported | Partially supported | Not Supported | v1 |
17-
| [ReferenceGrant](#referencegrant) | Supported | N/A | Not Supported | v1beta1 |
18-
| [Custom policies](#custom-policies) | Not supported | N/A | Not Supported | N/A |
19-
| [TLSRoute](#tlsroute) | Not supported | Not supported | Not Supported | N/A |
20-
| [TCPRoute](#tcproute) | Not supported | Not supported | Not Supported | N/A |
21-
| [UDPRoute](#udproute) | Not supported | Not supported | Not Supported | N/A |
14+
| [Gateway](#gateway) | Supported | Not supported | Not supported | v1 |
15+
| [GatewayClass](#gatewayclass) | Supported | Not supported | Not supported | v1 |
16+
| [HTTPRoute](#httproute) | Supported | Partially supported | Not supported | v1 |
17+
| [ReferenceGrant](#referencegrant) | Supported | N/A | Not supported | v1beta1 |
18+
| [TLSRoute](#tlsroute) | Not supported | Not supported | Not supported | N/A |
19+
| [TCPRoute](#tcproute) | Not supported | Not supported | Not supported | N/A |
20+
| [UDPRoute](#udproute) | Not supported | Not supported | Not supported | N/A |
21+
| [Custom policies](#custom-policies) | Not supported | N/A | Not supported | N/A |
2222
{{< /bootstrap-table >}}
2323

24+
---
25+
2426
## Terminology
2527

26-
Gateway API features has three [support levels](https://gateway-api.sigs.k8s.io/concepts/conformance/#2-support-levels):
27-
Core, Extended and Implementation-specific. We use the following terms to describe the support status for each level and
28-
resource field:
28+
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:
2929

30-
- *Supported*. The resource or field is fully supported.
31-
- *Partially supported*. The resource or field is supported partially or with limitations. It will become fully
30+
- _Supported_. The resource or field is fully supported.
31+
- _Partially supported_. The resource or field is supported partially, with limitations. It will become fully
3232
supported in future releases.
33-
- *Not supported*. The resource or field is not yet supported. It will become partially or fully supported in future
33+
- _Not supported_. The resource or field is not yet supported. It will become partially or fully supported in future
3434
releases.
3535

36-
> Note: it might be possible that NGINX Gateway Fabric will never support some resources
37-
> and/or fields of the Gateway API. We will document these decisions on a case by case basis.
38-
>
39-
> NGINX Gateway Fabric doesn't support any features from the experimental release channel.
40-
41-
## Resources
42-
43-
Below we list the resources and the support status of their corresponding fields.
36+
{{< note >}} It's possible that NGINX Gateway Fabric will never support some resources or fields of the Gateway API. They will be documented on a case by case basis. NGINX Gateway Fabric doesn't support any features from the experimental release channel. {{< /note >}}
4437

45-
For a description of each field, visit
46-
the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/).
47-
48-
### GatewayClass
38+
---
4939

50-
> Support Levels:
51-
>
52-
> - Core: Supported.
53-
> - Extended: Not supported.
54-
> - Implementation-specific: Not supported.
40+
## Resources
5541

56-
NGINX Gateway Fabric supports only a single GatewayClass resource configured via `--gatewayclass` flag of
57-
the [static-mode](./cli-help.md#static-mode) command.
42+
Each resource below includes the support status of their corresponding fields.
5843

59-
Fields:
44+
For a description of each field, visit the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/).
6045

6146
- `spec`
6247
- `controllerName` - supported.
@@ -72,61 +57,59 @@ Fields:
7257
- `SupportedVersion/True/SupportedVersion`
7358
- `SupportedVersion/False/UnsupportedVersion`
7459

60+
---
61+
7562
### Gateway
7663

77-
> Support Levels:
78-
>
79-
> - Core: Supported.
80-
> - Extended: Partially supported.
81-
> - Implementation-specific: Not supported.
64+
{{< bootstrap-table "table table-striped table-bordered" >}}
65+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
66+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
67+
| Gateway | Supported | Not supported | Not supported | v1 |
68+
{{< /bootstrap-table >}}
8269

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

86-
Fields:
72+
See the [static-mode]({{< relref "/reference/cli-help.md#static-mode">}}) command for more information.
73+
74+
**Fields**:
8775

8876
- `spec`
89-
- `gatewayClassName` - supported.
77+
- `gatewayClassName`: Supported.
9078
- `listeners`
91-
- `name` - supported.
92-
- `hostname` - supported.
93-
- `port` - supported.
94-
- `protocol` - partially supported. Allowed values: `HTTP`, `HTTPS`.
79+
- `name`: Supported.
80+
- `hostname`: Supported.
81+
- `port`: Supported.
82+
- `protocol`: Partially supported. Allowed values: `HTTP`, `HTTPS`.
9583
- `tls`
96-
- `mode` - partially supported. Allowed value: `Terminate`.
97-
- `certificateRefs` - The TLS certificate and key must be stored in a Secret resource of
98-
type `kubernetes.io/tls`. Only a single reference is supported.
99-
- `options` - not supported.
100-
- `allowedRoutes` - supported.
101-
- `addresses` - not supported.
84+
- `mode`: Partially supported. Allowed value: `Terminate`.
85+
- `certificateRefs` - The TLS certificate and key must be stored in a Secret resource of type `kubernetes.io/tls`. Only a single reference is supported.
86+
- `options`: Not supported.
87+
- `allowedRoutes`: Supported.
88+
- `addresses`: Not supported.
10289
- `status`
103-
- `addresses` - partially supported. LoadBalancer and Pod IP.
104-
- `conditions` - supported (Condition/Status/Reason):
90+
- `addresses`: Partially supported (LoadBalancer and Pod IP).
91+
- `conditions`: Supported (Condition/Status/Reason):
10592
- `Accepted/True/Accepted`
10693
- `Accepted/True/ListenersNotValid`
10794
- `Accepted/False/ListenersNotValid`
10895
- `Accepted/False/Invalid`
109-
- `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Gateway is invalid or not
110-
supported.
111-
- `Accepted/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting Gateway.
96+
- `Accepted/False/UnsupportedValue`: Custom reason for when a value of a field in a Gateway is invalid or not supported.
97+
- `Accepted/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting Gateway.
11298
NGF only supports a single Gateway.
11399
- `Programmed/True/Programmed`
114100
- `Programmed/False/Invalid`
115-
- `Programmed/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting
116-
Gateway. NGF only supports a single Gateway.
101+
- `Programmed/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting Gateway. NGF only supports a single Gateway.
117102
- `listeners`
118-
- `name` - supported.
119-
- `supportedKinds` - supported.
120-
- `attachedRoutes` - supported.
121-
- `conditions` - supported (Condition/Status/Reason):
103+
- `name`: Supported.
104+
- `supportedKinds`: Supported.
105+
- `attachedRoutes`: Supported.
106+
- `conditions`: Supported (Condition/Status/Reason):
122107
- `Accepted/True/Accepted`
123108
- `Accepted/False/UnsupportedProtocol`
124109
- `Accepted/False/InvalidCertificateRef`
125110
- `Accepted/False/ProtocolConflict`
126-
- `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Listener is invalid or
127-
not supported.
128-
- `Accepted/False/GatewayConflict` - custom reason for when the Gateway is ignored due to a conflicting
129-
Gateway. NGF only supports a single Gateway.
111+
- `Accepted/False/UnsupportedValue`: Custom reason for when a value of a field in a Listener is invalid or not supported.
112+
- `Accepted/False/GatewayConflict`: Custom reason for when the Gateway is ignored due to a conflicting Gateway. NGF only supports a single Gateway.
130113
- `Programmed/True/Programmed`
131114
- `Programmed/False/Invalid`
132115
- `ResolvedRefs/True/ResolvedRefs`
@@ -135,63 +118,85 @@ Fields:
135118
- `Conflicted/True/ProtocolConflict`
136119
- `Conflicted/False/NoConflicts`
137120

121+
---
122+
123+
### GatewayClass
124+
125+
{{< bootstrap-table "table table-striped table-bordered" >}}
126+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
127+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
128+
| GatewayClass | Supported | Not supported | Not supported | v1 |
129+
{{< /bootstrap-table >}}
130+
131+
NGINX Gateway Fabric supports a single GatewayClass resource configured with the `--gatewayclass` flag of the [static-mode]({{< relref "/reference/cli-help.md#static-mode">}}) command.
132+
133+
**Fields**:
134+
135+
- `spec`
136+
- `controllerName`: Supported.
137+
- `parametersRef`: Not supported.
138+
- `description`: Supported.
139+
- `status`
140+
- `conditions` - Supported (Condition/Status/Reason):
141+
- `Accepted/True/Accepted`
142+
- `Accepted/False/InvalidParameters`
143+
- `Accepted/False/GatewayClassConflict`: Custom status for when GatewayClass references this controller, but a different GatewayClass name is provided to the controller via the command-line argument.
144+
145+
---
146+
138147
### HTTPRoute
139148

140-
> Support Levels:
141-
>
142-
> - Core: Supported.
143-
> - Extended: Partially supported.
144-
> - Implementation-specific: Not supported.
149+
{{< bootstrap-table "table table-striped table-bordered" >}}
150+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
151+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
152+
| HTTPRoute | Supported | Partially supported | Not supported | v1 |
153+
{{< /bootstrap-table >}}
145154

146-
Fields:
155+
**Fields**:
147156

148157
- `spec`
149-
- `parentRefs` - partially supported. Port not supported.
150-
- `hostnames` - supported.
158+
- `parentRefs`: Partially supported. Port not supported.
159+
- `hostnames`: Supported.
151160
- `rules`
152161
- `matches`
153-
- `path` - partially supported. Only `PathPrefix` and `Exact` types.
154-
- `headers` - partially supported. Only `Exact` type.
155-
- `queryParams` - partially supported. Only `Exact` type.
156-
- `method` - supported.
162+
- `path`: Partially supported. Only `PathPrefix` and `Exact` types.
163+
- `headers`: Partially supported. Only `Exact` type.
164+
- `queryParams`: Partially supported. Only `Exact` type.
165+
- `method`: Supported.
157166
- `filters`
158-
- `type` - supported.
159-
- `requestRedirect` - supported except for the experimental `path` field. If multiple filters
160-
with `requestRedirect` are configured, NGINX Gateway Fabric will choose the first one and ignore the
161-
rest.
162-
- `requestHeaderModifier` - supported. If multiple filters with `requestHeaderModifier` are configured,
163-
NGINX Gateway Fabric will choose the first one and ignore the rest.
164-
- `responseHeaderModifier`, `requestMirror`, `urlRewrite`, `extensionRef` - not supported.
165-
- `backendRefs` - partially supported. Backend ref `filters` are not supported.
167+
- `type`: Supported.
168+
- `requestRedirect`: Supported except for the experimental `path` field. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest.
169+
- `requestHeaderModifier`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest.
170+
- `responseHeaderModifier`, `requestMirror`, `urlRewrite`, `extensionRef`: Not supported.
171+
- `backendRefs`: Partially supported. Backend ref `filters` are not supported.
166172
- `status`
167173
- `parents`
168-
- `parentRef` - supported.
169-
- `controllerName` - supported.
170-
- `conditions` - partially supported. Supported (Condition/Status/Reason):
174+
- `parentRef`: Supported.
175+
- `controllerName`: Supported.
176+
- `conditions`: Partially supported. Supported (Condition/Status/Reason):
171177
- `Accepted/True/Accepted`
172178
- `Accepted/False/NoMatchingListenerHostname`
173179
- `Accepted/False/NoMatchingParent`
174180
- `Accepted/False/NotAllowedByListeners`
175-
- `Accepted/False/UnsupportedValue` - custom reason for when the HTTPRoute includes an invalid or
176-
unsupported value.
177-
- `Accepted/False/InvalidListener` - custom reason for when the HTTPRoute references an invalid listener.
178-
- `Accepted/False/GatewayNotProgrammed` - custom reason for when the Gateway is not Programmed. HTTPRoute
179-
may be valid and configured, but will maintain this status as long as the Gateway is not Programmed.
181+
- `Accepted/False/UnsupportedValue`: Custom reason for when the HTTPRoute includes an invalid or unsupported value.
182+
- `Accepted/False/InvalidListener`: Custom reason for when the HTTPRoute references an invalid listener.
183+
- `Accepted/False/GatewayNotProgrammed`: Custom reason for when the Gateway is not Programmed. HTTPRoute can be valid and configured, but will maintain this status as long as the Gateway is not Programmed.
180184
- `ResolvedRefs/True/ResolvedRefs`
181185
- `ResolvedRefs/False/InvalidKind`
182186
- `ResolvedRefs/False/RefNotPermitted`
183187
- `ResolvedRefs/False/BackendNotFound`
184-
- `ResolvedRefs/False/UnsupportedValue` - custom reason for when one of the HTTPRoute rules has a backendRef
185-
with an unsupported value.
188+
- `ResolvedRefs/False/UnsupportedValue`: Custom reason for when one of the HTTPRoute rules has a backendRef with an unsupported value.
186189
- `PartiallyInvalid/True/UnsupportedValue`
187190

191+
---
192+
188193
### ReferenceGrant
189194

190-
> Support Levels:
191-
>
192-
> - Core: Supported.
193-
> - Extended: N/A.
194-
> - Implementation-specific: N/A
195+
{{< bootstrap-table "table table-striped table-bordered" >}}
196+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
197+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
198+
| ReferenceGrant | Supported | N/A | Not supported | v1beta1 |
199+
{{< /bootstrap-table >}}
195200

196201
Fields:
197202

@@ -205,24 +210,46 @@ Fields:
205210
- `kind` - supports `Gateway` and `HTTPRoute`.
206211
- `namespace`- supported.
207212

213+
---
214+
208215
### TLSRoute
209216

210-
> Status: Not supported.
217+
{{< bootstrap-table "table table-striped table-bordered" >}}
218+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
219+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
220+
| TLSRoute | Not supported | Not supported | Not supported | N/A |
221+
{{< /bootstrap-table >}}
222+
223+
---
211224

212225
### TCPRoute
213226

214-
> Status: Not supported.
227+
{{< bootstrap-table "table table-striped table-bordered" >}}
228+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
229+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
230+
| TCPRoute | Not supported | Not supported | Not supported | N/A |
231+
{{< /bootstrap-table >}}
232+
233+
---
215234

216235
### UDPRoute
217236

218-
> Status: Not supported.
237+
{{< bootstrap-table "table table-striped table-bordered" >}}
238+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
239+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
240+
| UDPRoute | Not supported | Not supported | Not supported | N/A |
241+
{{< /bootstrap-table >}}
242+
243+
---
219244

220245
### Custom Policies
221246

222-
> Status: Not supported.
247+
{{< bootstrap-table "table table-striped table-bordered" >}}
248+
| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version |
249+
|-------------------------------------|--------------------|------------------------|---------------------------------------|-------------|
250+
| Custom policies | Not supported | N/A | Not supported | N/A |
251+
{{< /bootstrap-table >}}
223252

224-
Custom policies will be NGINX Gateway Fabric-specific CRDs that will allow supporting features like timeouts,
225-
load-balancing methods, authentication, etc. - important data-plane features that are not part of the Gateway API spec.
253+
Custom policies will be NGINX Gateway Fabric-specific CRDs (Custom Resource Definitions) that will support features such as timeouts, load-balancing methods, authentication, etc. These important data-plane features are not part of the Gateway API specifications.
226254

227-
While those CRDs are not part of the Gateway API, the mechanism of attaching them to Gateway API resources is part of
228-
the Gateway API. See the [Policy Attachment doc](https://gateway-api.sigs.k8s.io/references/policy-attachment/).
255+
While these CRDs are not part of the Gateway API, the mechanism to attach them to Gateway API resources is part of the Gateway API. See the [Policy Attachment documentation](https://gateway-api.sigs.k8s.io/references/policy-attachment/).

0 commit comments

Comments
 (0)