Table of Contents

租户与键空间

租户是一等公民

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}/…。