租户与键空间
租户是一等公民
KernLab.Traffic 的多租户是原生的,不是部署多实例的别名:
- 配置面按租户隔离——管理 API 的路径即租户段:
/api/v1/{tenant}/config/…; 不同租户的同名实体互不可见、互不影响; - 数据面请求经租户解析归租户——解析出租户后,路由表、集群、编排、密钥、配额 全部在该租户的作用域内取用;
- 密钥目录、租户变量、告警、审计同样按租户划分。
键空间结构
一切实体落在统一的 TierKv 键空间,键形如:
{tenant}:{entity}:{phase}:{key}
└─实体类型─┘└─世代段─┘
例如 default:route:published:demo-api(default 租户、published 世代段的 demo-api 路由)。
| 组成 | 值域 |
|---|---|
tenant |
租户名;系统域租户为 __sys(系统级面:租户目录、租户解析策略等) |
entity |
实体类型:route / cluster / scope / listener / plugin / preroute / mockrule / orch / tenant / ai-provider / ai-prompt-rule … |
phase |
draft 或 published(世代段;配置世代与发布) |
key |
实体键(租户内唯一) |
另有系统段(不以实体形态出现):resource(外部资源)、vars(租户变量)、
accesspolicy(访问策略)、discoverysource(发现源)、pluginmanifest/pluginpackage/
plugintrust/pluginquota(插件四段)等。
保留前缀与系统域
__sys:前缀=系统域(generation、artifact 指针、counter 等运行时数据)——管理写入拒绝;k8s/前缀=Kubernetes Gateway API 物化产出的键——手改保护(422), 只能由 Gateway API 控制器经 watch 流程修改。
数据面怎么解析出租户
请求进入数据口后,按租户解析策略表(平台全局配置)解析归属租户——可用信号包括
子域名、路径前缀、Header 等(解析策略见管理面 · 租户解析)。
未配置多租户时(Standalone 缺省),一切请求归 default 租户——这也是
五分钟跑起来里 URL 路径出现 default 的原因。
租户管理
租户的创建、启停(停用租户=整租户不服务)走系统级命令族 tenant(系统域,
/api/v1/sys/tenant);租户自身的配置操作走租户域 /api/v1/{tenant}/…。