Skip to content

Istio Gateway

在 Istio 里,“Gateway” 这个词通常有两层含义:

  1. Istio CRD 资源Gateway 是 Istio 提供的一种自定义资源(Custom Resource),用于定义网关的监听端口、协议、域名证书等,并由“具备相应 Selector 标签的 pod(Envoy代理)”来实现这些配置。
  2. 网关角色(Gateway 实例):具体部署在集群中的某些 Envoy 网关实例,用来承载由 Gateway CRD 声明的相关功能。

基于用途和流量方向,一般会将这些网关实例分为以下几个类型:

1. Ingress Gateway

  • 作用:处理从集群/网格外部进入网格内部的流量(南北向流量:外→内)。
  • 使用场景
    1. 对外暴露网格内部的服务,让外部请求可以访问网格内微服务。
    2. 在入口处进行 HTTPS/TLS 终止或双向 TLS 校验。
    3. 借助 VirtualService 做 HTTP 路由规则、灰度发布、熔断、重试等流量管理。
    4. 集中采集访问日志、指标和调用链信息,方便做可观测性和审计。
  • 工作原理
    1. 部署一个或多个带有 istio: ingressgateway 等标签的 Envoy 网关 pod。
    2. 通过 Gateway CRD 定义该网关要监听的端口(HTTP、HTTPS、TCP 等)、域名证书。
    3. 再通过 VirtualService 将匹配到该 Gateway 的流量路由到网格内的服务。

2. Egress Gateway

  • 作用:处理从网格内部到网格外部的流量(南北向流量:内→外)。
  • 使用场景
    1. 统一管理和控制网格内服务访问外部 API 或第三方服务(如数据库、SaaS)。
    2. 配置安全策略、访问控制,避免网格内服务任意访问外部网络。
    3. 统一出口 NAT 或流量审计:如果需要只有特定出口 IP 可以对外通信,就可以把流量集中到 Egress Gateway 进行 NAT。
    4. 监控和可观测:可以在出口处统一收集访问外部的流量信息。
  • 工作原理
    1. 部署一个或多个带有 istio: egressgateway 等标签的 Envoy 网关 pod。
    2. VirtualServiceServiceEntry 中指定外部流量要通过该网关转发。
    3. Egress Gateway 可以对外部目标进行 TLS 透传或终止,也可结合策略(AuthorizationPolicy 等)进行安全管控。

3. East-West Gateway(或称 Mesh Expansion / Multi-Cluster Gateway)

  • 作用:主要用于多集群场景或网格扩展场景,处理网格间(集群与集群间)的“东西向”流量。
    • 从一个集群到另外一个集群的流量,或者网格与外部 VM 工作负载之间的流量。
    • 也可以称为“East-West Gateway”、“跨集群网关”或“内部网关”等。
  • 使用场景
    1. 多集群互联:集群 A 调用集群 B 内的服务,需要通过东西向网关进行路由和安全策略。
    2. 跨网络:当集群间 Pod IP 不可直连,需要网关做转发。
    3. 虚拟机接入:将 VM 上的应用纳入网格,需要通过东西向网关让 VM 与集群内服务互通。
  • 工作原理
    1. 部署一个带有 istio: eastwestgateway 或类似标签的 Envoy 网关实例。
    2. 配置该网关监听相应端口(通常是 mTLS、TLS 等),使得外部或其他集群可通过网关与网格内进行安全通信。
    3. 与多集群配置中的服务发现(ServiceEntry 或自动多集群配置)联动,实现跨集群流量转发。

4. 其他特殊用途网关

Istio 并不限制你只能使用上述三类标签,你可以根据实际需求定义“专用网关”来处理特定协议或场景,比如:

  • TCP Gateway:只处理 TCP 流量,不做 HTTP 层解析。
  • API Gateway / GraphQL Gateway:在网关 Envoy 之上加自定义过滤器,处理 API 或 GraphQL 流量。
  • 自定义 Gateway:打上自己的选择器标签,利用 Istio Gateway CRD 做有针对性的端口和协议转发。

这些本质上还是基于 Envoy 的网关实例,通过 Gateway CRD 声明监听端口与协议,只是用途更聚焦,功能更定制化。


5. 总结

  • Ingress Gateway:从外部进来的流量入口(外→内)。
  • Egress Gateway:从网格内部出到外部的流量出口(内→外)。
  • East-West Gateway:网格之间(或集群之间)的东西向通信通道(集群 A↔集群 B),常见于多集群/混合云场景。

从运维视角看,它们都是运行在 Envoy 网关实例之上,由 Istio Gateway CRD(以及 VirtualService 等)声明具体的监听配置、域名证书和路由规则。不同的“网关类型”更多是我们从业务流量方向与部署场景角度进行区分,以便更好地理解和配置 Istio 的流量治理。

本文作者:许怀安
创作时间:2025-04-09
版权声明:本博客所有文章除特别声明外,均采用BY-NC-SA许可协议。转载请禀明出处!

许怀安 | MIT License