mirror of https://github.com/istio/istio.io.git
Improve gateway topology documentation to be user-facing (#9090)
* Improve gateway topology documentation to be user-facing * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Ram Vennam <rvennam@us.ibm.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Ram Vennam <rvennam@us.ibm.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Ram Vennam <rvennam@us.ibm.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Ram Vennam <rvennam@us.ibm.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * 2nd revision * Minor change * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> * rulesets -> rule sets * Fix grammar * Neeraj's feedback * Linting issue * Update content/en/docs/ops/configuration/traffic-management/network-topologies/index.md Co-authored-by: Sven Mawson <sven@google.com> Co-authored-by: Ram Vennam <rvennam@us.ibm.com> Co-authored-by: Sven Mawson <sven@google.com>
This commit is contained in:
parent
b115e19f9d
commit
0421e0b8e5
|
|
@ -7,21 +7,33 @@ owner: istio/wg-networking-maintainers
|
||||||
test: no
|
test: no
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuring network topologies
|
## Forwarding external client attributes (IP address, certificate info) to destination workloads
|
||||||
|
|
||||||
{{< boilerplate experimental >}}
|
{{< boilerplate experimental >}}
|
||||||
|
|
||||||
Istio provides the ability to manage settings like [X-Forwarded-For](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-for) (XFF)
|
Many applications require knowing the client IP address and certificate information of the originating request to behave
|
||||||
and [X-Forwarded-Client-Cert](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-client-cert)
|
properly. Notable cases include logging and audit tools that require the client IP be populated and security tools,
|
||||||
(XFCC), which are dependent on how the gateway workloads are deployed. This is currently an in-development feature. For more
|
such as Web Application Firewalls (WAF), that need this information to apply rule sets properly. The ability to
|
||||||
information on `X-Forwarded-For`, see the IETF's [RFC](https://tools.ietf.org/html/rfc7239).
|
provide client attributes to services has long been a staple of reverse proxies. To forward these client
|
||||||
|
attributes to destination workloads, proxies use the `X-Forwarded-For` (XFF) and `X-Forwarded-Client-Cert` (XFCC) headers.
|
||||||
|
|
||||||
You might choose to deploy Istio ingress gateways in various network topologies
|
Today's networks vary widely in nature, but support for these attributes is a requirement no matter what the network topology is.
|
||||||
(e.g. behind Cloud Load Balancers, a self-managed Load Balancer or directly expose the
|
This information should be preserved
|
||||||
Istio ingress gateway to the Internet). As such, these topologies require different ingress gateway configurations for
|
and forwarded whether the network uses cloud-based Load Balancers, on-premise Load Balancers, gateways that are
|
||||||
transporting correct client attributes like IP addresses and certificates to the workloads running in the cluster.
|
exposed directly to the internet, gateways that serve many intermediate proxies, and other deployment topologies not
|
||||||
|
specified.
|
||||||
|
|
||||||
Configuration of XFF and XFCC headers can be set globally for all gateway workloads via `MeshConfig` or per gateway using a pod annotation. For example, to configure globally during install or upgrade when using an `IstioOperator` custom resource:
|
While Istio provides an [ingress gateway](/docs/tasks/traffic-management/ingress/ingress-control/), given the varieties
|
||||||
|
of architectures mentioned above, reasonable defaults are not able to be shipped that support the proper forwarding of
|
||||||
|
client attributes to the destination workloads.
|
||||||
|
This becomes ever more vital as Istio multicluster deployment models become more common.
|
||||||
|
|
||||||
|
For more information on `X-Forwarded-For`, see the IETF's [RFC](https://tools.ietf.org/html/rfc7239).
|
||||||
|
|
||||||
|
## Configuring network topologies
|
||||||
|
|
||||||
|
Configuration of XFF and XFCC headers can be set globally for all gateway workloads via `MeshConfig` or per gateway using
|
||||||
|
a pod annotation. For example, to configure globally during install or upgrade when using an `IstioOperator` custom resource:
|
||||||
|
|
||||||
{{< text yaml >}}
|
{{< text yaml >}}
|
||||||
spec:
|
spec:
|
||||||
|
|
@ -176,7 +188,7 @@ for examples of using this capability.
|
||||||
|
|
||||||
The [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) allows for exchanging and preservation of client attributes across multiple proxies without relying on Layer 7 protocols.
|
The [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) allows for exchanging and preservation of client attributes across multiple proxies without relying on Layer 7 protocols.
|
||||||
|
|
||||||
If your external load balancer is configured to use the PROXY protocol, the Istio gateway must also be configured accept PROXY protocol. Enabling this requires adding [Envoy Proxy Protocol filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/listener_filters/proxy_protocol) using an `EnvoyFilter` applied on the gateway workload. For example:
|
If your external load balancer is configured to use the PROXY protocol, the Istio gateway must also be configured to accept the PROXY protocol. Enabling this requires adding the [Envoy Proxy Protocol filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/listener_filters/proxy_protocol) using an `EnvoyFilter` applied on the gateway workload. For example:
|
||||||
|
|
||||||
{{< text yaml >}}
|
{{< text yaml >}}
|
||||||
apiVersion: networking.istio.io/v1alpha3
|
apiVersion: networking.istio.io/v1alpha3
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue