diff --git a/website/content/docs/api-gateway/configuration/routes.mdx b/website/content/docs/api-gateway/configuration/routes.mdx index 92dec7c83..0d10db2b2 100644 --- a/website/content/docs/api-gateway/configuration/routes.mdx +++ b/website/content/docs/api-gateway/configuration/routes.mdx @@ -43,8 +43,11 @@ The following example creates a route named `example-route` associated with a li The following outline shows how to format the configurations for the `Route` object. The top-level `spec` field is the root for all configurations. Click on a property name to view details about the configuration. * [`parentRefs`](#parentrefs): array of objects | optional - * [`name`](#parentrefs-name): string | required - * [`namespace`](#parentrefs-namespace): string | optional + * [`group`](#parentrefs): string | optional + * [`kind`](#parentrefs): string | optional + * [`name`](#parentrefs): string | required + * [`namespace`](#parentrefs): string | optional + * [`sectionName`](#parentrefs): string | optional * [`rules`](#rules): list of objects | optional * [`backendRefs`](#rules-backendrefs): list of objects | optional * [`group`](#rules-backend-refs): string | optional @@ -56,15 +59,13 @@ The following outline shows how to format the configurations for the `Route` obj * [`filters`](#rules-filters): list of objects | optional * [`type`](#rules-filters-type): string | required * [`requestHeaderModifier`](#rules-filters-requestheadermodifier): object | optional - * [`set`](#rules-filters-requestheadermodifier-set): array of objects | optional - * [`name`](#rules-filters-requestheadermodifier-set): string | required - * [`value`](#rules-filters-requestheadermodifier-set): string | required - * [`add`](#rules-filters-requestheadermodifier-add): array of objects | optional - * [`name`](#rules-filters-requestheadermodifier-add): string | required - * [`value`](#rules-filters-requestheadermodifier-add): string | required - * [`remove`](#rules-filters-requestheadermodifier-remove): array of objects | optional - * [`name`](#rules-filters-requestheadermodifier-remove): string | required - * [`value`](#rules-filters-requestheadermodifier-remove): string | required + * [`set`](#rules-filters-requestheadermodifier): array of objects | optional + * [`name`](#rules-filters-requestheadermodifier): string | required + * [`value`](#rules-filters-requestheadermodifier): string | required + * [`add`](#rules-filters-requestheadermodifier): array of objects | optional + * [`name`](#rules-filters-requestheadermodifier): string | required + * [`value`](#rules-filters-requestheadermodifier): string | required + * [`remove`](#rules-filters-requestheadermodifier): array of strings | optional * [`urlRewrite`](#rules-filters-urlrewrite): object | optional * [`path`](#rules-filters-urlrewrite-path): object | required * [`replacePrefixMatch`](#rules-filters-urlrewrite-path): string | required @@ -90,31 +91,26 @@ This topic provides details about the configuration parameters. ### parentRefs -This field contains the list of `Gateways` that the route should attach to. If not set, the route will not attach to a `Gateway`. +This field contains the list of `Gateways` that the route should attach to. If not set, the route will not attach to a `Gateway`. The following table describes the objects you can configure in the `parentRefs` block: -* Type: List of objects -* Required: Required +| Parameter | Description | Type | Required | +| --- | --- | --- | --- | +| `group` | Specifies the Kubernetes API group of the `Gateway` to attach to. You can specify the following values: . Defaults to `gateway.networking.k8s.io`. | String | Optional | +| `kind` | Specifies the Kubernetes kind of the `Gateway` to attach to. you can specify the following values: . Defaults to `Gateway`. | String | Optional | +| `name` | Specifies the name of the `Gateway` the route is attached to. | String | Required | +| `namespace` | Specifies the Kubernetes namespace containing the `Gateway` to attach to. If the `Gateway` is in a different Kubernetes namespace than the `Route`, then you must specify a value. Defaults to the `Route` namespace. | String | Optional | +| `sectionName` | Specifies the name of a specific listener on the `Gateway` to attach to. The `Route` attempts to attach to all listeners on the `Gateway`. | String | Required | -### parentRefs.name - -This field specifies the name of the `Gateway` the route is attached to. - -* Type: String -* Required: Required - -### ParentRefs.namespace - -This field specifies the Kubernetes namespace containing the `Gateway` to attach to. It is optional if the `Gateway` is in the same Kubernetes namespace as the `Route`. If the `Gateway` is in a different namespace, then a value must be provided. - -* Type: String -* Required: Optional ### rules -The `rules` field specifies how traffic passing through the route should behave. It contains several possible parameters to customize traffic behavior. +The `rules` field contains a list of objects that define behaviors for network traffic that goes through the route. The rule configuration contains the following objects: -* Type: List of objects -* Required: Required +* [`backendRefs`](#rules-backendrefs): Specifies which backend services the `Route` references when processing traffic. +* [`filters`](#rules-filters): Specifies which operations Consul API Gateway performs when traffic goes through the `Route`. +* [`matches`](#rules-matches): Deterines which requests Consul API Gateway processes. + +Rules are optional. ### rules.backendRefs @@ -123,11 +119,11 @@ This field specifies backend services that the `Route` references. The following | Parameter | Description | Type | Required | | --- | --- | --- | --- | | `group` | Specifies the Kubernetes API Group of the referenced backend. You can specify the following values: | String | Optional | -| `kind` | Specifies the Kubernetes Kind of the referenced backend. You can specify the following values: | String | Optional | +| `kind` | Specifies the Kubernetes Kind of the referenced backend. You can specify the following values: | String | Optional | | `name` | Specifies the name of the Kubernetes Service or Consul mesh service resource. | String | Required | -| `namespace` | Specifies the Kubernetes namespace containing the Kubernetes Service or Consul mesh service resource. To create a route for a `backendRef` in a different namespace, you must also create a [ReferencePolicy](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.ReferencePolicy). Refer to the [example route](#example-cross-namespace-backendref) configured to reference across namespaces. | String | Optional | +| `namespace` | Specifies the Kubernetes namespace containing the Kubernetes Service or Consul mesh service resource. You must specify a value if the Service or Consul mesh service is defined in a different namespace from the `Route`. Defaults to the namespace of the `Route`.
To create a route for a `backendRef` in a different namespace, you must also create a [ReferencePolicy](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.ReferencePolicy). Refer to the [example route](#example-cross-namespace-backendref) configured to reference across namespaces. | String | Optional | | `port` | Specifies the port number for accessing the Kubernetes or Consul service. | Integer | Required | -| `weight` | | Integer | Optional | +| `weight` | Specifies the proportion of requests sent to the backend. Computed as weight divided by the sum of all weights in this `backendRefs` list. Defaults to `1`. A value of `0` indicates that no requests should be sent to the backend. | Integer | Optional | #### Example cross-namespace backendRef @@ -172,7 +168,7 @@ The following example creates a route named `example-route` in namespace `gatewa ### rules.filters -The `filters` block defines steps for processing requests. You can configure filters to modify the properties of matching incoming requests and enable Consul API Gateway features, such as rewriting path prefixes (refer to [Rerouting HTTP](/docs/api-gateway/usage#rerouting-http-requests) for additional information). +The `filters` block defines steps for processing requests. You can configure filters to modify the properties of matching incoming requests and enable Consul API Gateway features, such as rewriting path prefixes (refer to [Reroute HTTP requests](/docs/api-gateway/usage#reroute-http-requests) for additional information). * Type: Array of objects * Required: Optional @@ -183,82 +179,90 @@ Specifies the type of filter you want to apply to the route. The parameter is op You can specify the following values: -* `RequestHeaderModifier`: The `RequestHeaderModifier` type modifies the HTTP headers on the incoming request. -* `URLRewrite`: The `URLRewrite` type modifies the URL path on the incoming request. +* `RequestHeaderModifier`: The `RequestHeaderModifier` type modifies the HTTP headers on the incoming request. You must define the [`rules.filters.requestHeaderModifier`](#rules-filters-requestheadermodifier) configurations to use this filter type. + +* `URLRewrite`: The `URLRewrite` type modifies the URL path on the incoming request. You must define the [`rules.filters.urlRewrite`](#rules-filters-urlrewrite) configurations to use this filter type. ### rules.filters.requestHeaderModifier -Contains a list of header configuration objects for `requestHeaderModifier` filters when `rules.filters.type` is configured to `RequestHeaderModifier`. +Defines operations to perform on matching request headers when `rules.filters.type` is configured to `RequestHeaderModifier`. This field contains the following configuration objects: -### rules.filters.requestHeaderModifier.set - - -### rules.filters.requestHeaderModifier.add - - -### rules.filters.requestHeaderModifier.remove +| Parameter | Description | Type | Required | +| --- | --- | --- | --- | +| `set` | Configure this field to rewrite the HTTP request header. It specifies the name of an HTTP header to overwrite and the new value to set. Any existing values associated with the header name are overwritten. You can specify the following configurations: | List of objects | Optional | +| `add` | Configure this field to append the request header with a new value. It specifies the name of an HTTP header to append and the value(s) to add. You can specify the following configurations: | List of objects | Optional | +| `remove` | Configure this field to specifify an array of header names to remove from the request header. | Array of strings | Optional | ### rules.filters.urlRewrite -Contains a list of path configuration objects for `urlRewrite` filters when `rules.filters.type` is configured to `URLRewrite`. +Specifies rules for rewriting the URL of incoming requests when `rules.filters.type` is configured to `URLRewrite`. + +* Type: Object +* Required: Optional ### rules.filters.urlRewrite.path -Specifies a list of objects that determine how Consul API Gateway rewrites URL paths (refer to [Rerouting HTTP](/docs/api-gateway/usage#rerouting-http-requests) for additional information). +Specifies a list of objects that determine how Consul API Gateway rewrites URL paths (refer to [Reroute HTTP requests](/docs/api-gateway/usage#reroute-http-requests) for additional information). The following table describes the parameters for `path`: | Parameter | Description | Type | Required | | --- | --- | --- | --- | -| `replacePrefixMatch` | Specifies the path prefix to use as the replacement when rerouting requests. | String | Required | -| `type` | Specifies the type of rewrite rule. You can specify the following values: | String | Optional | +| `replacePrefixMatch` | Specifies a value that replaces the path prefix for incoming HTTP requests. The operation only affects the path prefix. The rest of the path is unchanged. | String | Required | +| `type` | Specifies the type of replacement to use for the URL path. You can specify the following values: | String | Optional | ### rules.matches -Specifies rules for matching incoming requests. You can apply [`filters`](#rulesfilters) to requests that match the defined rules. +Specifies rules for matching incoming requests. You can apply [`filters`](#rulesfilters) to requests that match the defined rules. You can match incoming requests based on the following elements: + +* [paths](#rules-matches-path) +* [headers](#rules-matches-headers) +* [query parameters](#rules-matches-queryparams) +* [request method](#rules-matches-method) ### rules.matches.path -Specifies a list of objects that define pattern-matching rules. Consul API Gateway processes matching requests according to the rules configured for the routes. - -The following table describes the parameters for `path`: +Specifies a list of objects that define matches based on URL path. The following table describes the parameters for the `path` field: | Parameter | Description | Type | Required | | --- | --- | --- | --- | -| `type` | | String | Required | -| `value` | | String | Required | +| `type` | Specifies the type of comparison to use for matching the path value. You can specify the following types. | String | Required | +| `value` | Specifies value to match on. You can specify a specific string or a regular expression. | String | Required | ### rules.matches.headers -The following table describes the parameters for `headers`: +Specifies a list of objects that define matches based HTTP request headers. The following table describes the parameters for the `headers` field: | Parameter | Description | Type | Required | | --- | --- | --- | --- | -| `type` | | String | Required | -| `value` | | String | Required | - +| `type` | Specifies the type of comparison to use for matching the header value. You can specify the following types. | String | Required | +| `name` | Specifies the name of the header to match on. | String | Required | +| `value` | Specifies value to match on. You can specify a specific string or a regular expression. | String | Required | ### rules.matches.queryParams -The following table describes the parameters for `queryParams`: +Specifies a list of objects that define matches based query parameters. The following table describes the parameters for the `queryParams` field: | Parameter | Description | Type | Required | | --- | --- | --- | --- | -| `type` | | String | Required | -| `name` | | String | Required | -| `value` | | String | Required | +| `type` | Specifies the type of comparison to use for matching a query parameter value. You can specify the following types. | String | Required | +| `name` | Specifies the name of the query parameter to match on. | String | Required | +| `value` | Specifies value to match on. You can specify a specific string or a regular expression. | String | Required | ### rules.matches.method -The following table describes the parameters for `method`: - -| Parameter | Description | Type | Required | -| --- | --- | --- | --- | -| `type` | | String | Required | -| `name` | | String | Required | -| `value` | | String | Required | +Specifies a list of strings that define matches based on HTTP request method. You may specify the following values: +* `HEAD` +* `POST` +* `PUT` +* `PATCH` +* `GET` +* `DELETE` +* `OPTIONS` +* `TRACE` +* `CONNECT`