要不要上网格,不能只比较代理的 p99

决策输入是需要哪些跨服务能力和统一治理、谁来承担证书/策略/升级/排障、现有 SDK/网关/网络策略能覆盖哪些边界,以及切换后产生的业务风险。第 33 篇的四种模式甚至没有天然等价的功能集合,不能仅用单个延迟数字选择产品。对于累计 frontend → orders 调用链(orders 先调用 inventory,成功后再调用 external-stub),先把请求头灰度、工作负载身份、入口出口约束、授权拒绝、超时重试、日志和回滚列成验收条目,另把 POST /reserve 的去重留给应用。网格可以执行跨进程策略,不能替代订单事务。

网格选择门禁:列需求与替代措施,对每项做正常/失败实验,再决定进入、保持或实际退出

场景 A:多个平台团队要对 Service 间身份与 HTTP 路由作一致治理,应用语言多、证书轮换由平台承担;网格可能减少应用重复实现,但要付控制面/数据面容量、版本偏差、策略作用域及故障排查成本。场景 B:少量同语言服务、只需 SDK 的超时与明确的入口限制,可能先用应用 SDK、网关和网络策略达到需求,不为不需要的 HTTP 授权引入共享 waypoint。两者都只是条件分支:当前没有网格真实实验和功能等价测量,不能替任何组织宣布“应该采用”或“应该退出”。

给每项能力找负责方

需要保留的能力 网格可执行的位置 退出时需另有的实现和失败判据
跨服务身份与传输保护 sidecar/ztunnel、证书轮换 应用/平台的 mTLS 与证书分发;错误身份不得成功
请求头灰度、超时、重试 七层代理及策略 SDK/网关或应用代码;v2 后端版本与 attempts 要对应
入口/出口边界 网关、代理路由和网络约束 替代入口 TLS/来源校验、出口 NetworkPolicy 等;直连不能绕过
方法授权与审计 目的 sidecar 或绑定的 waypoint 应用/网关明确拒绝,代理撤下后非法写入不增加账本
遥测/排障 代理与应用协作 应用保留请求 ID/追踪上下文,接收端收到 Span
业务去重 不属于网格能力 库存服务原子去重或补偿;超时重发不得重复副作用

表中“替代”不是一句“交给 SDK”:每一行必须有部署位置、负责团队、配置/证书版本、失败场景和可复跑的正反断言。NetworkPolicy 是否真能执行取决于 CNI;ServiceEntry 只是代理层目的地配置,不是出口防火墙。代理 Span 能产生也不等于应用传播上下文;退出后若只保留请求 ID,应明确尚未达到追踪门禁。

先验证退出,再决定卸载

从 examples/service-mesh/ 的只读前置脚本开始,只有确认具名隔离集群、替代控制和回退计划,才允许任何模式切换:

1
SM_CONTEXT=service-mesh-lab SM_NAMESPACE=service-mesh-lab bash scripts/check-02.sh

在隔离集群记录 sidecar 和 ambient 的当前请求/授权/证书/账本基线,对合成服务逐项启用替代能力:将 TLS 和身份验证放到指定实际连接段、将灰度转到应用/网关或先撤除该需求、将出站强制约束放到支持它的 CNI 和网络策略、把写入去重放在业务事务中。对每项分别发正常请求和错误身份/无效头/直连出口/重复操作 ID 的负例,保存配置、当前代理和请求路径、应用结果;应拒绝却成功或副作用重复时返回非零并回退替代方案。只有各项达标,才在事先批准的仅属于本实验的资源范围逐批移除注入、waypoint、ztunnel/CNI 等组件,期间验证长连接、新端点与证书变更。绝不在共享/生产集群执行网格卸载命令,也不能以删掉资源对象后的健康检查 200 替代真实退出证明。

本环境 examples/service-mesh/evidence/35/20261001T150408Z-2707247/ 的前置检查退出 127,原始错误 NOT_RUN: kubectl: command not found。没有冻结相容集群、网格运行成本测量、实际代理路径或经批准的退出环境,因此采用判断与真实退出验证均待验收 NOT_RUN。第 09 篇的进程 TLS 名称校验不能冒充应用间 mTLS;第 01 篇重复账本仍是当前示例的缺口,不能因为评估退出就自动修复。

练习与参考解答

  1. 只把 sidecar 从 Pod 移走,业务 GET 200,能判“退出网格成功”吗?参考解答:不能。还需确认此前的 mTLS/错误身份、请求头路由、方法授权、出口直连阻断与追踪收到数据都有替代执行点;同时检查应用进程与长连接、副作用账本,并验证 ambient CNI/waypoint 等组件是否仍在接管。
  2. 保留网格路由 v2 的能力需求,却只有 SDK 可以按固定地址重试,没有版本选择;决策表如何填写?参考解答:该行替代不等价,标未满足门禁,不能按“功能已迁移”退出。可明确取消 v2 灰度需求并经审批,或实现并实测替代路由;再用带/不带 canary 头、错误 subset 的合成请求与真实后端版本验证。

官方参考与系列导航

系列导航:00 无网格调用 → 33 性能对照 → 34 综合发布 → 35 采用或退出(本文)。选修随后按先修顺序展开。