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

💡 原文中文,约6800字,阅读约需17分钟。
📝

内容提要

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

🔎

延伸解读

为何选择 Envoy Gateway 而非 Istio 入口网关

文章建议在安装 Istio 时避免启用入口网关,转而手动部署 Envoy Gateway。这是因为 Envoy Gateway 专注于将应用暴露给外部世界,并支持 OIDC 单点登录等高级功能,而 Istio 的入口网关更侧重于网格内部通信。两者结合可兼顾服务网格的安全性与边缘网关的灵活性,但需要额外配置 sidecar 注入和路由类型,增加了部署复杂度。

关键配置:sidecar 注入与流量拦截

为确保 Envoy Gateway 与 Istio 数据平面安全通信,需将 Envoy Gateway 的命名空间标记为 istio-injection=enabled,使网关 Pod 注入 Istio sidecar。同时,通过 EnvoyProxy 配置 traffic.sidecar.istio.io/includeInboundPorts: "" 来阻止 sidecar 拦截进入网关的流量,并将路由类型设为 Service。这些步骤是集成成功的关键,否则可能导致流量路由错误或通信失败。

安全加固:严格 mTLS 与 TLS 终止

文章演示了如何启用严格 mTLS(PeerAuthentication 设置 mode: STRICT)来加密网格内部通信,并为入口网关配置 TLS 终止。通过创建自签名根证书和服务器证书,将证书存储为 Kubernetes Secret,并在 Gateway 监听器中引用,最终实现 HTTPS 访问。这增强了边缘到网格的安全性,但需注意证书管理和轮换。

验证与测试:确保端到端连通性

部署测试应用 httpbin 并配置 HTTPRoute 后,文章通过 curl 命令验证了从外部经 Envoy Gateway 到网格内服务的请求。响应头中的 server: envoy 和 X-Envoy-External-Address 表明流量经过了 Envoy 代理。读者应关注网关负载均衡器 IP 的获取以及 Host 头匹配,这是排查路由问题的关键点。

❓

Q&A

如何将 Envoy Gateway 集成到 Istio 服务网格中?

在安装 Istio 时避免启用入口网关,手动安装并配置 Envoy Gateway,并确保 Istio 将 Envoy sidecar 注入到网关 Pod 中。

Envoy Gateway 的主要功能是什么?

Envoy Gateway 旨在将应用程序暴露给外部世界,处理用户请求,并支持高级功能,如 OIDC 单点登录。

如何确保 Envoy Gateway 的安全通信?

确保 Envoy Gateway 的 sidecar 不拦截进入网关的流量,并启用严格的 mTLS 以增强安全性。

如何验证 Envoy Gateway 的配置是否成功?

通过 curl 命令发送测试请求,检查是否能正确接收到来自服务的响应。

在配置 Envoy Gateway 时需要注意哪些关键点?

需要手动安装 Envoy Gateway,确保 sidecar 注入,配置路由类型为 Service,并不拦截入站流量。

如何为 Envoy Gateway 启用 TLS?

创建服务签名的根证书和私钥,并在 Gateway 配置中引用这些证书以启用 TLS。

🏷️

标签

➡️

继续阅读