通过 Kubernetes Gateway API 在 ambient 模式下经由网关路由出口流量
本指南演示如何将 Kubernetes Gateway API 与 waypoint proxy 结合使用,以便在 ambient 模式下通过 egress gateway 路由出站 HTTP 流量。
前提条件
- 已安装 Alauda Service Mesh v2 Operator。
Istio和IstioCNI资源已使用 ambient 配置文件进行配置。- 已创建
Ztunnel资源。 - 确认 Linux kernel 兼容性。
操作步骤
-
创建一个名为
egress-gateway的命名空间: -
为
egress-gateway命名空间添加istio-discovery=enabled标签: -
通过应用 dataplane mode 标签,为该命名空间启用 ambient 模式:
-
创建一个名为
egress-se.yaml的 YAML 文件,用于为外部服务定义ServiceEntry。istio.io/use-waypoint标签将此条目与 waypoint proxy 关联起来。- 将此
ServiceEntry的流量通过同一命名空间中名为waypoint的 waypoint proxy 路由。
- 将此
-
应用
ServiceEntry: -
创建一个名为
waypoint.yaml的 YAML 文件,在egress-gateway命名空间中部署 waypoint proxy。waypoint proxy 会拦截并处理该命名空间中服务的 L7 流量。istio.io/waypoint-for: service标签表示此 waypoint 处理服务流量。标签值决定所处理的流量类型。详细信息请参见 Waypoint traffic types(Istio 文档)。- 指定
istio-waypointgateway class,它会部署 waypoint proxy,而不是标准的 ingress gateway。
-
应用 waypoint proxy 配置:
NOTE作为手动创建 YAML 文件的替代方案,你可以使用以下命令部署 waypoint proxy:
当你使用
--enroll-namespace选项时,egress-gateway命名空间中的所有服务(包括ServiceEntries)都会将其流量通过该 waypoint 路由。 -
可选:将网关部署到 基础设施节点:
点击展开
前提条件Alauda Container Platform 4.2.0 或更高版本,或者将 Gateway API CRD 升级到最新版本。
a. 在计划部署 Gateway 的同一命名空间中创建一个名为
asm-kube-gateway-options的 ConfigMap:- 指定 configmap 的名称。
- 指定与 gateway 相同的 configmap 命名空间。
- 设置节点选择器和容忍度,以便将 gateway pod 调度到基础设施节点上。
b. 在 Gateway 资源中添加
infrastructure.parametersRef字段以引用该 ConfigMap:- 指定 gateway 的名称。
- 指定 gateway 的命名空间。
验证
-
通过检查状态确认 waypoint proxy 已就绪:
PROGRAMMED列应显示True,表示配置成功。示例输出
-
在
egress-gateway命名空间中部署curl客户端: -
将
curlpod 的名称存储到变量中: -
从
curl客户端验证你能够通过 egress gateway 访问httpbin.org:如果从
httpbin.org收到成功响应,则表示出口流量已通过已配置的网关进行路由。示例输出
ztunnel 日志应显示流量正在通过 waypoint 流动,输出类似如下:
ztunnel 日志示例输出
清理
移除 egress-gateway 命名空间及所有相关资源: