From d341fc8fb63127bcdb407db6e6a5d0b6d24cb859 Mon Sep 17 00:00:00 2001
From: Shriram Rajagopalan Configuration affecting traffic routing. Here are a few terms useful to define
in the context of traffic routing.
CaptureMode describes how traffic to a listener is expected to be +captured. Applicable only when the listener is bound to an IP.
+ +| Name | +Description | +
|---|---|
DEFAULT |
+
+ The default capture mode defined by the environment + + |
+
IPTABLES |
+
+ Capture traffic using IPtables redirection + + |
+
NONE |
+
+ No traffic capture. When used in egress listener, the application is +expected to explicitly communicate with the listener port/unix +domain socket. When used in ingress listener, care needs to be taken +to ensure that the listener port is not in use by other processes on +the host. + + |
+
ConfigScope defines the visibility of an Istio configuration artifact in @@ -2151,12 +2192,43 @@
portPortThe port associated with the listener. If using unix domain socket, +use 0 as the port number, with a valid protocol. The port if +specified, will be used as the default destination port associated +with the imported hosts. If the port is omitted, Istio will infer the +listener ports based on the imported hosts. Note that when multiple +egress listeners are specified, where one or more listeners have +specific ports while others have no port, the hosts exposed on a +listener port will be based on the listener with the most specific +port.
+ +bindstringThe ip or the unix domain socket to which the listener should be bound +to. Port MUST be specified if bind is not empty. Format: x.x.x.x or +unix:///path/to/uds or unix://@foobar (Linux abstract namespace). If +omitted, Istio will autoconfigure the defaults based on imported +services, the workload to which this configuration is applied to and +the captureMode. If captureMode is NONE, bind will default to +127.0.0.1.
+ +captureModeCaptureModeWhen the bind address is an IP, the captureMode option dictates -how traffic to the listener is expected to be captured (or not).
+how traffic to the listener is expected to be captured (or not). +captureMode must be DEFAULT or NONE for unix domain socket binds.hostsstring[]One or more services/virtualServices exposed by the listener in -namespace/dnsName format. Publicly scoped services and +
REQUIRED: One or more services/virtualServices exposed by the listener +in namespace/dnsName format. Publicly scoped services and VirtualServices from remote namespaces corresponding to the specified hosts will be imported. The service in a namespace can be a service in the service registry (e.g., a kubernetes or cloud foundry service) or @@ -2183,6 +2255,67 @@
IstioIngressListener specifies the properties of an inbound +traffic listener on the sidecar proxy attached to a workload.
+ +| Field | +Type | +Description | +|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
port |
+Port |
+
+ REQUIRED. The port associated with the listener. If using +unix domain socket, use 0 as the port number, with a valid +protocol. + + |
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bind |
+string |
+
+ The ip or the unix domain socket to which the listener should be bound +to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux +abstract namespace). If omitted, Istio will autoconfigure the defaults +based on imported services and the workload to which this +configuration is applied to. + + |
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
captureMode |
+CaptureMode |
+
+ When the bind address is an IP, the captureMode option dictates +how traffic to the listener is expected to be captured (or not). +captureMode must be DEFAULT or NONE for unix domain socket binds. + + |
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
defaultEndpoint |
+string |
+
+ REQUIRED: The loopback IP endpoint or unix domain socket to which +traffic should be forwarded to. This configuration can be used to +redirect traffic arriving at the bind point on the sidecar to a port +or unix domain socket where the application workload is listening for +connections. Format should be 127.0.0.1:PORT or unix:///path/to/socket + |
workloadSelector |
+WorkloadSelector |
+
+ Criteria used to select the specific set of pods/VMs on which this +sidecar configuration should be applied. If omitted, the sidecar +configuration will be applied to all workloads in the same config +namespace. + + |
+||
ingress |
+IstioIngressListener[] |
+
+ Ingress specifies the configuration of the sidecar for processing +inbound traffic to the attached workload. If omitted, Istio will +autoconfigure the sidecar based on the information about the workload +obtained from the orchestration platform (e.g., exposed ports, services, +etc.). + + |
+||
egress |
IstioEgressListener[] |
@@ -4479,10 +4666,10 @@ labels |
map<string, string> |
- One or more labels that indicate a specific set of pods/VMs on which -this sidecar configuration should be applied. The scope of label -search is restricted to the configuration namespace in which the the -resource is present. +REQUIRED: One or more labels that indicate a specific set of pods/VMs +on which this sidecar configuration should be applied. The scope of +label search is restricted to the configuration namespace in which the +the resource is present. |
incremental |
+bool |
+
+ Request an incremental update for the specified collection. The source may choose to
+honor this request or ignore and and provide a full-state update in the corresponding
+ |
||
incremental |
+bool |
+
+ This resource response is an incremental update. The source should only send +incremental updates if the sink requested them. + |
The following example sets up locality weight for mesh wide service +Assume a service resides in “region1/zone1/” and “region1/zone2/”, +and originating clusters also reside in “region1/zone1/” and “region1/zone2/”. +This example specifies when clusters from “region1/zone1/” accessing the service, 80% of the traffic +is shipped to “region1/zone1/” ratings service endpoints, and the rest 20% to “region1/zone2/*”.
+ + distribute:
+ - from: region1/zone1/*
+ to:
+ "region1/zone1/*": 80
+ "region1/zone2/*": 20
+ - from: region1/zone2/*
+ to:
+ "region1/zone1/*": 20
+ "region1/zone2/*": 80
+
+
+The following example sets up locality failover policy for the ratings service +Assume a service resides in “region1” “region2” and “region3”, +This example specifies when clusters from “region1/zone1” accessing the service, +if endpoints in “region1” becomes unhealthy, traffic will begin to trickle to “region2”.
+ + failover:
+ - from: region1
+ to: region2
+
+
+Locality load balancing settings.
+ +| Field | +Type | +Description | +
|---|---|---|
distribute |
+LocalityLoadBalancerSetting.Distribute[] |
+
+ Optional: only distribute or failover can be set. +Explicitly specify loadbalancing weight across different zones and geographical locations. +Refer to Locality weighted load balancing +If empty, the locality weight is set according to the endpoints number within it. + + |
+
failover |
+LocalityLoadBalancerSetting.Failover[] |
+
+ Optional: only failover or distribute can be set. +Explicitly specify the region traffic will land on when endpoints in local region becomes unhealthy. +Should be used together with OutlierDetection to detect unhealthy endpoints. +Note: if no OutlierDetection specified, this will not take effect. + + |
+
Originating -> upstream cluster locality weight set, support wildcard matching ‘’ +‘’ matches all localities +‘region1/*’ matches all zones in region1
+ +| Field | +Type | +Description | +
|---|---|---|
from |
+string |
+
+ Originating locality, ‘/’ separated, e.g. ‘region/zone/sub_zone’. + + |
+
to |
+map<string, uint32> |
+
+ Upstream locality to loadbalancing weight map. The sum of all weights should be == 100. +Should assign load balancing weight for all localities, otherwise the traffic are not routed +following the percentage of weight. + + |
+
Specify the traffic failover policy. +As zone and sub_zone failover is supported by default, only region can be specified here.
+ +| Field | +Type | +Description | +|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
from |
+string |
+
+ Originating region. + + |
+|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
to |
+string |
+
+ Destination region the traffic will fail over to when endpoints in local region becomes unhealthy. + |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
localityLbSetting |
+LocalityLoadBalancerSetting |
+
+ Locality based load balancing distribution or failover settings. + |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
consistentHash |
LoadBalancerSettings.ConsistentHashLB (oneof) |
- | -
localityWeightSettings |
-LoadBalancerSettings.LocalityWeightSetting[] |
-
- Explicitly assign loadbalancing weight across different zones and geographical locations. -Refer to Locality weighted load balancing -If empty, the locality weight is set according to the endpoints number within it. -If duplicated settings are present, then the first one will take effect. - |
REQUIRED. Lifetime of the cookie. - |
-
-
-
Originating -> upstream cluster locality weight set, support wildcard matching ‘’ -‘’ matches all localities -‘region1/*’ matches all zones in region1
- -| Field | -Type | -Description | -
|---|---|---|
from |
-string |
-
- Originating locality, ‘/’ separated, e.g. ‘region/zone/sub_zone’. - - |
-
to |
-map<string, uint32> |
-
- Upstream locality to loadbalancing weight map. The sum of all weights should be == 100. -Should assign loadbalancing weight for all localities, otherwise the traffic are not routed -following the percentage of weight. - |
|
DNSName encoded as string. + |
+
+
+
Direct HTTP response for a client-facing error message which can be attached +to an RPC error.
+ +| Field | +Type | +Description | +
|---|---|---|
code |
+HttpStatusCode |
+
+ Optional HTTP status code. If not set, RPC error code is used. + + |
+
body |
+string |
+
+ HTTP response body. + |
HTTP response codes. +For more details: http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
+ +| Name | +Description | +
|---|---|
Empty |
+
+ Empty - This code not part of the HTTP status code specification, but it is needed for proto
+ |
+
Continue |
++ | +
OK |
++ | +
Created |
++ | +
Accepted |
++ | +
NonAuthoritativeInformation |
++ | +
NoContent |
++ | +
ResetContent |
++ | +
PartialContent |
++ | +
MultiStatus |
++ | +
AlreadyReported |
++ | +
IMUsed |
++ | +
MultipleChoices |
++ | +
MovedPermanently |
++ | +
Found |
++ | +
SeeOther |
++ | +
NotModified |
++ | +
UseProxy |
++ | +
TemporaryRedirect |
++ | +
PermanentRedirect |
++ | +
BadRequest |
++ | +
Unauthorized |
++ | +
PaymentRequired |
++ | +
Forbidden |
++ | +
NotFound |
++ | +
MethodNotAllowed |
++ | +
NotAcceptable |
++ | +
ProxyAuthenticationRequired |
++ | +
RequestTimeout |
++ | +
Conflict |
++ | +
Gone |
++ | +
LengthRequired |
++ | +
PreconditionFailed |
++ | +
PayloadTooLarge |
++ | +
URITooLong |
++ | +
UnsupportedMediaType |
++ | +
RangeNotSatisfiable |
++ | +
ExpectationFailed |
++ | +
MisdirectedRequest |
++ | +
UnprocessableEntity |
++ | +
Locked |
++ | +
FailedDependency |
++ | +
UpgradeRequired |
++ | +
PreconditionRequired |
++ | +
TooManyRequests |
++ | +
RequestHeaderFieldsTooLarge |
++ | +
InternalServerError |
++ | +
NotImplemented |
++ | +
BadGateway |
++ | +
ServiceUnavailable |
++ | +
GatewayTimeout |
++ | +
HTTPVersionNotSupported |
++ | +
VariantAlsoNegotiates |
++ | +
InsufficientStorage |
++ | +
LoopDetected |
++ | +
NotExtended |
++ | +
NetworkAuthenticationRequired |
+