pub struct GRPCRouteRules {
pub backend_refs: Option<Vec<GRPCRouteRulesBackendRefs>>,
pub filters: Option<Vec<GRPCRouteRulesFilters>>,
pub matches: Option<Vec<GRPCRouteRulesMatches>>,
pub name: Option<String>,
pub session_persistence: Option<GRPCRouteRulesSessionPersistence>,
}
Expand description
GRPCRouteRule defines the semantics for matching a gRPC request based on conditions (matches), processing it (filters), and forwarding the request to an API object (backendRefs).
Fields§
§backend_refs: Option<Vec<GRPCRouteRulesBackendRefs>>
BackendRefs defines the backend(s) where matching requests should be sent.
Failure behavior here depends on how many BackendRefs are specified and how many are invalid.
If all entries in BackendRefs are invalid, and there are also no filters
specified in this route rule, all traffic which matches this rule MUST
receive an UNAVAILABLE
status.
See the GRPCBackendRef definition for the rules about what makes a single GRPCBackendRef invalid.
When a GRPCBackendRef is invalid, UNAVAILABLE
statuses MUST be returned for
requests that would have otherwise been routed to an invalid backend. If
multiple backends are specified, and some are invalid, the proportion of
requests that would otherwise have been routed to an invalid backend
MUST receive an UNAVAILABLE
status.
For example, if two backends are specified with equal weights, and one is
invalid, 50 percent of traffic MUST receive an UNAVAILABLE
status.
Implementations may choose how that 50 percent is determined.
Support: Core for Kubernetes Service
Support: Implementation-specific for any other resource
Support for weight: Core
filters: Option<Vec<GRPCRouteRulesFilters>>
Filters define the filters that are applied to requests that match this rule.
The effects of ordering of multiple behaviors are currently unspecified. This can change in the future based on feedback during the alpha stage.
Conformance-levels at this level are defined based on the type of filter:
- ALL core filters MUST be supported by all implementations that support GRPCRoute.
- Implementers are encouraged to support extended filters.
- Implementation-specific custom filters have no API guarantees across implementations.
Specifying the same filter multiple times is not supported unless explicitly indicated in the filter.
If an implementation can not support a combination of filters, it must clearly
document that limitation. In cases where incompatible or unsupported
filters are specified and cause the Accepted
condition to be set to status
False
, implementations may use the IncompatibleFilters
reason to specify
this configuration error.
Support: Core
matches: Option<Vec<GRPCRouteRulesMatches>>
Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if any one of the matches is satisfied.
For example, take the following matches configuration:
matches:
- method:
service: foo.bar
headers:
values:
version: 2
- method:
service: foo.bar.v2
For a request to match against this rule, it MUST satisfy EITHER of the two conditions:
- service of foo.bar AND contains the header
version: 2
- service of foo.bar.v2
See the documentation for GRPCRouteMatch on how to specify multiple match conditions to be ANDed together.
If no matches are specified, the implementation MUST match every gRPC request.
Proxy or Load Balancer routing configuration generated from GRPCRoutes MUST prioritize rules based on the following criteria, continuing on ties. Merging MUST not be done between GRPCRoutes and HTTPRoutes. Precedence MUST be given to the rule with the largest number of:
- Characters in a matching non-wildcard hostname.
- Characters in a matching hostname.
- Characters in a matching service.
- Characters in a matching method.
- Header matches.
If ties still exist across multiple Routes, matching precedence MUST be determined in order of the following criteria, continuing on ties:
- The oldest Route based on creation timestamp.
- The Route appearing first in alphabetical order by “{namespace}/{name}”.
If ties still exist within the Route that has been given precedence, matching precedence MUST be granted to the first matching rule meeting the above criteria.
name: Option<String>
Name is the name of the route rule. This name MUST be unique within a Route if it is set.
Support: Extended
session_persistence: Option<GRPCRouteRulesSessionPersistence>
SessionPersistence defines and configures session persistence for the route rule.
Support: Extended
Trait Implementations§
source§impl Clone for GRPCRouteRules
impl Clone for GRPCRouteRules
source§fn clone(&self) -> GRPCRouteRules
fn clone(&self) -> GRPCRouteRules
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for GRPCRouteRules
impl Debug for GRPCRouteRules
source§impl Default for GRPCRouteRules
impl Default for GRPCRouteRules
source§fn default() -> GRPCRouteRules
fn default() -> GRPCRouteRules
source§impl<'de> Deserialize<'de> for GRPCRouteRules
impl<'de> Deserialize<'de> for GRPCRouteRules
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 GRPCRouteRules
impl JsonSchema for GRPCRouteRules
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(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moresource§impl PartialEq for GRPCRouteRules
impl PartialEq for GRPCRouteRules
source§impl Serialize for GRPCRouteRules
impl Serialize for GRPCRouteRules
impl StructuralPartialEq for GRPCRouteRules
Auto Trait Implementations§
impl Freeze for GRPCRouteRules
impl RefUnwindSafe for GRPCRouteRules
impl Send for GRPCRouteRules
impl Sync for GRPCRouteRules
impl Unpin for GRPCRouteRules
impl UnwindSafe for GRPCRouteRules
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)