pub struct GrpcRouteSpec {
pub inner: CommonRouteSpec,
pub hostnames: Option<Vec<String>>,
pub rules: Option<Vec<GrpcRouteRule>>,
}
Expand description
Spec defines the desired state of GrpcRoute.
Fields§
§inner: CommonRouteSpec
Common route information.
hostnames: Option<Vec<String>>
Hostnames defines a set of hostnames to match against the GRPC Host header to select a GRPCRoute to process the request. This matches the RFC 1123 definition of a hostname with 2 notable exceptions:
- IPs are not allowed.
- A hostname may be prefixed with a wildcard label (
*.
). The wildcard label MUST appear by itself as the first label.
If a hostname is specified by both the Listener and GRPCRoute, there MUST be at least one intersecting hostname for the GRPCRoute to be attached to the Listener. For example:
- A Listener with
test.example.com
as the hostname matches GRPCRoutes that have either not specified any hostnames, or have specified at least one oftest.example.com
or*.example.com
. - A Listener with
*.example.com
as the hostname matches GRPCRoutes that have either not specified any hostnames or have specified at least one hostname that matches the Listener hostname. For example,test.example.com
and*.example.com
would both match. On the other hand,example.com
andtest.example.net
would not match.
Hostnames that are prefixed with a wildcard label (*.
) are interpreted
as a suffix match. That means that a match for *.example.com
would match
both test.example.com
, and foo.test.example.com
, but not example.com
.
If both the Listener and GRPCRoute have specified hostnames, any
GRPCRoute hostnames that do not match the Listener hostname MUST be
ignored. For example, if a Listener specified *.example.com
, and the
GRPCRoute specified test.example.com
and test.example.net
,
test.example.net
MUST NOT be considered for a match.
If both the Listener and GRPCRoute have specified hostnames, and none
match with the criteria above, then the GRPCRoute MUST NOT be accepted by
the implementation. The implementation MUST raise an ‘Accepted’ Condition
with a status of False
in the corresponding RouteParentStatus.
If a Route (A) of type HTTPRoute or GRPCRoute is attached to a Listener and that listener already has another Route (B) of the other type attached and the intersection of the hostnames of A and B is non-empty, then the implementation MUST accept exactly one of these two routes, determined by the following criteria, in order:
- The oldest Route based on creation timestamp.
- The Route appearing first in alphabetical order by “{namespace}/{name}”.
The rejected Route MUST raise an ‘Accepted’ condition with a status of ‘False’ in the corresponding RouteParentStatus.
Support: Core
rules: Option<Vec<GrpcRouteRule>>
Rules are a list of Grpc matchers, filters and actions.
Trait Implementations§
Source§impl Clone for GrpcRouteSpec
impl Clone for GrpcRouteSpec
Source§fn clone(&self) -> GrpcRouteSpec
fn clone(&self) -> GrpcRouteSpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for GrpcRouteSpec
impl Debug for GrpcRouteSpec
Source§impl Default for GrpcRouteSpec
impl Default for GrpcRouteSpec
Source§fn default() -> GrpcRouteSpec
fn default() -> GrpcRouteSpec
Source§impl<'de> Deserialize<'de> for GrpcRouteSpec
impl<'de> Deserialize<'de> for GrpcRouteSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for GrpcRouteSpec
impl JsonSchema for GrpcRouteSpec
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read more