register

package
v0.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CollectHeartbeatData

func CollectHeartbeatData(nodeUUID string) *workerpb.HeartbeatRequest

CollectHeartbeatData 采集心跳数据。

func IdentityPath

func IdentityPath(etcDir string) string

IdentityPath 返回数据根下的身份文件绝对路径 <etcDir>/node-identity.json。

func SaveIdentity

func SaveIdentity(etcDir string, id *Identity) error

SaveIdentity 把节点身份原子写入 etcDir 下的身份文件,权限 0600(含 node_secret,禁止他者读取)。 先写临时文件再 rename,避免写入中途崩溃留下半截文件。

func WaitForControlPlane

func WaitForControlPlane(addr string, timeout time.Duration) error

WaitForControlPlane 等待 Control Plane 可用。

Types

type Config

type Config struct {
	ControlPlaneAddr string // Control Plane gRPC 地址
	NodeName         string // 节点名称
	WsPort           int    // WebSocket 端口
	GrpcPort         int    // 历史兼容字段;Worker 不再监听 gRPC 端口。
	Host             string // 本机 IP(留空自动检测,优先 127.0.0.1)
	// EnrollToken enrollment token 明文(FR-080,见 ADR-020)。
	// 仅新节点首次注册(无本地身份文件)时携带;经 gRPC metadata 传给 CP 校验消费。
	// 已有本地身份的重注册留空;CP 仅按 UUID 与密钥放行,不消费 token。
	EnrollToken string
	// NodeUUID / NodeSecret 本地持久化的节点身份(见 ADR-039)。
	// 重注册时(已有本地身份文件)填入并经 gRPC metadata 出示,CP 按 UUID 匹配既有节点、
	// 校验 secret 后重注册,避免 name 锚定带来的重名覆写。首注册留空。
	NodeUUID   string
	NodeSecret string
}

Config 注册配置。

type Identity

type Identity struct {
	// NodeUUID CP 签发的节点 UUID。
	NodeUUID string `json:"nodeUuid"`
	// NodeSecret CP 签发的节点密钥(心跳鉴权用,敏感,不入日志)。
	NodeSecret string `json:"nodeSecret"`
	// NodeName 注册使用的节点名(重注册按 name 命中,需与首注册一致)。
	NodeName string `json:"nodeName"`
	// WSTokenSecret CP 下发的 WS 令牌密钥(FR-275,见 ADR-061):终端/插件桥令牌校验用,
	// 敏感,不入日志。空 = 旧 CP 未下发过,启动回退本地 jwt_secret 配置。
	// omitempty:空值不写入文件,旧格式身份文件字节不变。
	WSTokenSecret string `json:"wsTokenSecret,omitempty"`
}

Identity 是 Worker 本地持久化的节点身份(FR-080,见 ADR-020 §3)。

首次经 enrollment token 注册成功后,CP 换发的 node_uuid/node_secret 写入数据根 etc/node-identity.json(0600)。Worker 重启时优先读该文件复用既有身份走重注册, 不重复消费一次性 enrollment token。文件含 node_secret,绝不回传日志。

func LoadIdentity

func LoadIdentity(etcDir string) (*Identity, error)

LoadIdentity 从 etcDir 读取本地节点身份。文件不存在返回 (nil, nil)(首次安装的正常情形)。 文件存在但损坏(JSON 非法或缺关键字段)返回错误,由调用方决定回退策略。

type Result

type Result struct {
	NodeUUID   string
	NodeSecret string
	// WSTokenSecret CP 下发的 WS 令牌密钥(FR-275,见 ADR-061);旧 CP 响应为空。
	WSTokenSecret string
}

Result 注册结果。

func Register

func Register(ctx context.Context, cfg Config) (*Result, error)

Register 向 Control Plane 注册当前 Worker Node。

func RegisterWithRetry

func RegisterWithRetry(ctx context.Context, cfg Config, initialDelay, maxDelay time.Duration) (*Result, error)

RegisterWithRetry 带指数退避重试的注册。 Control Plane 未启动或暂时不可达时,Worker 不退出,按指数退避重试直到成功或 ctx 取消。 退避区间 [initialDelay, maxDelay],每次 ×2,上限 maxDelay。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL