Ambient 模式下的第7层功能
Ambient 模式通过 Gateway API 的 HTTPRoute 资源和 Istio 的 AuthorizationPolicy 资源提供稳定的第7层功能。
AuthorizationPolicy 资源在 sidecar 和 ambient 模式下均可生效。在 ambient 模式中,授权策略可以针对 ZTunnel 执行,也可以附加到 waypoint 以实现 waypoint 执行。要将策略附加到 waypoint,请包含一个 targetRef,该引用指向 waypoint 本身或配置为使用该 waypoint 的 Service。
您可以将第4层或第7层策略附加到 waypoint 代理,以实现基于身份的执行。一旦 waypoint 成为流量路径的一部分,目标 ZTunnel 会通过 waypoint 的身份识别流量。
Istio 的 peer authentication 策略(用于配置 mTLS 模式)由 ZTunnel 支持。在 ambient 模式下,将模式设置为 DISABLE 的策略会被忽略,因为 ZTunnel 和 HBONE 始终强制执行 mTLS。详情请参见 Peer authentication(Istio 文档)。
前提条件
- 由具有
cluster-admin角色的集群管理员开启的有效 ACP CLI (kubectl) 会话。 - Istio 已部署为 ambient 模式。
- 已部署 Bookinfo 示例应用(用于以下示例)。
- 已部署 waypoint 代理(用于以下示例)。
使用 waypoint 代理进行流量路由
部署 waypoint 代理后,您可以在 Bookinfo 的 reviews 服务的不同版本之间拆分流量,用于功能测试或 A/B 测试。
操作步骤
-
创建流量路由配置。将以下内容保存为
traffic-route.yaml: -
应用流量路由配置:
验证
从 ratings pod 内访问 productpage 服务:
大部分响应(80%)将包含 reviews-v1,较小部分(20%)将包含 reviews-v2。
示例输出
清理路由配置
添加授权策略
使用第7层授权策略,显式允许 curl 服务向 productpage 服务发送 GET 请求,同时阻止所有其他操作。
操作步骤
-
创建授权策略。将以下内容保存为
authorization-policy.yaml:targetRefs字段指定了授权策略所针对的 waypoint 代理服务。
-
应用授权策略:
验证
-
创建 curl 客户端的命名空间:
-
部署 curl 客户端:
-
为
curl命名空间添加istio-discovery=enabled标签: -
为
curl命名空间启用 ambient 模式: -
验证对
productpage服务的 GET 请求成功,返回HTTP 200:预期输出
-
验证对同一服务的 POST 请求被拒绝,返回
HTTP 403:预期输出
-
验证来自其他服务(例如
bookinfo命名空间中的ratingspod)的 GET 请求也被拒绝,返回RBAC: access denied:预期输出
清理验证资源
其他资源
- Ambient mode architecture(Istio 文档)
- Peer authentication(Istio 文档)