更新 waypoint proxies
Waypoint proxies 通过 Kubernetes Gateway API 部署,并由 Istio 控制平面管理。当你使用 InPlace 策略更新控制平面时,istiod 会自行将 waypoint 部署滚动更新到匹配的 proxy 版本——你无需单独更新 waypoints,而它们所服务的应用工作负载会在整个过程中持续运行。
由于 waypoint 始终跟随当前活动的控制平面,请将其保持在控制平面一个次版本范围内(相同版本或 n-1)。这与 Istio 支持策略一致,该策略要求数据平面组件绝不能领先于控制平面;同样的规则也适用于 Istio CNI plugin 和 ZTunnel。RevisionBased 策略在 ambient mode 中不可用——有关原因,请参见 在 ambient mode 下更新 Alauda Service Mesh。
前提条件
- 你已按照 更新 ambient mode 组件 的说明更新了 Istio 控制平面。
- Bookinfo 应用已在 ambient mode 下部署;请参见 在 ambient mode 下部署 Bookinfo 应用。
- 在
bookinfonamespace 中存在一个名为waypoint的 waypoint proxy;请参见 Waypoint proxies。
验证 waypoint proxy 版本
确认 waypoint proxy 已重新连接到更新后的控制平面,并运行新的 proxy 版本:
示例输出
输出会列出 waypoint pod、它所连接的 istiod pod、其运行的 proxy 版本,以及 proxy 订阅的 xDS 配置类型。订阅列表有内容表示 waypoint 正在从控制平面接收配置,并且 VERSION 列现在应显示更新后的发行版本。
验证 L7 流量路由
在 waypoint proxies 更新后,确认 Layer 7 (L7) 流量管理仍按配置运行。如果你使用 HTTPRoute 资源路由流量,请检查已配置的权重是否仍然生效。
前提条件
- 已创建
bookinfo-versions服务(它们是 ambient mode 下 Bookinfo 部署的一部分)。 - 一个
HTTPRoute资源将reviews流量进行拆分。
操作步骤
-
可选:如果尚未创建,请创建将
reviews流量以 80/20 分配给reviews-v1和reviews-v2的HTTPRoute资源: -
通过 mesh 发送重复请求,并观察哪个
reviews版本作出响应:响应应大致符合配置的拆分比例——在 80/20 权重下,20 次请求中大约有 16 次会到达
reviews-v1,其余请求到达reviews-v2。负载均衡会在每次运行时引入一定波动,但随着重复尝试,比例会收敛到配置的权重。
验证 L7 授权策略
确认 L7 授权决策在更新后仍然有效。以下示例使用名为 productpage-waypoint 的 AuthorizationPolicy,它仅允许来自 curl namespace 中 curl service account 的 GET 请求到达 productpage 服务。
前提条件
- 在
curlnamespace 中运行着一个 curl 客户端,并且该 namespace 已打上istio-discovery=enabled和istio.io/dataplane-mode=ambient标签。部署步骤请参见 ambient mode 下的 Layer 7 功能。
操作步骤
-
可选:如果尚未创建,请创建
AuthorizationPolicy资源:- principal 必须与客户端工作负载的 namespace 和 service account 匹配。此示例使用
curlnamespace 中的curlservice account。
- principal 必须与客户端工作负载的 namespace 和 service account 匹配。此示例使用
-
确认来自允许客户端的
GET请求返回HTTP 200响应:期望输出
-
确认允许列表之外的工作负载,例如
ratingspod,仍然会被拒绝:期望输出
该拒绝结果确认更新后的 waypoint proxy 仍在强制执行 L7 授权规则:
ratingsservice account 未列入策略,而curl客户端同时匹配 principal 和GET操作。
清理验证资源
如果你仅为本次验证创建了路由和授权资源,请在完成后将其删除: