Istio Gateway
在 Istio 里,“Gateway” 这个词通常有两层含义:
- Istio CRD 资源:
Gateway
是 Istio 提供的一种自定义资源(Custom Resource),用于定义网关的监听端口、协议、域名证书等,并由“具备相应 Selector 标签的 pod(Envoy代理)”来实现这些配置。 - 网关角色(Gateway 实例):具体部署在集群中的某些 Envoy 网关实例,用来承载由
Gateway
CRD 声明的相关功能。
基于用途和流量方向,一般会将这些网关实例分为以下几个类型:
1. Ingress Gateway
- 作用:处理从集群/网格外部进入网格内部的流量(南北向流量:外→内)。
- 使用场景:
- 对外暴露网格内部的服务,让外部请求可以访问网格内微服务。
- 在入口处进行 HTTPS/TLS 终止或双向 TLS 校验。
- 借助
VirtualService
做 HTTP 路由规则、灰度发布、熔断、重试等流量管理。 - 集中采集访问日志、指标和调用链信息,方便做可观测性和审计。
- 工作原理:
- 部署一个或多个带有
istio: ingressgateway
等标签的 Envoy 网关 pod。 - 通过
Gateway
CRD 定义该网关要监听的端口(HTTP、HTTPS、TCP 等)、域名证书。 - 再通过
VirtualService
将匹配到该 Gateway 的流量路由到网格内的服务。
- 部署一个或多个带有
2. Egress Gateway
- 作用:处理从网格内部到网格外部的流量(南北向流量:内→外)。
- 使用场景:
- 统一管理和控制网格内服务访问外部 API 或第三方服务(如数据库、SaaS)。
- 配置安全策略、访问控制,避免网格内服务任意访问外部网络。
- 统一出口 NAT 或流量审计:如果需要只有特定出口 IP 可以对外通信,就可以把流量集中到 Egress Gateway 进行 NAT。
- 监控和可观测:可以在出口处统一收集访问外部的流量信息。
- 工作原理:
- 部署一个或多个带有
istio: egressgateway
等标签的 Envoy 网关 pod。 - 在
VirtualService
或ServiceEntry
中指定外部流量要通过该网关转发。 - Egress Gateway 可以对外部目标进行 TLS 透传或终止,也可结合策略(AuthorizationPolicy 等)进行安全管控。
- 部署一个或多个带有
3. East-West Gateway(或称 Mesh Expansion / Multi-Cluster Gateway)
- 作用:主要用于多集群场景或网格扩展场景,处理网格间(集群与集群间)的“东西向”流量。
- 从一个集群到另外一个集群的流量,或者网格与外部 VM 工作负载之间的流量。
- 也可以称为“East-West Gateway”、“跨集群网关”或“内部网关”等。
- 使用场景:
- 多集群互联:集群 A 调用集群 B 内的服务,需要通过东西向网关进行路由和安全策略。
- 跨网络:当集群间 Pod IP 不可直连,需要网关做转发。
- 虚拟机接入:将 VM 上的应用纳入网格,需要通过东西向网关让 VM 与集群内服务互通。
- 工作原理:
- 部署一个带有
istio: eastwestgateway
或类似标签的 Envoy 网关实例。 - 配置该网关监听相应端口(通常是 mTLS、TLS 等),使得外部或其他集群可通过网关与网格内进行安全通信。
- 与多集群配置中的服务发现(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许可协议。转载请禀明出处!