集成 Envoy Gateway 作为 Istio 服务网格中的入口网关

本文介绍了如何将 Envoy Gateway 作为 Istio 服务网格中的入口网关集成,增强应用的安全性和可访问性。

阅读原文请转到:https://jimmysong.io/blog/envoy-gateway-integration-istio-mesh/

Istio 提供了对入口网关的强大而灵活的支持,利用 Envoy 代理在其 sidecar 模式下运行。尽管 Istio 专注于管理集群内服务之间的通信,Envoy Gateway 旨在将应用程序暴露给外部世界,处理用户请求,并支持高级功能,如 OIDC 单点登录。通过结合 Istio 服务网格的功能和 Envoy Gateway 的高级网关功能,可以增强整体应用程序的可访问性和安全性。

下图显示了 Istio 网格中入口网关的流量路径。

54d32d0391197718bd2fbed2580151a2.png

下一个图表显示了在引入 Envoy Gateway 后,流量如何从 Istio 网格的边缘流入内部网络。

bf8393f8527cb32a31b34b3399bc5888.png

准备 Envoy Gateway 与 Istio 之间的互操作性

要将 Envoy Gateway 用作 Istio 的入口网关,请考虑以下关键点:

  • • 在 Istio 安装期间避免启用入口网关。我们将手动安装并配置 Envoy Gateway 作为入口网关。

  • • 由于 Istio 和 Envoy Gateway 都使用 Envoy 作为代理,确保 Istio 将 Envoy sidecar 注入到 Envoy Gateway 的网关 Pod 中,以允许与 Istio 的数据平面安全通信。

  • • 配置由 Envoy Gateway 创建的 Envoy 代理的路由类型为 Service 而不是 Endpoint,以确保正确路由。

按照 快速启动文档 安装 Envoy Gateway。标记 Envoy Gateway 的命名空间以确保数据平面获得 Istio sidecar 注入:

kubectl label namespace envoy-gateway-system --overwrite=true istio-injection=enabled

配置 Envoy Gateway 的 sidecar 以不拦截进入网关的流量。注入的 sidecar 确保 Envoy Gateway 的组件及其创建的代理被包含在 Istio 网格中,并安装正确的证书以进行安全通信。

control-plane-tls.yaml

spec:
  ports:
  - port: 18000
    appProtocol: tls

应用补丁:

kubectl patch service -n envoy-gateway-system envoy-gateway --type strategic --patch-file control-plane-tls.yaml

配置 Envoy Gateway 不拦截入站流量:

teg-sidecars-no-inbound.yaml

apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
  name: data-plane-sidecars
  namespace: en
<think>嗯,用户这次转向了服务网格领域,询问Istio Egress Gateway的功能定位。结合用户提供的四段引用材料,核心需要提炼Egress Gateway服务网格架构中的不可替代性。 用户引用的材料[1]和[2]已经明确指出了关键点:Egress Gateway本质是服务网格的"边界守卫",专门治理出向流量。这让我想起TiDB里PD作为中央协调器的角色——虽然领域不同,但都是系统中承担特定关键功能的组件。不同的是,Egress Gateway采用代理模式而非PD的集中式管理。 特别注意到引用[3]提到的设计哲学:Gateway将L4-L6配置与L7配置解耦。这种分层设计很像网络协议栈,Egress Gateway相当于在传输层做统一拦截,再通过VirtualService绑定应用层路由规则。用户提供的材料[4]虽然偏重学习资源,但提到的Envoy Proxy正是Egress Gateway的技术底座。 用户可能隐含的深层需求是:为什么不能直接让Pod访问外部服务,非要加一层网关?这需要从三个维度解释:安全方面(集中策略实施点)、运维方面(统一流量观测点)、架构方面(屏蔽基础设施差异)。引用[2]提到的"无公网IP节点访问外部"就是典型场景。 突然意识到用户之前研究过TiDB集群故障影响,或许对高可用设计敏感。Egress Gateway本身支持多副本部署,但需要提醒用户:如果所有Egress Pod同时宕机,会导致外部访问完全中断——这点在架构设计时要考虑冗余。</think>Istio Egress Gateway服务网格的关键边界组件,其核心功能与作用可归纳为以下方面: --- ### **一、核心功能** 1. **统一出口流量控制** - 作为**专用出口代理**,强制所有出站流量(如访问外部 API、数据库)必须流经网关,实现集中式管理[^1][^2]。 - 示例配置: ```yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-egressgateway spec: selector: istio: egressgateway servers: - port: number: 443 name: https protocol: HTTPS hosts: - "*.example.com" tls: mode: MUTUAL ``` 2. **安全策略实施** - **TLS 加密**:网关与外部服务间强制 HTTPS 通信,防止中间人攻击[^1]。 - **身份认证**:支持 mTLS 双向认证,确保外部服务合法性[^3]。 3. **流量监控与审计** - 集成 Prometheus 收集流量指标(如请求成功率、延迟)[^4]。 - 通过 Jaeger 实现出口流量的分布式追踪,定位跨域延迟问题。 --- ### **二、架构作用** #### 1. **解决网络限制问题** - **场景**:集群节点无公网 IP 时 - Egress Gateway 作为**唯一有公网 IP 的节点**,代理内部 Pod 访问外部服务[^2]。 - **场景**:合规性要求 - 满足“所有出口流量必须经专用审查节点”的安全规范[^2]。 #### 2. **解耦网络层与应用层** - **传统负载均衡器模式** 网关分离 L4-L6(端口/TLS)与 L7(HTTP 路由)配置[^3]: ```mermaid graph LR A[L4-L6配置] -->|绑定| B(Gateway) C[L7路由规则] -->|绑定| D(VirtualService) B --> E(外部服务) D --> E ``` - **优势**: - 网络运维人员管理 Gateway(基础设施层) - 开发人员管理 VirtualService(应用层)[^3] #### 3. **提升可观测性** - **统一监控出口流量** Kiali 面板可展示所有外部服务的依赖关系与性能指标[^4]: ![Kiali Egress 监控](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/kiali-egress-gateway.png) --- ### **三、典型应用场景** | **场景** | **Egress Gateway 作用** | **配置要点** | |--------------------------|--------------------------------------|--------------------------------| | **访问云数据库** | 加密数据库连接 + IP 白名单 | 配置 TLS 终止与 SNI 路由 | | **调用第三方 API** | 限流、重试策略集中管理 | 在 VirtualService 设置超时规则 | | **混合云架构** | 统一管理跨云服务出口点 | 多集群 Gateway 联邦 | | **安全审计合规** | 记录所有出站请求日志 | 启用 AccessLog 并对接 SIEM 系统 | --- ### **四、与 Ingress Gateway 对比** | **特性** | Egress Gateway | Ingress Gateway | |------------------|------------------------------------|----------------------------------| | **流量方向** | 内部 → 外部 | 外部 → 内部 | | **核心目标** | 控制出站安全与可见性 | 管理入站流量路由 | | **典型配置** | `ServiceEntry` + `Gateway` | `Gateway` + `VirtualService` | | **安全重心** | 外部服务认证 + 数据加密 | 用户认证 + DDoS 防护 | > **关键价值总结**:Egress Gateway 通过**集中化出口流量**,实现了服务网格的"零信任安全模型",同时提供网络策略统一管控点,是构建企业级安全网格的必备组件[^1][^4]。 ```mermaid graph TD A[服务网格内 Pod] -->|出站请求| B(Egress Gateway) B -->|加密+审计| C[外部服务] B --> D[Prometheus 监控] B --> E[Jaeger 追踪] B --> F[Kiali 拓扑图] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值