定向灰度:可信租户路由
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
本文缩写(英文全称与中文含义)
| 缩写 | 英文全称/名称 | 中文含义 |
|---|---|---|
| HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
| ID | Identifier | 标识符 |
| SLO | Service Level Objective | 服务等级目标 |
前置:共享基线。场景:只有员工租户使用新版本,其余用户始终 stable。身份服务从已验证会话生成 x-release-cohort: internal;边缘必须删除客户端同名 header,再由可信认证服务写入。不能把浏览器传来的 header/cookie 当作权限。
1. 建立可信边界#
在现有认证网关配置上述覆盖逻辑;应用后端仅允许该网关访问。先尝试外部直接发送 x-release-cohort: internal,日志必须显示被删除/重写;不通过则停止实验。内部诊断入口单独鉴权,不对公网提供直接访问后端的路径。
2. 替换基线路由 rules#
复制 route-stable.yaml 为 route-cohort.yaml,只替换 spec.rules:
rules:
- matches:
- headers:
- {name: x-release-cohort, type: Exact, value: internal}
backendRefs: [{name: orders-candidate, port: 80}]
- backendRefs: [{name: orders-stable, port: 80}]kubectl apply --dry-run=server -f route-cohort.yaml
kubectl apply -f route-cohort.yaml
kubectl -n orders get httproute orders-release -o yaml3. 验收与恢复#
分别用员工/普通租户的真实登录令牌调用订单业务;连续请求和跨 Pod 请求仍命中同一版本。伪造 header、过期令牌、缺失 cookie 均不能进入内部人群;未登录敏感请求保持 401/403。授权仍由应用检查,命中新版本不等于获得数据权限。
观察候选版本 SLO、租户级正确性和审计;停止灰度时 kubectl apply -f route-stable.yaml,清除身份服务的内部人群配置并验证普通流量。不要把完整用户 ID/令牌写入网关日志。
参考:HTTP header 路由。