-
Notifications
You must be signed in to change notification settings - Fork 145
Document cli args and Gateway API compatibility #201
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
Changes from 1 commit
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
f112ac8
Document cli args and Gateway API compatibility
pleshakov a1c452d
Update docs/gateway-api-compatibility.md.md
pleshakov a7bfd03
Update docs/gateway-api-compatibility.md.md
pleshakov 3391425
Update docs/gateway-api-compatibility.md.md
pleshakov 0a8c872
Update docs/gateway-api-compatibility.md.md
pleshakov 38355e2
Update docs/gateway-api-compatibility.md.md
pleshakov 06f4578
Update docs/gateway-api-compatibility.md.md
pleshakov f7f00e1
Update docs/gateway-api-compatibility.md.md
pleshakov 39f9b5e
Update docs/gateway-api-compatibility.md.md
pleshakov 49ee7ab
Add more info about status fields
pleshakov a6590fd
Rewrite "NGINX Kubernetes Gateway supports only a single Gateway reso…
pleshakov 7f9af17
clarify about weight
pleshakov da3c2bd
Update docs/gateway-api-compatibility.md.md
pleshakov 4406989
Fix belows
pleshakov 1f83688
Rewrite
pleshakov 7005891
Merge branch 'main' into docs/api-compatibility
pleshakov File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # Command-line Arguments | ||
|
|
||
| The table belows describes the command-line arguments of the `gateway` binary from the `nginx-kubernetes-gateway` container. | ||
|
|
||
| | Name | Type | Description | | ||
| |-|-|-| | ||
| |`gateway-ctlr-name` | `string` | The name of the Gateway controller. The controller name must be of the form: `DOMAIN/NAMESPACE/NAME`. The controller's domain is `k8s-gateway.nginx.org`; the namespace is `nginx-ingress`. | | ||
| |`gatewayclass`| `string` | The name of the GatewayClass resource. Every NGINX Gateway must have a unique corresponding GatewayClass resource. | | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| # Gateway API Compatibility | ||
|
|
||
| This document describes which Gateway API resources NGINX Kubernetes Gateway supports and the extent of that support. | ||
|
|
||
| ## 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) | Not supported | | ||
| | [Custom policies](#custom-policies) | Not supported | | ||
|
|
||
| ## Terminology | ||
|
|
||
| The support status is described using the following words: | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - *Supported*. The resource or field is fully supported and conformant to the Gateway API specification. | ||
| - *Partially supported*. The resource or field is supported partially or with limitations. It will become fully supported in the future releases. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - *Not supported*. The resource or field is not yet supported. It will become partially or fully supported in the future releases. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Note: it might be possible that NGINX Kubernetes Gateway will never support some resources and/or fields of the Gateway API. If that happens, that will be documented. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Resources | ||
|
|
||
| Below we list the resources and the support status of their corresponding fields. | ||
|
|
||
| Note that we don't describe the meaning of each field. For that, please visit the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/). | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### GatewayClass | ||
|
|
||
| > Status: Partially supported. | ||
|
|
||
| NGINX Kubernetes Gateway supports only a single GatewayClass resource configured via `--gatewayclass` [cli argument](./cli-args.md). | ||
|
|
||
| Fields: | ||
| * `spec` | ||
| * `controllerName` - supported. | ||
| * `parametersRef` - not supported. | ||
| * `description` - supported. | ||
| * `status` - partially supported. | ||
kate-osborn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### Gateway | ||
|
|
||
| > Status: Partially supported. | ||
|
|
||
| NGINX Kubernetes Gateway supports only a single Gateway resource: it select the Gateway resource among all resources that belong to | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| NGINX Kubernetes Gateway (i.e. reference NGINX Kubernetes Gateway corresponding GatewayClass). In case of multiple Gateway resources, NGINX Kubernetes Gateway will use a | ||
| deterministic conflict resolution strategy: it will choose the oldest resource based on the creation timestamp. If the timestamps are equal, NGINX Kubernetes Gateway will chose the resource that appears alphabetically first based on its namespace and then name. We might support multiple Gateway resources. If you're interested in that support, please share your use case with us. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Fields: | ||
| * `spec` | ||
| * `gatewayClassName` - supported. | ||
| * `listeners` | ||
| * `name` - supported. | ||
| * `hostname` - partially supported. Wildcard hostnames like `*.example.com` are not yet supported. | ||
| * `port` - partially supported. Allowed values: `80` for HTTP listeners and `443` for HTTPS listeners. | ||
| * `protocol` - partially supported. Allowed values: `HTTP`, `HTTPS`. | ||
| * `tls` | ||
| * `mode` - partially supported. Allowed value: `Terminate`. | ||
| * `certificateRefs` - partially supported. The TLS certificate and key must be stored in a Secret resource of type `kubernetes.io/tls` in the same namespace as the Gateway resource. Only a single reference is supported. The Secret must be deployed before the Gateway resource. Secret rotation (watching for updates) is not supported. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * `options` - not supported. | ||
| * `allowedRoutes` - not supported. | ||
| * `addresses` - not supported. | ||
| * `status` - partially supported. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### HTTPRoute | ||
|
|
||
| > Status: Partially supported. | ||
|
|
||
| Fields: | ||
| * `spec` | ||
| * `parentRefs` - partially supported. `sectionName` must always be set. | ||
| * `hostnames` - partially supported. Wildcard binding is not supported: a hostname like `example.com` will not bind to a listener with the hostname `*.example.com`. However, `example.com` will bind to a listener with the empty hostname. | ||
| * `rules` | ||
| * `matches` | ||
| * `path` - partially supported. Only `PathPrefix` type. | ||
| * `headers` - partially supported. Only `Exact` type. | ||
| * `queryParams` - partially supported. Only `Exact` type. | ||
| * `method` - supported. | ||
| * `filters` - not supported. | ||
| * `backendRefs` - partially supported. Only a single backend ref. Backend ref `filters` are not supported. NGINX Kubernetes Gateway will use the IP of the Service as a backend, not the IPs of the corresponding Pods. Watching for Service updates is not supported. | ||
kate-osborn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * `status` - partially supported. | ||
kate-osborn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### TLSRoute | ||
|
|
||
| > Status: Not supported. | ||
|
|
||
| ### TCPRoute | ||
|
|
||
| > Status: Not supported. | ||
|
|
||
| ### UDPRoute | ||
|
|
||
| > Status: Not supported. | ||
|
|
||
| ### ReferenceGrant | ||
|
|
||
| > Status: Not supported. | ||
|
|
||
| ### Custom Policies | ||
|
|
||
| > Status: Not supported. | ||
|
|
||
| Custom policies will be NGINX Kubernetes Gateway-specific CRDs that will allow supporting features like timeouts, load-balancing methods, authentication, etc - important data-plane features that are not part of the Gateway API spec. | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| While those CRDs are not part of the Gateway API, the mechanism of attaching them to Gateway API resources resources is part of the Gateway API. See the [Policy Attachment doc](https://gateway-api.sigs.k8s.io/references/policy-attachment/). | ||
pleshakov marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.