mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
feat: 添加节点管理功能,支持全局 discovery token 生成与旋转,更新节点注册流程
This commit is contained in:
+9
-7
@@ -60,9 +60,10 @@
|
||||
**2.5.3 Agent 管理与自动发现**
|
||||
|
||||
* 管理端支持手工创建节点、编辑节点名、删除节点
|
||||
* `nodes` 表增加 Agent 鉴权 Token 与自动发现 Token 字段
|
||||
* 首次接入不再依赖全局环境变量 Token,而是依赖管理端为节点生成的自动发现 Token
|
||||
* Agent 首次注册成功后,Server 下发节点专属 Agent Token,Agent 本地完成 Token 置换
|
||||
* 管理端手工创建节点时,直接为该节点生成专属 `agent_token`
|
||||
* 预创建节点时,持有该 `agent_token` 的 Agent 会占据该节点位,并持续以该 Token 完成后续鉴权
|
||||
* 系统同时维护一个全局 `discovery_token`,任意新节点可使用该 Token 自动接入 Server
|
||||
* Agent 使用全局 `discovery_token` 首次注册成功后,Server 会为该节点生成专属 `agent_token`,Agent 本地完成 Token 置换
|
||||
* Agent 默认自动探测主机名与 IP,也允许通过配置覆盖
|
||||
|
||||
**2.5.4 路由增强**
|
||||
@@ -291,13 +292,14 @@ Agent 使用 Go 单体程序:
|
||||
|
||||
新增字段建议:
|
||||
|
||||
* `agent_token` — 节点专属 Agent Token,用于注册完成后的正式鉴权
|
||||
* `discovery_token` — 自动发现 Token,仅用于首次接入
|
||||
* `agent_token` — 节点专属 Agent Token,用于节点占位与后续正式鉴权
|
||||
|
||||
约束:
|
||||
|
||||
* `agent_token` 与 `discovery_token` 都应为随机生成值
|
||||
* `discovery_token` 仅用于首次接入,注册成功后应失效或清空
|
||||
* 管理端手工创建节点时必须直接生成 `agent_token`
|
||||
* 一个节点位只对应一个 `agent_token`
|
||||
* 全局 `discovery_token` 不存放在 `nodes` 表,而由系统配置统一维护
|
||||
* 使用全局 `discovery_token` 自动接入的节点,应在注册成功后获得新的专属 `agent_token`
|
||||
* 删除节点后,该节点关联的 Token 必须立即失效
|
||||
|
||||
---
|
||||
|
||||
@@ -144,7 +144,7 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
|
||||
|
||||
第二版扩展实体:
|
||||
|
||||
* `nodes` — 增加 `agent_token`、`discovery_token`,用于节点管理与自动发现
|
||||
* `nodes` — 增加 `agent_token`,用于节点占位与节点鉴权
|
||||
|
||||
约束(全版本):
|
||||
|
||||
@@ -154,7 +154,8 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
|
||||
* 激活版本全局只能有一个,不引入分组维度
|
||||
* 回滚通过"激活旧版本"实现,不直接修改历史记录
|
||||
* 域名到证书匹配必须支持精确匹配和通配符匹配(如 `*.example.com`)
|
||||
* `nodes.discovery_token` 仅用于首次接入,接入成功后必须失效
|
||||
* 管理端手工创建节点时必须直接生成 `nodes.agent_token`
|
||||
* 全局 `discovery_token` 由系统配置统一保存,不按节点分配
|
||||
* 删除节点必须立即使该节点凭证失效
|
||||
|
||||
如需新增表,必须先证明它服务于当前迭代版本的主链路。
|
||||
@@ -214,9 +215,10 @@ Agent(第一版):
|
||||
|
||||
Agent(第二版):
|
||||
|
||||
* 首次接入使用 `discovery_token`
|
||||
* 注册成功后下发节点专属 `agent_token`
|
||||
* 后续请求改为查 `nodes.agent_token` 验证
|
||||
* 手工创建的节点直接使用节点专属 `agent_token` 接入
|
||||
* 全局 `discovery_token` 仅用于批量自动发现
|
||||
* 使用全局 `discovery_token` 注册成功后,下发节点专属 `agent_token`
|
||||
* 后续请求统一查 `nodes.agent_token` 验证
|
||||
* 不再依赖全局环境变量 Agent Token
|
||||
|
||||
注意:
|
||||
@@ -303,6 +305,7 @@ Agent 必须满足以下行为:
|
||||
* 启动时先校验本地路由文件 checksum 与控制面激活版本是否一致
|
||||
* Docker 模式启动时应重建容器,而不是继续复用异常停止的旧容器
|
||||
* 若本地 `agent_token` 为空且配置了 `discovery_token`,则应自动发起首次注册并完成 Token 置换
|
||||
* 若本地已显式配置节点专属 `agent_token`,则无需注册,直接进入心跳与同步流程
|
||||
|
||||
### 7.3 容错规范
|
||||
|
||||
|
||||
@@ -123,17 +123,19 @@ MVP 已于第一版完成。当前进入第二版迭代。
|
||||
|
||||
* agent-auth 中间件改造(查表验证)
|
||||
* 移除全局 Token 环境变量, 节点不再通过该方式连接server
|
||||
* 引入自动发现TOKEN, 需要用户手动在节点页创建, 持有该TOKEN的节点会自动连接到SERVER
|
||||
* 用户手动创建节点时,直接生成节点专属 auth token
|
||||
* 引入全局自动发现 TOKEN,任意新节点持有同一个 TOKEN 即可自动连接到 SERVER
|
||||
* Node CRUD API
|
||||
* 前端 节点 管理页
|
||||
|
||||
完成标准:
|
||||
|
||||
* 用户启动server后需要手动在节点页添加节点, 此时会生成随机TOKEN, 持有该TOKEN的节点可以加入server. server可以修改节点的名称
|
||||
* 用户启动 server 后手动在节点页添加节点,会直接生成该节点的专属 auth token,持有该 token 的节点可占据该节点位
|
||||
* 用户可在管理界面查看全局 discovery token,批量部署的节点可共用该 token 自动注册到 server
|
||||
* 用户可以编辑节点, 包括节点名
|
||||
* 删除节点后 Agent 请求立即返回 401
|
||||
* 节点配置文件不再要求填写节点名和IP地址, 节点名默认从主机名获取, IP也是自动获取. 手动指定则为覆盖
|
||||
* 节点配置文件agent_token为空, 自动发现TOKEN配置为server生成值后, 会自己向server注册, 注册后会进行TOKEN置换, 更新节点配置文件agent_token
|
||||
* 节点配置文件填写节点专属 `agent_token` 时,可直接上线;若 `agent_token` 为空且填写全局 discovery token,则会自动注册并完成 token 置换
|
||||
|
||||
|
||||
### V2 Phase 4: 路由自定义头
|
||||
@@ -208,8 +210,9 @@ MVP 已于第一版完成。当前进入第二版迭代。
|
||||
|
||||
### V2 Phase 3 检查项
|
||||
|
||||
* 可通过管理界面创建节点并生成 discovery token
|
||||
* Agent 可使用 discovery token 自动接入并完成 agent token 置换
|
||||
* 可通过管理界面创建节点并生成节点专属 auth token
|
||||
* 可查看全局 discovery token,并允许多个节点共用该 token 自动接入
|
||||
* Agent 可使用全局 discovery token 自动接入并完成 agent token 置换
|
||||
* 用户可编辑节点名并删除节点
|
||||
* 删除节点后 Agent 请求立即失败
|
||||
* Agent 在未显式配置节点名/IP 时可自动探测
|
||||
|
||||
Reference in New Issue
Block a user