本页面介绍了如何为在 Google Kubernetes Engine (GKE) Ambient Networking 上运行的工作负载配置到 Secure Web Proxy (SWP) 网关的出站流量路由。
通过安全 Web 代理网关路由出站流量,您可以强制执行集中式出站流量安全政策(例如网址过滤、网域许可清单和 TLS 检查),而无需修改应用代码。第 4 层节点代理会拦截应用 Pod 外部的出站流量,即使工作负载容器遭到入侵,也能提供 Pod 外部的安全隔离。
架构和流量
在此部署模式下,您将保留对基础架构的所有权,包括 GKE 集群、Secure Web Proxy 实例以及任何 Private Service Connect (PSC) 端点(适用于跨 VPC 部署)。
出站流量流的工作方式如下:
- 工作负载 Pod 向外部端点或互联网目标发起出站流量。
- 本地第 4 层环境节点代理会拦截节点上的出站请求。
- 节点代理会建立到出站网关的 HTTP CONNECT 隧道。
- 如果 Secure Web Proxy 位于同一 VPC 网络中,流量会直接连接到网关。如果 Secure Web Proxy 位于其他 VPC 网络中,则流量会遍历 PSC 服务连接。
- Secure Web Proxy 会终止隧道,强制执行配置的出站流量安全政策,并将已获授权的请求转发到目的地。
限制
在设置 Secure Web Proxy 出站流量路由之前,请先查看预览版中的以下限制:
- 命名空间级政策:出站路由政策仅在命名空间级应用。不支持使用标签选择器进行精细 Pod 选择。
- 主机名过滤需要 TLS 检查:除非启用了 TLS 检查,否则 Secure Web Proxy 政策只能按 IP 地址过滤出站流量。
- Workload Identity:GKE Ambient Networking 支持标准 Workload Identity。此预览版不支持代管式代理身份池。
- 身份验证:环境节点代理与 Secure Web Proxy 之间的连接会跳过服务器证书验证。CONNECT 请求包含一个无边界令牌以及客户端证书。
- 配置更新时重新创建资源:对现有 Secure Web Proxy 实例或 PSC 配置所做的更改不会自动传播。如果您更新 Secure Web Proxy 或 PSC 配置,则必须删除并重新创建
GCPEgressPolicy资源和 Secure Web Proxy 实例,才能应用更改。 - TLS 检查信任锚:GKE 不会自动将 Secure Web Proxy 私有 CA 证书注入工作负载容器。如果您使用 TLS 检查,则必须手动将信任证书安装到容器映像中。
前提条件
在配置出站流量路由之前,请验证您是否具备以下条件:
- 已启用 Ambient Networking 的 GKE 集群。如需了解相关说明,请参阅准备 GKE Ambient Networking。
- 在Cloud de Confiance by S3NS 项目或共享 VPC 中,使用
clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT配置了serverTlsPolicy的已部署 Secure Web Proxy 实例。 - 如果 Secure Web Proxy 位于与 GKE 集群不同的 VPC 网络中:
- 为 Secure Web Proxy 创建的 PSC 服务连接。
- 在 GKE 集群 VPC 网络中配置的 PSC 使用方端点。
如需完成这些步骤,您必须拥有以下角色:
- Secure Web Proxy/Network Services:
networkservices.gateways.*(或roles/networkservices.admin),用于配置 Secure Web Proxy 网关资源。 - PSC 管理(仅限跨 VPC 部署):
compute.networkAttachments.list(或roles/compute.networkAdmin),用于管理 Private Service Connect 连接。 - GKE 管理:
roles/container.clusterAdmin,用于部署自定义资源(GCPBackend、GCPEgressPolicy)。
为 TLS 检查配置信任
如果您的 Secure Web Proxy 政策使用 TLS 检查来检查加密的出站流量,则代理会生成由其私有证书授权机构 (CA) 签名的证书,以模拟外部目的地。
您的工作负载应用必须信任 Secure Web Proxy 提供的私有 CA 证书。由于 GKE 不会自动注入此证书,因此您必须将 SWP CA 证书(信任锚点)安装到容器的受信任证书存储区中。
如需将 CA 证书添加到容器映像,请在 Dockerfile 中添加以下行:
COPY swp-ca-cert.pem /usr/local/share/ca-certificates/swp-ca-cert.crt
RUN update-ca-certificates
定义网关端点
配置 Ambient Networking 出站流量路由的第一步是创建网关端点,该端点定义 GKE 集群中的 Secure Web Proxy 端点,并向 Ambient Networking 告知代理的位置。
如需指定 Secure Web Proxy 或 Private Service Connect (PSC) 服务连接的 URI,请在 GKE 集群中创建 GCPBackend 自定义资源:
同一 VPC
将以下清单保存为
swp-backend.yaml:apiVersion: networking.gke.io/v1 kind: GCPBackend metadata: name: swp-backend namespace: ambient-test spec: serviceUris: - //networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME替换以下内容:
ambient-test:已加入 Ambient Networking 的命名空间。PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。REGION:Secure Web Proxy 的部署区域。SWP_NAME:Secure Web Proxy 的名称。
应用
GCPBackend资源:kubectl apply -f swp-backend.yaml
跨 VPC
将以下清单保存为
swp-backend.yaml:apiVersion: networking.gke.io/v1 kind: GCPBackend metadata: name: swp-backend namespace: ambient-test spec: serviceUris: - //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME替换以下内容:
ambient-test:已加入 Ambient Networking 的命名空间。PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。REGION:PSC 服务连接的部署区域。ATTACHMENT_NAME:PSC 服务连接的名称(如果 Secure Web Proxy 位于其他 VPC 网络中)。
应用
GCPBackend资源:kubectl apply -f swp-backend.yaml
配置出站流量重定向
创建 GCPEgressPolicy 自定义资源,以将出站流量从命名空间路由到 Secure Web Proxy 网关。这提供了必要的信号,以便环境节点代理建立到 Secure Web Proxy 的 HTTP CONNECT 隧道,这是出站路由所必需的。
将以下清单保存为
swp-egress-policy.yaml:apiVersion: networking.gke.io/v1 kind: GCPEgressPolicy metadata: name: swp-egress-policy namespace: ambient-test spec: to: excludeCIDRRanges: - "CLUSTER_CONTROL_PLANE_CIDR" proxyRef: group: networking.gke.io kind: GCPBackend name: swp-backend替换以下内容:
ambient-test:已加入 Ambient Networking 的命名空间。CLUSTER_CONTROL_PLANE_CIDR:应绕过 Secure Web Proxy 的内部通信的 CIDR 范围(例如 GKE 控制平面地址范围或内部 VPC 子网)。
应用
GCPEgressPolicy资源:kubectl apply -f swp-egress-policy.yaml应用该政策后,来自命名空间中工作负载的出站流量会重定向到 Secure Web Proxy。
问题排查
请按照以下指南诊断和解决 Ambient 出站流量路由问题:
- 流量未到达 Secure Web Proxy:
- 对于同 VPC 部署,请验证
GCPBackend资源是否指向正确的 Secure Web Proxy 网关 URI。 - 对于跨 VPC 部署:
- 验证
GCPBackend资源是否指向正确的 PSC 服务连接 URI。 - 验证 PSC 端点是否已在提供方 VPC 中建立并接受。
- 检查
GCPEgressPolicy中的excludeCIDRRanges是否未无意中匹配您的目标流量。
- 对于同 VPC 部署,请验证
- mTLS 连接失败:
- 验证 Secure Web Proxy 是否已配置为接受来自节点代理的连接。
- TLS 检查证书错误:
- 如果客户端请求因证书验证错误(例如
x509: certificate signed by unknown authority)而失败,请验证 Secure Web Proxy CA 证书是否已正确安装在工作负载容器的系统证书存储区中。
- 如果客户端请求因证书验证错误(例如