mirror of https://github.com/istio/istio.io.git
Update reference docs. (#3624)
This commit is contained in:
parent
fbd2b162fb
commit
8cfa57999d
|
@ -110,6 +110,10 @@ number_of_entries: 5
|
||||||
<td>The time in seconds that Envoy will drain connections during a hot restart (default `45s`)</td>
|
<td>The time in seconds that Envoy will drain connections during a hot restart (default `45s`)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td><code>--envoyMetricsServiceAddress <string></code></td>
|
||||||
|
<td>Host and Port of an Envoy Metrics Service API implementation (e.g. metrics-service:15000) (default ``)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td><code>--id <string></code></td>
|
<td><code>--id <string></code></td>
|
||||||
<td>Proxy unique ID. If not provided uses ${POD_NAME}.${POD_NAMESPACE} from environment variables (default ``)</td>
|
<td>Proxy unique ID. If not provided uses ${POD_NAME}.${POD_NAMESPACE} from environment variables (default ``)</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -488,6 +488,14 @@ Fallback to old identity format(without trust domain) if not set.</p>
|
||||||
<td>
|
<td>
|
||||||
<p>Locality based load balancing distribution or failover settings.</p>
|
<p>Locality based load balancing distribution or failover settings.</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="MeshConfig-dns_refresh_rate">
|
||||||
|
<td><code>dnsRefreshRate</code></td>
|
||||||
|
<td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">google.protobuf.Duration</a></code></td>
|
||||||
|
<td>
|
||||||
|
<p>Configures DNS refresh rate for Envoy clusters of type STRICT_DNS</p>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -14,12 +14,12 @@ describes a set of ports that should be exposed, the type of protocol to
|
||||||
use, SNI configuration for the load balancer, etc.</p>
|
use, SNI configuration for the load balancer, etc.</p>
|
||||||
|
|
||||||
<p>For example, the following Gateway configuration sets up a proxy to act
|
<p>For example, the following Gateway configuration sets up a proxy to act
|
||||||
as a load balancer exposing port 80 and 9080 (http), 443 (https), and
|
as a load balancer exposing port 80 and 9080 (http), 443 (https),
|
||||||
port 2379 (TCP) for ingress. The gateway will be applied to the proxy
|
9443(https) and port 2379 (TCP) for ingress. The gateway will be
|
||||||
running on a pod with labels <code>app: my-gateway-controller</code>. While Istio
|
applied to the proxy running on a pod with labels <code>app:
|
||||||
will configure the proxy to listen on these ports, it is the
|
my-gateway-controller</code>. While Istio will configure the proxy to listen
|
||||||
responsibility of the user to ensure that external traffic to these
|
on these ports, it is the responsibility of the user to ensure that
|
||||||
ports are allowed into the mesh.</p>
|
external traffic to these ports are allowed into the mesh.</p>
|
||||||
|
|
||||||
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
kind: Gateway
|
kind: Gateway
|
||||||
|
@ -50,6 +50,15 @@ spec:
|
||||||
mode: SIMPLE # enables HTTPS on this port
|
mode: SIMPLE # enables HTTPS on this port
|
||||||
serverCertificate: /etc/certs/servercert.pem
|
serverCertificate: /etc/certs/servercert.pem
|
||||||
privateKey: /etc/certs/privatekey.pem
|
privateKey: /etc/certs/privatekey.pem
|
||||||
|
- port:
|
||||||
|
number: 9443
|
||||||
|
name: https
|
||||||
|
protocol: HTTPS
|
||||||
|
hosts:
|
||||||
|
- "bookinfo-namespace/*.bookinfo.com"
|
||||||
|
tls:
|
||||||
|
mode: SIMPLE # enables HTTPS on this port
|
||||||
|
credentialName: bookinfo-secret # fetches certs from kubernetes secret
|
||||||
- port:
|
- port:
|
||||||
number: 9080
|
number: 9080
|
||||||
name: http-wildcard
|
name: http-wildcard
|
||||||
|
@ -142,6 +151,30 @@ spec:
|
||||||
number: 5555
|
number: 5555
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
|
<p>It is possible to restrict the set of virtual services that can bind to
|
||||||
|
a gateway server using the namespace/hostname syntax in the hosts field.
|
||||||
|
For example, the following Gateway allows any virtual service in the ns1
|
||||||
|
namespace to bind to it, while restricting only the virtual service with
|
||||||
|
foo.bar.com host in the ns2 namespace to bind to it.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: Gateway
|
||||||
|
metadata:
|
||||||
|
name: my-gateway
|
||||||
|
namespace: some-config-namespace
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: my-gateway-controller
|
||||||
|
servers:
|
||||||
|
- port:
|
||||||
|
number: 80
|
||||||
|
name: http
|
||||||
|
protocol: HTTP
|
||||||
|
hosts:
|
||||||
|
- "ns1/*"
|
||||||
|
- "ns2/foo.bar.com"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
<h2 id="Gateway">Gateway</h2>
|
<h2 id="Gateway">Gateway</h2>
|
||||||
<section>
|
<section>
|
||||||
<table class="message-fields">
|
<table class="message-fields">
|
||||||
|
@ -294,8 +327,7 @@ spec:
|
||||||
<td><code><a href="#Port">Port</a></code></td>
|
<td><code><a href="#Port">Port</a></code></td>
|
||||||
<td>
|
<td>
|
||||||
<p>REQUIRED: The Port on which the proxy should listen for incoming
|
<p>REQUIRED: The Port on which the proxy should listen for incoming
|
||||||
connections. If using Unix domain socket, use 0 as the port number,
|
connections.</p>
|
||||||
with a valid protocol and port name, along with the bind parameter.</p>
|
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -416,18 +448,21 @@ client side certificate.</p>
|
||||||
<td><code>string</code></td>
|
<td><code>string</code></td>
|
||||||
<td>
|
<td>
|
||||||
<p>The credentialName stands for a unique identifier that can be used
|
<p>The credentialName stands for a unique identifier that can be used
|
||||||
to identify the serverCertificate and the privateKey. The credentialName
|
to identify the serverCertificate and the privateKey. The
|
||||||
appended with suffix “-cacert” is used to identify the CaCertificates
|
credentialName appended with suffix “-cacert” is used to identify
|
||||||
associated with this server. Gateway workloads capable of fetching
|
the CaCertificates associated with this server. Gateway workloads
|
||||||
credentials from a remote credential store will be configured to retrieve
|
capable of fetching credentials from a remote credential store such
|
||||||
the serverCertificate and the privateKey using credentialName, instead of
|
as kubernetes secrets, will be configured to retrieve the
|
||||||
using the file system paths specified above. If using mutual TLS,
|
serverCertificate and the privateKey using credentialName, instead
|
||||||
|
of using the file system paths specified above. If using mutual TLS,
|
||||||
gateway workloads will retrieve the CaCertificates using
|
gateway workloads will retrieve the CaCertificates using
|
||||||
credentialName-cacert. The semantics of the name are platform dependent.
|
credentialName-cacert. The semantics of the name are platform
|
||||||
In Kubernetes, the default Istio supplied credential server expects the
|
dependent. In Kubernetes, the default Istio supplied credential
|
||||||
credentialName to match the name of the Kubernetes secret that holds the
|
server expects the credentialName to match the name of the
|
||||||
server certificate, the private key, and the CA certificate
|
Kubernetes secret that holds the server certificate, the private
|
||||||
(if using mutual TLS).</p>
|
key, and the CA certificate (if using mutual TLS). Set the
|
||||||
|
ISTIO<em>META</em>USER_SDS metadata variable in the gateway’s proxy to
|
||||||
|
enable the dynamic credential fetching feature.</p>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -16,6 +16,27 @@ endpoints). These services could be external to the mesh (e.g., web
|
||||||
APIs) or mesh-internal services that are not part of the platform’s
|
APIs) or mesh-internal services that are not part of the platform’s
|
||||||
service registry (e.g., a set of VMs talking to services in Kubernetes).</p>
|
service registry (e.g., a set of VMs talking to services in Kubernetes).</p>
|
||||||
|
|
||||||
|
<p>The following example declares a few external APIs accessed by internal
|
||||||
|
applications over HTTPS. The sidecar inspects the SNI value in the
|
||||||
|
ClientHello message to route to the appropriate external service.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: ServiceEntry
|
||||||
|
metadata:
|
||||||
|
name: external-svc-https
|
||||||
|
spec:
|
||||||
|
hosts:
|
||||||
|
- api.dropboxapi.com
|
||||||
|
- www.googleapis.com
|
||||||
|
- api.facebook.com
|
||||||
|
location: MESH_EXTERNAL
|
||||||
|
ports:
|
||||||
|
- number: 443
|
||||||
|
name: https
|
||||||
|
protocol: TLS
|
||||||
|
resolution: DNS
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
<p>The following configuration adds a set of MongoDB instances running on
|
<p>The following configuration adds a set of MongoDB instances running on
|
||||||
unmanaged VMs to Istio’s registry, so that these services can be treated
|
unmanaged VMs to Istio’s registry, so that these services can be treated
|
||||||
as any other service in the mesh. The associated DestinationRule is used
|
as any other service in the mesh. The associated DestinationRule is used
|
||||||
|
@ -58,26 +79,23 @@ spec:
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>The following example uses a combination of service entry and TLS
|
<p>The following example uses a combination of service entry and TLS
|
||||||
routing in virtual service to demonstrate the use of SNI routing to
|
routing in a virtual service to steer traffic based on the SNI value to
|
||||||
forward unterminated TLS traffic from the application to external
|
an internal egress firewall.</p>
|
||||||
services via the sidecar. The sidecar inspects the SNI value in the
|
|
||||||
ClientHello message to route to the appropriate external service.</p>
|
|
||||||
|
|
||||||
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
kind: ServiceEntry
|
kind: ServiceEntry
|
||||||
metadata:
|
metadata:
|
||||||
name: external-svc-https
|
name: external-svc-redirect
|
||||||
spec:
|
spec:
|
||||||
hosts:
|
hosts:
|
||||||
- api.dropboxapi.com
|
- wikipedia.org
|
||||||
- www.googleapis.com
|
- "*.wikipedia.org"
|
||||||
- api.facebook.com
|
|
||||||
location: MESH_EXTERNAL
|
location: MESH_EXTERNAL
|
||||||
ports:
|
ports:
|
||||||
- number: 443
|
- number: 443
|
||||||
name: https
|
name: https
|
||||||
protocol: TLS
|
protocol: TLS
|
||||||
resolution: DNS
|
resolution: NONE
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<p>And the associated VirtualService to route based on the SNI value.</p>
|
<p>And the associated VirtualService to route based on the SNI value.</p>
|
||||||
|
@ -88,34 +106,22 @@ metadata:
|
||||||
name: tls-routing
|
name: tls-routing
|
||||||
spec:
|
spec:
|
||||||
hosts:
|
hosts:
|
||||||
- api.dropboxapi.com
|
- wikipedia.org
|
||||||
- www.googleapis.com
|
- "*.wikipedia.org"
|
||||||
- api.facebook.com
|
|
||||||
tls:
|
tls:
|
||||||
- match:
|
- match:
|
||||||
- port: 443
|
- sniHosts:
|
||||||
sniHosts:
|
- wikipedia.org
|
||||||
- api.dropboxapi.com
|
- "*.wikipedia.org"
|
||||||
route:
|
route:
|
||||||
- destination:
|
- destination:
|
||||||
host: api.dropboxapi.com
|
host: internal-egress-firewall.ns1.svc.cluster.local
|
||||||
- match:
|
|
||||||
- port: 443
|
|
||||||
sniHosts:
|
|
||||||
- www.googleapis.com
|
|
||||||
route:
|
|
||||||
- destination:
|
|
||||||
host: www.googleapis.com
|
|
||||||
- match:
|
|
||||||
- port: 443
|
|
||||||
sniHosts:
|
|
||||||
- api.facebook.com
|
|
||||||
route:
|
|
||||||
- destination:
|
|
||||||
host: api.facebook.com
|
|
||||||
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The virtual service with TLS match serves to override the default SNI
|
||||||
|
match. In the absence of a virtual service, traffic will be forwarded to
|
||||||
|
the wikipedia domains.</p>
|
||||||
|
|
||||||
<p>The following example demonstrates the use of a dedicated egress gateway
|
<p>The following example demonstrates the use of a dedicated egress gateway
|
||||||
through which all external service traffic is forwarded.
|
through which all external service traffic is forwarded.
|
||||||
The ‘exportTo’ field allows for control over the visibility of a service
|
The ‘exportTo’ field allows for control over the visibility of a service
|
||||||
|
@ -319,11 +325,14 @@ spec:
|
||||||
<td><code>string[]</code></td>
|
<td><code>string[]</code></td>
|
||||||
<td>
|
<td>
|
||||||
<p>REQUIRED. The hosts associated with the ServiceEntry. Could be a DNS
|
<p>REQUIRED. The hosts associated with the ServiceEntry. Could be a DNS
|
||||||
name with wildcard prefix (external services only). DNS names in hosts
|
name with wildcard prefix (external services only). For HTTP traffic
|
||||||
will be ignored if the application accesses the service over non-HTTP
|
the HTTP Host/Authority header will be matched against the hosts field.
|
||||||
protocols such as mongo/opaque TCP/HTTPS. In such scenarios, the
|
For HTTPs or TLS traffic containing Server Name Indication (SNI), the SNI value
|
||||||
IP addresses specified in the Addresses field or the port will be used
|
will be matched against the hosts field. For all other protocols
|
||||||
to uniquely identify the destination.</p>
|
the hosts will be ignored, and the port and addresses fields
|
||||||
|
will be used if present. Note that when resolution is set to type DNS
|
||||||
|
and no endpoints are specified, the host field will be used as the DNS name
|
||||||
|
of the endpoint to route traffic to.</p>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -332,10 +341,9 @@ to uniquely identify the destination.</p>
|
||||||
<td><code>string[]</code></td>
|
<td><code>string[]</code></td>
|
||||||
<td>
|
<td>
|
||||||
<p>The virtual IP addresses associated with the service. Could be CIDR
|
<p>The virtual IP addresses associated with the service. Could be CIDR
|
||||||
prefix. For HTTP services, the addresses field will be ignored and
|
prefix. For HTTP traffic the addresses field will be ignored and
|
||||||
the destination will be identified based on the HTTP Host/Authority
|
the destination will be identified based on the HTTP Host/Authority
|
||||||
header. For non-HTTP protocols such as mongo/opaque TCP/HTTPS,
|
header. If one or more IP addresses are specified,
|
||||||
the hosts will be ignored. If one or more IP addresses are specified,
|
|
||||||
the incoming traffic will be identified as belonging to this service
|
the incoming traffic will be identified as belonging to this service
|
||||||
if the destination IP matches the IP/CIDRs specified in the addresses
|
if the destination IP matches the IP/CIDRs specified in the addresses
|
||||||
field. If the Addresses field is empty, traffic will be identified
|
field. If the Addresses field is empty, traffic will be identified
|
||||||
|
|
|
@ -83,6 +83,103 @@ spec:
|
||||||
- "prod-us1/*"
|
- "prod-us1/*"
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
|
<p>If the workload is deployed without IP tables based traffic capture, the
|
||||||
|
Sidecar resource is the only way to configure the ports on the proxy
|
||||||
|
attached to the workload. The following example declares a Sidecar
|
||||||
|
resource in the prod-us1 namespace for all pods with labels “app:
|
||||||
|
productpage” belonging to the productpage.prod-us1 service. Assuming
|
||||||
|
that these pods are deployed without IPtable rules (i.e. the Istio init
|
||||||
|
container) and the proxy metadata ISTIO<em>META</em>INTERCEPTION_MODE is set to
|
||||||
|
NONE, the specification below allows such pods to receive HTTP traffic
|
||||||
|
on port 9080 and forward it to the application listening on
|
||||||
|
127.0.0.1:8080. It also allows the application to communicate with a
|
||||||
|
backing MySQL database on 127.0.0.1:3306, that then gets proxied to the
|
||||||
|
externally hosted MySQL service at mysql.foo.com:3306.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: Sidecar
|
||||||
|
metadata:
|
||||||
|
name: no-ip-tables
|
||||||
|
namespace: prod-us1
|
||||||
|
spec:
|
||||||
|
workloadSelector:
|
||||||
|
labels:
|
||||||
|
app: productpage
|
||||||
|
ingress:
|
||||||
|
- port:
|
||||||
|
number: 9080 # binds to 0.0.0.0:9080
|
||||||
|
protocol: HTTP
|
||||||
|
name: somename
|
||||||
|
defaultEndpoint: 127.0.0.1:8080
|
||||||
|
captureMode: NONE # not needed if metadata is set for entire proxy
|
||||||
|
egress:
|
||||||
|
- port:
|
||||||
|
number: 3306
|
||||||
|
protocol: MYSQL
|
||||||
|
name: egressmysql
|
||||||
|
captureMode: NONE # not needed if metadata is set for entire proxy
|
||||||
|
bind: 127.0.0.1
|
||||||
|
hosts:
|
||||||
|
- "*/mysql.foo.com"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>And the associated service entry for routing to mysql.foo.com:3306</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: ServiceEntry
|
||||||
|
metadata:
|
||||||
|
name: external-svc-mysql
|
||||||
|
namespace: ns1
|
||||||
|
spec:
|
||||||
|
hosts:
|
||||||
|
- mysql.foo.com
|
||||||
|
ports:
|
||||||
|
- number: 3306
|
||||||
|
name: mysql
|
||||||
|
protocol: MYSQL
|
||||||
|
location: MESH_EXTERNAL
|
||||||
|
resolution: DNS
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>It is also possible to mix and match traffic capture modes in a single
|
||||||
|
proxy. For example, consider a setup where internal services are on the
|
||||||
|
192.168.0.0/16 subnet. So, IP tables are setup on the VM to capture all
|
||||||
|
outbound traffic on 192.168.0.0/16 subnet. Assume that the VM has an
|
||||||
|
additional network interface on 172.16.0.0/16 subnet for inbound
|
||||||
|
traffic. The following Sidecar configuration allows the VM to expose a
|
||||||
|
listener on 172.16.1.32:80 (the VM’s IP) for traffic arriving from the
|
||||||
|
172.16.0.0/16 subnet. Note that in this scenario, the
|
||||||
|
ISTIO<em>META</em>INTERCEPTION_MODE metadata on the proxy in the VM should
|
||||||
|
contain “REDIRECT” or “TPROXY” as its value, implying that IP tables
|
||||||
|
based traffic capture is active.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
|
||||||
|
kind: Sidecar
|
||||||
|
metadata:
|
||||||
|
name: partial-ip-tables
|
||||||
|
namespace: prod-us1
|
||||||
|
spec:
|
||||||
|
workloadSelector:
|
||||||
|
labels:
|
||||||
|
app: productpage
|
||||||
|
ingress:
|
||||||
|
- bind: 172.16.1.32
|
||||||
|
port:
|
||||||
|
number: 80 # binds to 172.16.1.32:80
|
||||||
|
protocol: HTTP
|
||||||
|
name: somename
|
||||||
|
defaultEndpoint: 127.0.0.1:8080
|
||||||
|
captureMode: NONE
|
||||||
|
egress:
|
||||||
|
# use the system detected defaults
|
||||||
|
# sets up configuration to handle outbound traffic to services
|
||||||
|
# in 192.168.0.0/16 subnet, based on information provided by the
|
||||||
|
# service registry
|
||||||
|
- captureMode: IPTABLES
|
||||||
|
hosts:
|
||||||
|
- "*/*"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
<h2 id="CaptureMode">CaptureMode</h2>
|
<h2 id="CaptureMode">CaptureMode</h2>
|
||||||
<section>
|
<section>
|
||||||
<p>CaptureMode describes how traffic to a listener is expected to be
|
<p>CaptureMode describes how traffic to a listener is expected to be
|
||||||
|
@ -298,7 +395,8 @@ namespace.</p>
|
||||||
inbound traffic to the attached workload. If omitted, Istio will
|
inbound traffic to the attached workload. If omitted, Istio will
|
||||||
automatically configure the sidecar based on the information about the workload
|
automatically configure the sidecar based on the information about the workload
|
||||||
obtained from the orchestration platform (e.g., exposed ports, services,
|
obtained from the orchestration platform (e.g., exposed ports, services,
|
||||||
etc.).</p>
|
etc.). If specified, inbound ports are configured if and only if the
|
||||||
|
workload is associated with a service.</p>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -12,7 +12,7 @@ support_link: https://apigee.com/about/support/portal
|
||||||
source_link: https://github.com/apigee/istio-mixer-adapter
|
source_link: https://github.com/apigee/istio-mixer-adapter
|
||||||
latest_release_link: https://github.com/apigee/istio-mixer-adapter/releases
|
latest_release_link: https://github.com/apigee/istio-mixer-adapter/releases
|
||||||
helm_chart_link:
|
helm_chart_link:
|
||||||
istio_versions: "1.0.0, 1.0.2, 1.0.3, 1.0.4, 1.0.5"
|
istio_versions: "1.0.0, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6"
|
||||||
supported_templates: authorization, analytics
|
supported_templates: authorization, analytics
|
||||||
number_of_entries: 3
|
number_of_entries: 3
|
||||||
---
|
---
|
||||||
|
|
Loading…
Reference in New Issue