Waypoint proxies
一旦部署了 ZTunnel 代理,就可以引入 waypoint 代理以启用高级的第7层处理能力。
Ambient 模式将 Istio 的功能解耦为两个独立层次:
- 由 ZTunnel 代理管理的安全 L4 覆盖层
- 由可选的 waypoint 代理管理的L7 层
waypoint 代理是基于 Envoy 的代理,负责为运行在 ambient 模式下的工作负载执行 L7 处理。它作为特定资源(如命名空间、服务或 Pod)的网关,可以独立于其所服务的应用进行安装、升级和扩展。配置依赖于 Kubernetes Gateway API。
与每个工作负载都运行自己的 Envoy 代理的 sidecar 模型不同,waypoint 代理通过为共享相同安全边界的多个工作负载(例如同一命名空间内的所有工作负载)提供服务,从而减少资源消耗。
目标 waypoint 通过充当网关来执行策略:所有发往某个资源(如命名空间、服务或 Pod)的入站流量都必须先经过 waypoint,之后才到达目标。
ZTunnel 节点代理负责 L4 功能,包括 mTLS 加密、L4 流量处理和遥测。ZTunnel 与 waypoint 代理通过 HBONE(基于 HTTP 的覆盖网络)协议通信,该协议通过 HTTP/2 CONNECT 隧道流量,并在端口 15008 上使用 mTLS。
如果您的工作负载需要以下任何 L7 功能,建议部署 waypoint 代理:
- 流量管理 — 高级 HTTP 路由、负载均衡、断路器、速率限制、故障注入、重试和超时
- 安全 — 基于请求类型或 HTTP 头等 L7 属性的授权策略
- 可观测性 — 应用流量的 HTTP 指标、访问日志和追踪
部署 waypoint 代理
您可以在 Bookinfo 应用的命名空间中部署 waypoint 代理,将流量路由通过 Istio ambient 数据平面,并执行 L7 策略。
前提条件
- 已安装 Alauda Service Mesh Operator 2.1.1 或更高版本。
- 由具有
cluster-admin角色的集群管理员开启的有效 ACP CLI (kubectl) 会话。 - 本地已安装
istioctl,以便运行以下操作指令。 - Istio 已部署为 ambient 模式。
- 已部署 Bookinfo 示例应用(用于以下示例)。
- 目标命名空间已应用标签
istio.io/dataplane-mode=ambient。
操作步骤
-
在
bookinfo命名空间中创建 waypoint 代理。将以下内容保存为waypoint.yaml:istio.io/waypoint-for: service标签表示该 waypoint 处理服务的流量。标签值决定处理的流量类型。详情请参见 Waypoint traffic types(Istio 文档)。
-
应用 waypoint 自定义资源(CR):
-
将
bookinfo命名空间注册为使用该 waypoint:注册命名空间后,ambient 数据平面中任何 Pod 发往
bookinfo服务的请求都会通过 waypoint 进行 L7 处理和策略执行。
验证
确认 waypoint 代理已关联到 bookinfo 命名空间中的所有服务:
示例输出
您也可以通过为特定服务或 Pod 添加标签,仅配置它们使用 waypoint。当显式注册 Pod 时,还需在对应的 gateway 资源上添加 istio.io/waypoint-for: workload 标签。
启用跨命名空间 waypoint 使用
跨命名空间 waypoint 允许一个命名空间中的资源通过部署在另一个命名空间的 waypoint 路由流量。
操作步骤
-
为
common-infrastructure命名空间添加标签istio-discovery=enabled: -
创建一个 Gateway 资源,允许
bookinfo命名空间中的工作负载使用common-infrastructure命名空间中的 waypoint。将以下内容保存为waypoint-common.yaml: -
应用跨命名空间 waypoint:
-
添加使用跨命名空间 waypoint 所需的标签:
-
指定 waypoint 所在的命名空间:
-
指定要使用的 waypoint:
-
其他资源
- Waypoint traffic types (Istio documentation)