You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by zh...@apache.org on 2022/11/16 14:59:09 UTC
[apisix-ingress-controller] branch master updated: docs: update ApisixRoute/v2 reference (#1423)
This is an automated email from the ASF dual-hosted git repository.
zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push:
new 47906a53 docs: update ApisixRoute/v2 reference (#1423)
47906a53 is described below
commit 47906a533369dc76c3d2f7fcba10ce8030bd4ce6
Author: Navendu Pottekkat <na...@apache.org>
AuthorDate: Wed Nov 16 20:29:04 2022 +0530
docs: update ApisixRoute/v2 reference (#1423)
---
docs/en/latest/references/apisix_route_v2.md | 153 +++++++++++-----------
docs/en/latest/references/apisix_route_v2beta3.md | 130 +++++++++---------
2 files changed, 150 insertions(+), 133 deletions(-)
diff --git a/docs/en/latest/references/apisix_route_v2.md b/docs/en/latest/references/apisix_route_v2.md
index 89cae10b..5ea3cd50 100644
--- a/docs/en/latest/references/apisix_route_v2.md
+++ b/docs/en/latest/references/apisix_route_v2.md
@@ -1,5 +1,10 @@
---
-title: ApisixRoute/v2 Reference
+title: ApisixRoute/v2
+keywords:
+ - APISIX ingress
+ - Apache APISIX
+ - ApisixRoute
+description: Reference for ApisixRoute/v2 custom Kubernetes resource.
---
<!--
@@ -21,83 +26,85 @@ title: ApisixRoute/v2 Reference
#
-->
+See [concepts](https://apisix.apache.org/docs/ingress-controller/concepts/apisix_route) to learn more about how to use the ApisixRoute resource.
+
## Spec
-Meaning of each field in the spec of ApisixRoute are followed, the top level fields (`apiVersion`, `kind` and `metadata`) are same as other Kubernetes Resources.
+See the [definition](https://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd/v1/ApisixRoute.yaml) on GitHub.
+
+The table below describes each of the attributes in the spec. The fields `apiVersion`, `kind`, and `metadata` are similar to other Kubernetes resources and are excluded below.
+
+| Attribute | Type | Description |
+| ------------------------------------ | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| http | array | HTTP Route rules. |
+| http[].name | string (required) | Route rule name. |
+| http[].priority | integer | Route priority. Used to determined which Route to use when multiple routes contain the same URI. Large number means higher priority. |
+| http[].timeout | object | Timeouts for connecting, sending, and receiving messages between Ingress and the service. This will overwrite the value configured in `ApisixUpstream` resource. |
+| http[].timeout.connect | string | Connect timeout in the form "72h3m0.5s". |
+| http[].timeout.send | string | Send timeout in the form "72h3m0.5s". |
+| http[].timeout.read | string | Read timeout in the form "72h3m0.5s". |
+| http[].match | object | Conditions to match a request with the Route. |
+| http[].match.paths | array | List of URIs to match the Route with. The Route will be used if any one of the URIs is matched. |
+| http[].match.hosts | array | List of hosts to match the Route with. The Route will be used if any one of the hosts is matched. |
+| http[].match.methods | array | List of HTTP methods (`GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`) to match the Route with. The Route will be used if any one of the methods is matched. |
+| http[].match.remoteAddrs | array | List of IP addresses (CIDR format) to match the Route with. The Route will be used if any one of the IP address is matched. |
+| http[].match.exprs | array | List of expressions to match the Route with. The Route will be used if any one of the expression is matched. |
+| http[].match.exprs[].subject | object | Subject for the expression. |
+| http[].match.exprs[].subject.scope | string | Scope of the subject. Can be one of `Header`, `Query`, `Cookie`, or `Path`. |
+| http[].match.exprs[].subject.name | string | Subject name. Can be empty when the scope is `Path`. |
+| http[].match.exprs[].op | string | Operator for the expression. See [Expression operators](#expression-operators) for more details. |
+| http[].match.exprs[].value | string | Value to compare the subject with. Can use either this or `http[].match.exprs[].set`. |
+| http[].match.exprs[].set | array | Set to compare the subject with. Only used when the operator is `In` or `NotIn`. Can use either this or `http[].match.exprs[].value`. |
+| http[].websocket | boolean | When set to `true` enables websocket proxy. |
+| http[].plugin_config_name | string | Existing Plugin Config name to use in the Route. |
+| http[].backends | object | List of backend services. If there are more than one, a weight based traffic split policy would be applied. |
+| http[].backends[].serviceName | string | Name of the backend service. The service and the `ApisixRoute` resource should be created in the same namespace. |
+| http[].backends[].servicePort | integer or string | Port number or the name defined in the service object of the backend. |
+| http[].backends[].resolveGranularity | string | See [Service resolution granularity](#service-resolution-granularity) for details. |
+| http[].backends[].weight | int | Weight with which to split traffic to the backend. Defaults to `100` and is ignored when there is only one backend. |
+| http[].backends[].subset | string | Subset for the target service. Should be pre-defined in the `ApisixUpstream` resource. |
+| http[].plugins | array | [APISIX Plugins](https://apisix.apache.org/docs/apisix/plugins/batch-requests/) to be executed if the Route is matched. |
+| http[].plugins[].name | string | Name of the Plugin. See [Plugin hub](https://apisix.apache.org/plugins/) for a list of available Plugins. |
+| http[].plugins[].enable | boolean | When set to `true`, the Plugin is enabled on the Route. |
+| http[].plugins[].config | object | Configuration of the Plugin. Should have the same fields as in [APISIX docs](https://apisix.apache.org/docs/apisix/plugins/batch-requests/). |
+| http[].authentication | object | List of APISIX authentication Plugins. |
+| http[].authentication.enable | boolean | When set to `true`, the authentication Plugin is enabled on the Route. |
+| http[].authentication.type | string | Type of authentication. Set to one of `basicAuth` or `keyAuth`. |
+| http[].authentication.keyAuth | object | Unique key for a [Consumer](https://apisix.apache.org/docs/apisix/terminology/consumer/). |
+| http[].authentication.keyAuth.header | string | Header to get the key from. |
+| stream | array | Stream route rules. Contains TCP or UDP rules. |
+| stream[].protocol | string (required) | The protocol of rule. Support `TCP` or `UDP` |
+| stream[].name | string (required) | Name of the rule. |
+| stream[].match | object (required) | Conditions to match the request with the Route. |
+| stream[].match.ingressPort | integer (required) | Listening port in the Ingress proxy server. This port should be defined in the [APISIX configuration](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L101). |
+| stream[].backend | object | Backend service (deprecated). Use `http[].backends` instead. |
+| stream[].backend.serviceName | string | Name of the backend service (depricated). The service and the `ApisixRoute` resource should be created in the same namespace. |
+| stream[].backend.servicePort | integer or string | Port number or the name defined in the service object of the backend (deprecated). |
+| stream[].backend.resolveGranularity | string | See [Service resolution granularity](#service-resolution-granularity) for details (depricated). |
+| stream[].backend.subset | string | Subset for the target service (depricated). Should be pre-defined in the `ApisixUpstream` resource. |
-| Field | Type | Description |
-|--------------------------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| http | array | ApisixRoute's HTTP route rules. |
-| http[].name | string (required) | The route rule name. |
-| http[].priority | integer | The route priority, it's used to determine which route will be hitted when multile routes contains the same URI. Large number means higher priority. |
-| http[].timeout | object | Sets the timeout for connecting to, and sending and receiving messages between the Ingress and Service. This will overwrite the timeout value configured in your ApisixUpstream. |
-| http[].timeout.connect | string | Time duration in the form "72h3m0.5s" |
-| http[].timeout.send | string | Time duration in the form "72h3m0.5s" |
-| http[].timeout.read | string | Time duration in the form "72h3m0.5s" |
-| http[].match | object | Route match conditions. |
-| http[].match.paths | array | A series of URI that should be matched (oneof) to use this route rule. |
-| http[].match.hosts | array | A series of hosts that should be matched (oneof) to use this route rule. |
-| http[].match.methods | array | A series of HTTP methods(`GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`) that should be matched (oneof) to use this route rule. |
-| http[].match.remoteAddrs | array | A series of IP address (CIDR format) that should be matched (oneof) to use this route rule. |
-| http[].match.exprs | array | A series expressions that the results should be matched (oneof) to use this route rule. |
-| http[].match.exprs[].subject | object | Expression subject. |
-| http[].match.exprs[].subject.scope | string | Specify where to find the subject, values can be `Header`, `Query`, `Cookie` and `Path`. |
-| http[].match.exprs[].subject.name | string | Specify subject name, when scope is `Path`, this field can be absent. |
-| http[].match.exprs[].op | string | Expression operator, see [Expression Operators](#expression-operators) for the detail of enumerations. |
-| http[].match.exprs[].value | string | Expected expression result, it's exclusive with `http[].match.exprs[].set`. |
-| http[].match.exprs[].set | array | Expected expression result set, only used when the operator is `In` or `NotIn`, it's exclusive with `http[].match.exprs[].value`. |
-| http[].websocket | boolean | Whether enable websocket proxy. |
-| http[].plugin_config_name | string | Using exist `PluginConfig` for `ApisixRoute`. |
-| http[].backends | object | The backend services. When the number of backends more than one, weight based traffic split policy will be applied to shifting traffic between these backends. |
-| http[].backends[].serviceName | string | The backend service name, note the service and ApisixRoute should be created in the same namespace. Cross namespace referencing is not allowed. |
-| http[].backends[].servicePort | integer or string | The backend service port, can be the port number or the name defined in the service object. |
-| http[].backends[].resolveGranularity | string | See [Service Resolve Granularity](#service-resolve-granularity) for the details. |
-| http[].backends[].weight | int | The backend weight, which is critical when shifting traffic between multiple backends, default is `100`. Weight is ignored when there is only one backend. |
-| http[].backends[].subset | string | Subset specifies a subset for the target Service. The subset should be pre-definedin ApisixUpstream about this service. |
-| http[].plugins | array | A series of APISIX plugins that will be executed once this route rule is matched |
-| http[].plugins[].name | string | The plugin name, see [docs](http://apisix.apache.org/docs/apisix/getting-started) for learning the available plugins. |
-| http[].plugins[].enable | boolean | Whether the plugin would be used |
-| http[].plugins[].config | object | The configuration of the plugin that must have the same fields as in APISIX. |
-| http[].authentication | object | A series of APISIX authentication plugins. |
-| http[].authentication.enable | boolean | Whether the plugin would be used. |
-| http[].authentication.type | string | Plugin type, one of "basicAuth" "keyAuth" |
-| http[].authentication.keyAuth | object | Unique key for a Consumer. |
-| http[].authentication.keyAuth.header | string | The header to get the key from. |
-| stream | array | ApisixRoutes' stream route rules, which contains TCP or UDP rules. |
-| stream[].protocol | string (required) | The protocol of rule. Support `TCP` or `UDP` |
-| stream[].name | string (required) | The Route rule name. |
-| stream[].match | object (required) | The Route match conditions. |
-| stream[].match.ingressPort | integer (required) | the Ingress proxy server listening port, note since APISIX doesn't support dynamic listening, this port should be defined in [apisix configuration](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L101). |
-| stream[].backend | object | The backend service. Deprecated: use http[].backends instead. |
-| stream[].backend.serviceName | string | The backend service name, note the service and ApisixRoute should be created in the same namespace. Cross namespace referencing is not allowed. |
-| stream[].backend.servicePort | integer or string | The backend service port, can be the port number or the name defined in the service object. |
-| stream[].backend.resolveGranularity | string | See [Service Resolve Granularity](#service-resolve-granularity) for the details. |
-| stream[].backend.subset | string | Subset specifies a subset for the target Service. The subset should be pre-definedin ApisixUpstream about this service. |
-| stream[].plugins | array | A series of APISIX plugins that will be executed once this route rule is matched |
-| stream[].plugins[].name | string | The plugin name, see [docs](http://apisix.apache.org/docs/apisix/getting-started) for learning the available plugins. |
-| stream[].plugins[].enable | boolean | Whether the plugin would be used |
-| stream[].plugins[].config | object | The configuration of the plugin that must have the same fields as in APISIX. |
+## Expression operators
-## Expression Operators
+The following operators can be used in match expressions:
-| Operator | Meaning |
-|------------------------------|----------------------------------------------------------------------------------------|
-| Equal | The result of `subject` should be equal to the `value` |
-| NotEqual | The result of `subject` should not be equal to `value` |
-| GreaterThan | The result of `subject` should be a number and it must larger then `value`. |
-| LessThan | The result of `subject` should be a number and it must less than `value`. |
-| In | The result of `subject` should be inside the `set`. |
-| NotIn | The result of `subject` should not be inside the `set`. |
-| RegexMatch | The result of `subject` should be matched by the `value` (a PCRE regex pattern). |
-| RegexNotMatch | The result of `subject` should not be matched by the `value` (a PCRE regex pattern). |
-| RegexMatchCaseInsensitive | Similar with `RegexMatch` but the match process is case insensitive |
-| RegexNotMatchCaseInsensitive | Similar with `RegexNotMatchCaseInsensitive` but the match process is case insensitive. |
+| Operator | Description |
+| ---------------------------- | ------------------------------------------------------------------------------- |
+| Equal | Result of the `subject` should be equal to the `value`. |
+| NotEqual | Result of the `subject` should not be equal to the `value`. |
+| GreaterThan | Result of the `subject` should be a number and must be larger than the `value`. |
+| LessThan | Result of the `subject` should be a number and must be less than the `value`. |
+| In | Result of the `subject` should be a part of the `set`. |
+| NotIn | Result of the `subject` should be a part of the `set`. |
+| RegexMatch | Result of the `subject` should match the PCRE regex pattern of the `value`. |
+| RegexNotMatch | Result of the `subject` should not match the PCRE regex pattern of the `value`. |
+| RegexMatchCaseInsensitive | Similar to `RegexMatch` but case insensitive. |
+| RegexNotMatchCaseInsensitive | Similar to `RegexNotMatch` but case insensitive. |
-## Service Resolve Granularity
+## Service resolution granularity
-The service resolve granularity determines whether the [Serivce ClusterIP](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) or its endpoints should be filled in the target upstream of APISIX.
+By default, the service referenced will be watched to update its endpoint list in APISIX. To just use the `ClusterIP` of the service, you can set the `resolveGranularity` attribute to `service` (defaults to `endpoint`):
-| Granularity | Meaning |
-|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| endpoint | Filled upstream nodes by Pods' IP. ApisixUpstream healthCheck is only effective on this case. |
-| service | Filled upstream nodes by Service ClusterIP, in such a case, loadbalacing are implemented by [kube-proxy](https://kubernetes.io/docs/concepts/overview/components/#kube-proxy). |
+| Granularity | Description |
+| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| endpoint | Upstream nodes are pods' IP adresses. |
+| service | Upstream nodes are service cluster IP. Load balancing is implemented by [kube-proxy](https://kubernetes.io/docs/concepts/overview/components/#kube-proxy). |
diff --git a/docs/en/latest/references/apisix_route_v2beta3.md b/docs/en/latest/references/apisix_route_v2beta3.md
index 9859f65c..36a9196a 100644
--- a/docs/en/latest/references/apisix_route_v2beta3.md
+++ b/docs/en/latest/references/apisix_route_v2beta3.md
@@ -1,7 +1,11 @@
---
-title: ApisixRoute/v2beta3 Reference
+title: ApisixRoute/v2beta3
+keywords:
+ - APISIX ingress
+ - Apache APISIX
+ - ApisixRoute
+description: Reference for ApisixRoute/v2beta3 custom Kubernetes resource.
---
-
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
@@ -21,69 +25,75 @@ title: ApisixRoute/v2beta3 Reference
#
-->
+See [concepts](https://apisix.apache.org/docs/ingress-controller/concepts/apisix_route) to learn more about how to use the ApisixRoute resource.
+
## Spec
-Meaning of each field in the spec of ApisixRoute are followed, the top level fields (`apiVersion`, `kind` and `metadata`) are same as other Kubernetes Resources.
+See the [definition](https://github.com/apache/apisix-ingress-controller/blob/master/samples/deploy/crd/v1/ApisixRoute.yaml) on GitHub.
+
+The table below describes each of the attributes in the spec. The fields `apiVersion`, `kind`, and `metadata` are similar to other Kubernetes resources and are excluded below.
+
+| Attribute | Type | Description |
+|--------------------------------------|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| http | array | HTTP Route rules. |
+| http[].name | string (required) | Route rule name. |
+| http[].priority | integer | Route priority. Used to determined which Route to use when multiple routes contain the same URI. Large number means higher priority. |
+| http[].match | object | Conditions to match a request with the Route. |
+| http[].match.paths | array | List of URIs to match the Route with. The Route will be used if any one of the URIs is matched. |
+| http[].match.hosts | array | List of hosts to match the Route with. The Route will be used if any one of the hosts is matched. |
+| http[].match.methods | array | List of HTTP methods (`GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`) to match the Route with. The Route will be used if any one of the methods is matched. |
+| http[].match.remoteAddrs | array | List of IP addresses (CIDR format) to match the Route with. The Route will be used if any one of the IP address is matched. |
+| http[].match.exprs | array | List of expressions to match the Route with. The Route will be used if any one of the expression is matched. |
+| http[].match.exprs[].subject | object | Subject for the expression. |
+| http[].match.exprs[].subject.scope | string | Scope of the subject. Can be one of `Header`, `Query`, `Cookie`, or `Path`. |
+| http[].match.exprs[].subject.name | string | Subject name. Can be empty when the scope is `Path`. |
+| http[].match.exprs[].op | string | Operator for the expression. See [Expression operators](#expression-operators) for more details. |
+| http[].match.exprs[].value | string | Value to compare the subject with. Can use either this or `http[].match.exprs[].set`. |
+| http[].match.exprs[].set | array | Set to compare the subject with. Only used when the operator is `In` or `NotIn`. Can use either this or `http[].match.exprs[].value`. |
+| http[].backends | object | List of backend services. If there are more than one, a weight based traffic split policy would be applied. |
+| http[].backends[].serviceName | string | Name of the backend service. The service and the `ApisixRoute` resource should be created in the same namespace. |
+| http[].backends[].servicePort | integer or string | Port number or the name defined in the service object of the backend. |
+| http[].backends[].resolveGranularity | string | See [Service resolution granularity](#service-resolution-granularity) for details. |
+| http[].backends[].weight | int | Weight with which to split traffic to the backend. Defaults to `100` and is ignored when there is only one backend. |
+| http[].backends[].subset | string | Subset for the target service. Should be pre-defined in the `ApisixUpstream` resource. |
+| http[].plugins | array | [APISIX Plugins](https://apisix.apache.org/docs/apisix/plugins/batch-requests/) to be executed if the Route is matched. |
+| http[].plugins[].name | string | Name of the Plugin. See [Plugin hub](https://apisix.apache.org/plugins/) for a list of available Plugins. |
+| http[].plugins[].enable | boolean | When set to `true`, the Plugin is enabled on the Route. |
+| http[].plugins[].config | object | Configuration of the Plugin. Should have the same fields as in [APISIX docs](https://apisix.apache.org/docs/apisix/plugins/batch-requests/). |
+| http[].websocket | boolean | When set to `true` enables websocket proxy. |
+| stream | array | Stream route rules. Contains TCP or UDP rules. |
+| stream[].protocol | string (required) | The protocol of rule. Support `TCP` or `UDP` |
+| stream[].name | string (required) | Name of the rule. |
+| stream[].match | object (required) | Conditions to match the request with the Route. |
+| stream[].match.ingressPort | integer (required) | Listening port in the Ingress proxy server. This port should be defined in the [APISIX configuration](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L101). |
+| stream[].backend | object | Backend service (deprecated). Use `http[].backends` instead. |
+| stream[].backend.serviceName | string | Name of the backend service (depricated). The service and the `ApisixRoute` resource should be created in the same namespace. |
+| stream[].backend.servicePort | integer or string | Port number or the name defined in the service object of the backend (deprecated). |
+| stream[].backend.resolveGranularity | string | See [Service resolution granularity](#service-resolution-granularity) for details (depricated). |
+| stream[].backend.subset | string | Subset for the target service (depricated). Should be pre-defined in the `ApisixUpstream` resource. |
-| Field | Type | Description |
-|--------------------------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| http | array | ApisixRoute's HTTP route rules. |
-| http[].name | string (required) | The route rule name. |
-| http[].priority | integer | The route priority, it's used to determine which route will be hitted when multile routes contains the same URI. Large number means higher priority. |
-| http[].match | object | Route match conditions. |
-| http[].match.paths | array | A series of URI that should be matched (oneof) to use this route rule. |
-| http[].match.hosts | array | A series of hosts that should be matched (oneof) to use this route rule. |
-| http[].match.methods | array | A series of HTTP methods(`GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`) that should be matched (oneof) to use this route rule. |
-| http[].match.remoteAddrs | array | A series of IP address (CIDR format) that should be matched (oneof) to use this route rule. |
-| http[].match.exprs | array | A series expressions that the results should be matched (oneof) to use this route rule. |
-| http[].match.exprs[].subject | object | Expression subject. |
-| http[].match.exprs[].subject.scope | string | Specify where to find the subject, values can be `Header`, `Query`, `Cookie` and `Path`. |
-| http[].match.exprs[].subject.name | string | Specify subject name, when scope is `Path`, this field can be absent. |
-| http[].match.exprs[].op | string | Expression operator, see [Expression Operators](#expression-operators) for the detail of enumerations. |
-| http[].match.exprs[].value | string | Expected expression result, it's exclusive with `http[].match.exprs[].set`. |
-| http[].match.exprs[].set | array | Expected expression result set, only used when the operator is `In` or `NotIn`, it's exclusive with `http[].match.exprs[].value`. |
-| http[].backends | object | The backend services. When the number of backends more than one, weight based traffic split policy will be applied to shifting traffic between these backends. |
-| http[].backends[].serviceName | string | The backend service name, note the service and ApisixRoute should be created in the same namespace. Cross namespace referencing is not allowed. |
-| http[].backends[].servicePort | integer or string | The backend service port, can be the port number or the name defined in the service object. |
-| http[].backends[].resolveGranularity | string | See [Service Resolve Granularity](#service-resolve-granularity) for the details. |
-| http[].backends[].weight | int | The backend weight, which is critical when shifting traffic between multiple backends, default is `100`. Weight is ignored when there is only one backend. |
-| http[].backends[].subset | string | Subset specifies a subset for the target Service. The subset should be pre-definedin ApisixUpstream about this service. |
-| http[].plugins | array | A series of APISIX plugins that will be executed once this route rule is matched |
-| http[].plugins[].name | string | The plugin name, see [docs](http://apisix.apache.org/docs/apisix/getting-started) for learning the available plugins. |
-| http[].plugins[].enable | boolean | Whether the plugin would be used |
-| http[].plugins[].config | object | The configuration of the plugin that must have the same fields as in APISIX. |
-| http[].websocket | boolean | Whether enable websocket proxy. |
-| stream | array | ApisixRoutes' stream route rules, which contains TCP or UDP rules. |
-| stream[].protocol | string (required) | The protocol of rule. Support `TCP` or `UDP` |
-| stream[].name | string (required) | The Route rule name. |
-| stream[].match | object (required) | The Route match conditions. |
-| stream[].match.ingressPort | integer (required) | the Ingress proxy server listening port, note since APISIX doesn't support dynamic listening, this port should be defined in [apisix configuration](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L101). |
-| stream[].backend | object | The backend service. Deprecated: use http[].backends instead. |
-| stream[].backend.serviceName | string | The backend service name, note the service and ApisixRoute should be created in the same namespace. Cross namespace referencing is not allowed. |
-| stream[].backend.servicePort | integer or string | The backend service port, can be the port number or the name defined in the service object. |
-| stream[].backend.resolveGranularity | string | See [Service Resolve Granularity](#service-resolve-granularity) for the details. |
-| stream[].backend.subset | string | Subset specifies a subset for the target Service. The subset should be pre-definedin ApisixUpstream about this service. |
+## Expression operators
-## Expression Operators
+The following operators can be used in match expressions:
-| Operator | Meaning |
-|------------------------------|----------------------------------------------------------------------------------------|
-| Equal | The result of `subject` should be equal to the `value` |
-| NotEqual | The result of `subject` should not be equal to `value` |
-| GreaterThan | The result of `subject` should be a number and it must larger then `value`. |
-| LessThan | The result of `subject` should be a number and it must less than `value`. |
-| In | The result of `subject` should be inside the `set`. |
-| NotIn | The result of `subject` should not be inside the `set`. |
-| RegexMatch | The result of `subject` should be matched by the `value` (a PCRE regex pattern). |
-| RegexNotMatch | The result of `subject` should not be matched by the `value` (a PCRE regex pattern). |
-| RegexMatchCaseInsensitive | Similar with `RegexMatch` but the match process is case insensitive |
-| RegexNotMatchCaseInsensitive | Similar with `RegexNotMatchCaseInsensitive` but the match process is case insensitive. |
+| Operator | Description |
+| ---------------------------- | ------------------------------------------------------------------------------- |
+| Equal | Result of the `subject` should be equal to the `value`. |
+| NotEqual | Result of the `subject` should not be equal to the `value`. |
+| GreaterThan | Result of the `subject` should be a number and must be larger than the `value`. |
+| LessThan | Result of the `subject` should be a number and must be less than the `value`. |
+| In | Result of the `subject` should be a part of the `set`. |
+| NotIn | Result of the `subject` should be a part of the `set`. |
+| RegexMatch | Result of the `subject` should match the PCRE regex pattern of the `value`. |
+| RegexNotMatch | Result of the `subject` should not match the PCRE regex pattern of the `value`. |
+| RegexMatchCaseInsensitive | Similar to `RegexMatch` but case insensitive. |
+| RegexNotMatchCaseInsensitive | Similar to `RegexNotMatch` but case insensitive. |
-## Service Resolve Granularity
+## Service resolution granularity
-The service resolve granularity determines whether the [Serivce ClusterIP](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) or its endpoints should be filled in the target upstream of APISIX.
+By default, the service referenced will be watched to update its endpoint list in APISIX. To just use the `ClusterIP` of the service, you can set the `resolveGranularity` attribute to `service` (defaults to `endpoint`):
-| Granularity | Meaning |
-|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| endpoint | Filled upstream nodes by Pods' IP. ApisixUpstream healthCheck is only effective on this case. |
-| service | Filled upstream nodes by Service ClusterIP, in such a case, loadbalacing are implemented by [kube-proxy](https://kubernetes.io/docs/concepts/overview/components/#kube-proxy). |
+| Granularity | Description |
+| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| endpoint | Upstream nodes are pods' IP adresses. |
+| service | Upstream nodes are service cluster IP. Load balancing is implemented by [kube-proxy](https://kubernetes.io/docs/concepts/overview/components/#kube-proxy). |