明确 NATS Account 多租户隔离及队列命名范围
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
| NetBox 目前是评估,拓扑由 Git 管理 | 不把网页编辑结果当作新的权威数据 | `apps/netbox/README.md`、`CLAUDE.md` |
|
| NetBox 目前是评估,拓扑由 Git 管理 | 不把网页编辑结果当作新的权威数据 | `apps/netbox/README.md`、`CLAUDE.md` |
|
||||||
| 现有 privileged DinD runner 只运行可信 workflow | 实例级 runner 不能视为不可信任务隔离边界 | `platform/gitea-runner/README.md` |
|
| 现有 privileged DinD runner 只运行可信 workflow | 实例级 runner 不能视为不可信任务隔离边界 | `platform/gitea-runner/README.md` |
|
||||||
| 每个动态 Pod/VM 应能独立取得自身 SPIFFE 身份;runner 只提供执行环境 | 登录目标、audience、token 交换及业务凭据生命周期由 workflow 决定;服务自行维护权限 | [Dynamic Runner 设计原则](../services/gitea-dynamic-runner.md),维护者于 2026-09-16 明确 |
|
| 每个动态 Pod/VM 应能独立取得自身 SPIFFE 身份;runner 只提供执行环境 | 登录目标、audience、token 交换及业务凭据生命周期由 workflow 决定;服务自行维护权限 | [Dynamic Runner 设计原则](../services/gitea-dynamic-runner.md),维护者于 2026-09-16 明确 |
|
||||||
| NATS 是集群共享消息服务,目前仅 Dynamic Runner 消费 | 平台服务与消费者职责分开;runner 的 durable 等动态业务约定由其项目文档维护 | [NATS](../services/nats.md),维护者于 2026-09-16 说明 |
|
| NATS 是集群共享消息服务,原生以 Account 隔离租户,目前仅 Dynamic Runner 消费 | 不把跨 Account 的名称当作全局冲突;runner 所属 Account 内的 durable 等业务约定由其项目文档维护 | [NATS](../services/nats.md),维护者于 2026-09-16 说明 |
|
||||||
| zot 匿名入口只读;鉴权入口必须按具体身份授权 | 能认证不代表可以推送;不得给整个 trust domain 写权限 | `apps/zot/README.md` |
|
| zot 匿名入口只读;鉴权入口必须按具体身份授权 | 能认证不代表可以推送;不得给整个 trust domain 写权限 | `apps/zot/README.md` |
|
||||||
|
|
||||||
通用变更约束:先做适用的 plan/check/diff,再操作现场;不将凭据和 Terraform state
|
通用变更约束:先做适用的 plan/check/diff,再操作现场;不将凭据和 Terraform state
|
||||||
|
|||||||
@@ -57,7 +57,8 @@ Gitea workflow_job webhook
|
|||||||
`microvm-runner-launch` 管理 VM 的临时磁盘、网络及清理,`guest-runner` 领取一次性
|
`microvm-runner-launch` 管理 VM 的临时磁盘、网络及清理,`guest-runner` 领取一次性
|
||||||
注册凭据并以 ephemeral 模式注册。`pod-worker` 创建 Kubernetes 执行 Pod。
|
注册凭据并以 ephemeral 模式注册。`pod-worker` 创建 Kubernetes 执行 Pod。
|
||||||
该次 README 描述同一 runner label 的 worker 共享同一个 durable consumer,通过增加 worker
|
该次 README 描述同一 runner label 的 worker 共享同一个 durable consumer,通过增加 worker
|
||||||
或 capacity 扩容。具体 durable 名称和后续调度改动以项目文档为准。
|
或 capacity 扩容。这是 runner 所属 Account 和 stream 内的协调约定,不是跨 NATS Account
|
||||||
|
的全局命名要求。具体 durable 名称和后续调度改动以项目文档为准。
|
||||||
|
|
||||||
[NATS](nats.md) 作为集群共享服务部署;维护者说明当前只有 Dynamic Runner 消费它,
|
[NATS](nats.md) 作为集群共享服务部署;维护者说明当前只有 Dynamic Runner 消费它,
|
||||||
不因此将 NATS 视为 runner 私有组件。
|
不因此将 NATS 视为 runner 私有组件。
|
||||||
|
|||||||
+13
-1
@@ -16,10 +16,22 @@ sources:
|
|||||||
共享服务的定位不随当前消费者数量改变。NATS 属于平台基础设施,
|
共享服务的定位不随当前消费者数量改变。NATS 属于平台基础设施,
|
||||||
Dynamic Runner 使用它传递任务消息,但不独占消息服务的用途和生命周期。
|
Dynamic Runner 使用它传递任务消息,但不独占消息服务的用途和生命周期。
|
||||||
|
|
||||||
|
## 多租户边界
|
||||||
|
|
||||||
|
NATS 原生通过 **Account** 提供多租户隔离。不同 Account 拥有各自的 subject 命名空间
|
||||||
|
和 JetStream 资源范围,多个消费者可以使用同一套 NATS 服务。
|
||||||
|
不同 Account 下的 stream、subject 或 durable 名称不会仅因重名而互相冲突。
|
||||||
|
|
||||||
|
因此,讨论队列与 consumer 必须同时明确所属 Account、stream 和消费者约定,
|
||||||
|
不能把不同租户的名称当作集群全局冲突。跨 Account 通信需要显式配置,
|
||||||
|
同一 Account 内的 worker 协调则遵循所属项目的约定。
|
||||||
|
这一共享服务的隔离定位由维护者于 2026-09-16 补充。
|
||||||
|
|
||||||
## 如何接入与维护
|
## 如何接入与维护
|
||||||
|
|
||||||
平台部署、连接入口、TLS 和账户配置以 homelab-infra 的 `platform/nats/README.md`
|
平台部署、连接入口、TLS 和账户配置以 homelab-infra 的 `platform/nats/README.md`
|
||||||
及其配置为维护入口。新增消费者应使用适合自身的账户与权限,不能直接沿用 runner 的业务约定。
|
及其配置为维护入口。新租户通过独立 Account 及对应权限接入;属于同一租户的消费者
|
||||||
|
按该 Account 的业务约定使用资源,不能把 runner 的约定推广为整个集群的统一命名要求。
|
||||||
|
|
||||||
Dynamic Runner 的 stream、subject、durable 名称、worker 配置和具体启用范围,以
|
Dynamic Runner 的 stream、subject、durable 名称、worker 配置和具体启用范围,以
|
||||||
[gitea-dynamic-runner 项目文档](https://git.ddupan.top/panxiao81/gitea-dynamic-runner)
|
[gitea-dynamic-runner 项目文档](https://git.ddupan.top/panxiao81/gitea-dynamic-runner)
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ NATS 已作为集群共享服务部署,当前唯一消费者为 Dynamic Runner
|
|||||||
维护者明确 Dynamic Runner 正在积极开发,其启用范围、durable 名称和实现进度以
|
维护者明确 Dynamic Runner 正在积极开发,其启用范围、durable 名称和实现进度以
|
||||||
[项目文档](https://git.ddupan.top/panxiao81/gitea-dynamic-runner)为准。
|
[项目文档](https://git.ddupan.top/panxiao81/gitea-dynamic-runner)为准。
|
||||||
不再将旧示例的 durable 名称差异或启用范围列为独立待核实项。
|
不再将旧示例的 durable 名称差异或启用范围列为独立待核实项。
|
||||||
|
NATS 原生通过 Account 隔离租户,跨 Account 的名称不构成全局冲突;
|
||||||
|
runner 的队列协调约定仅在其所属 Account 和 stream 范围内讨论。
|
||||||
|
|
||||||
Authelia 已按维护者于 2026-09-16 的说明标为 **active、唯一的主 OIDC broker**,
|
Authelia 已按维护者于 2026-09-16 的说明标为 **active、唯一的主 OIDC broker**,
|
||||||
见 [Authelia](services/authelia.md)。原工作区的“OIDC 后续启用”描述待同步,
|
见 [Authelia](services/authelia.md)。原工作区的“OIDC 后续启用”描述待同步,
|
||||||
|
|||||||
Reference in New Issue
Block a user