更新 waypoint 代理
Waypoint 代理通过 Kubernetes Gateway API 部署,并由 Istio 控制平面管理。当你使用 InPlace 策略更新控制平面时,istiod 会自行将 waypoint 部署滚动更新到匹配的代理版本 — 你无需单独更新 waypoint,其服务的应用工作负载在整个过程中都会持续运行。
由于 waypoint 始终跟随活动控制平面,因此请确保其版本与控制平面相差不超过一个次要版本(相同版本或 n-1)。这与 Istio 支持策略一致,该策略要求数据平面组件不得领先于控制平面;同样的规则也适用于 Istio CNI plugin 和 ZTunnel。RevisionBased 策略在 ambient 模式下不可用 — 有关原因,请参阅在 ambient 模式下更新 Alauda Service Mesh。
前提条件
- 你已按照更新 ambient 模式组件中的说明更新 Istio 控制平面。
- Bookinfo 应用已部署在 ambient 模式下;请参阅在 ambient 模式下部署 Bookinfo 应用。
waypoint命名的 waypoint 代理存在于bookinfo命名空间中;请参阅Waypoint 代理。
验证 waypoint 代理版本
确认 waypoint 代理已重新连接到更新后的控制平面,并运行新的代理版本:
示例输出
输出列出了 waypoint pod、其连接到的 istiod pod、正在运行的代理版本,以及代理订阅的 xDS 配置类型。填充的订阅列表确认 waypoint 正在从控制平面接收配置,并且 VERSION 列现在应显示更新后的版本。
从 Istio 1.30 开始,waypoint 代理会使用 waypoint 自身的服务名称而不是目标服务名称来报告 trace span。如果你将 tracing 与 Kiali 一起使用,请在更新后完成更新 Kiali tracing 配置中的步骤,否则 ambient 工作负载的 trace 视图将保持为空。
验证 L7 流量路由
更新 waypoint 代理后,确认第 7 层 (L7) 流量管理仍按配置运行。如果使用 HTTPRoute 资源路由流量,请检查配置的权重是否仍然生效。
前提条件
- 已创建
bookinfo-versions服务(属于 ambient 模式下 Bookinfo 部署的一部分)。 HTTPRoute资源会拆分reviews流量。
操作步骤
-
可选:如果尚不存在,请创建
HTTPRoute资源,以 80/20 的比例在reviews-v1和reviews-v2之间分配reviews流量: -
通过 mesh 重复发送请求,并观察由哪个
reviews版本响应:响应结果应大致符合配置的流量分配比例。采用 80/20 权重时,二十个请求中大约有十六个会到达
reviews-v1,其余请求会到达reviews-v2。负载均衡会导致每次运行的结果存在一定差异,但经过多次尝试后,该比例会趋近于配置的权重。
验证 L7 授权策略
确认更新后 L7 授权决策仍然有效。以下示例使用名为 productpage-waypoint 的 AuthorizationPolicy,该策略仅允许 curl 命名空间中 curl 服务账户发出的 GET 请求访问 productpage 服务。
前提条件
- curl 客户端运行在
curl命名空间中,并且该命名空间带有istio-discovery=enabled和istio.io/dataplane-mode=ambient标签。有关部署步骤,请参阅 ambient 模式下的第 7 层功能。
操作步骤
-
可选:如果尚不存在,请创建
AuthorizationPolicy资源:- principal 必须与客户端工作负载的命名空间和服务账户匹配。此示例使用
curl命名空间中的curl服务账户。
- principal 必须与客户端工作负载的命名空间和服务账户匹配。此示例使用
-
确认允许的客户端发出的
GET请求成功,并收到HTTP 200响应:预期输出
-
确认允许列表之外的工作负载(例如
ratingspod)仍被拒绝:预期输出
拒绝结果确认更新后的 waypoint 代理会继续强制执行 L7 授权规则:
ratings服务账户未列在策略中,而curl客户端同时匹配 principal 和GET操作。
清理验证资源
如果你创建路由和授权资源只是为了执行此验证,请在完成后将其删除: