Ambient 模式下的第 7 层功能
Ambient 模式通过 Gateway API HTTPRoute 资源和 Istio AuthorizationPolicy 资源提供稳定的 L7 功能。
AuthorizationPolicy 资源同时适用于 sidecar 和 ambient 模式。在 ambient 模式下,授权策略可指定由 ZTunnel 执行,也可附加到 waypoint 以由 waypoint 执行。要将策略附加到 waypoint,请包含一个 targetRef,用于引用 waypoint 本身或配置为使用该 waypoint 的 Service。
您可以将 L4 或 L7 策略附加到 waypoint proxy,以基于身份执行策略。当 waypoint 成为流量路径的一部分后,目标 ZTunnel 会根据 waypoint 的身份识别流量。
配置 mTLS 模式的 Istio peer authentication 策略由 ZTunnel 提供支持。在 ambient 模式下,将模式设置为 DISABLE 的策略会被忽略,因为 ZTunnel 和 HBONE 始终强制执行 mTLS。有关详细信息,请参阅对等身份验证(Istio 文档)。
先决条件
- 由具有
cluster-admin角色的集群管理员建立的活动 ACP CLI (kubectl) 会话。 - Istio 已部署在 ambient 模式下。
- 已部署 Bookinfo 示例应用(用于以下示例)。
- 已部署 waypoint proxy(用于以下示例)。
使用 waypoint proxy 路由流量
部署 waypoint proxy 后,您可以在 Bookinfo reviews Service 的不同版本之间拆分流量,以进行功能测试或 A/B 测试。
操作步骤
-
创建流量路由配置。将以下内容保存为
traffic-route.yaml: -
应用流量路由配置:
验证
从 ratings pod 内访问 productpage Service:
大多数响应(80%)将包含 reviews-v1 输出,而较少一部分响应(20%)将包含 reviews-v2 输出。
示例输出
清理路由配置
添加授权策略
使用 L7 授权策略,明确允许 curl 服务向 productpage 服务发送 GET 请求,同时阻止所有其他操作。
操作步骤
-
创建授权策略。将以下内容保存为
authorization-policy.yaml:targetRefs字段指定 waypoint proxy 的授权策略所针对的服务。
-
应用授权策略:
验证
-
为 curl 客户端创建 namespace:
-
部署 curl 客户端:
-
将
istio-discovery=enabled标签添加到curlnamespace: -
为
curlnamespace 启用 ambient 模式: -
验证向
productpage服务发送 GET 请求能够成功,并收到HTTP 200响应:预期输出
-
验证向同一服务发送 POST 请求会被拒绝,并收到
HTTP 403响应:预期输出
-
验证来自其他服务的 GET 请求(例如来自
bookinfonamespace 中的ratingspod)也会被拒绝,并收到RBAC: access denied:预期输出
清理验证资源
其他资源
- Ambient 模式架构(Istio 文档)
- 对等身份验证(Istio 文档)