Skip to content

云主机 API

面板中 K3k/CKM/CVM 统一按“云主机”理解。本文档说明当前 w7panel-server/app/k3k 实际注册的云主机用户、CKM/CVM、同步、菜单和套餐接口。登录、token、用户信息兼容入口的凭据说明见 credentials.md;云主机订单、授权订单和资源超卖接口见 orders.md

整体使用方式

云主机接口用于处理 K3k 用户、子集群、CKM/CVM 资源、资源套餐和子集群同步。开发时先通过用户信息接口确定当前用户身份和权限,再根据角色决定是查看当前云主机、切换登录其它云主机、还是操作 CKM/CVM 列表。

基本流程

  1. 使用用户 token 调用 /panel-api/v1/k3k/info/panel-api/v1/userinfo 获取当前用户、角色、集群和权限信息。
  2. 需要初始化当前用户云主机时,调用 /panel-api/v1/k3k/init
  3. Founder 或 w7panel 用户需要切换到指定云主机时,调用 /panel-api/v1/k3k/login 获取目标用户 token。
  4. 查询云主机实例列表和详情时,使用 CKM/CVM 接口。
  5. 子集群资源同步由 /panel-api/v1/k3k/sync-* 接口处理,订单和资源超卖进入 orders.md

场景选择

场景使用接口说明
当前用户与权限/panel-api/v1/k3k/info/panel-api/v1/userinfo返回 K3kUser.ToArray()
初始化当前云主机/panel-api/v1/k3k/init当前实现直接返回成功,调用前确认预期
切换云主机用户/panel-api/v1/k3k/loginFounder 或 w7panel 用户使用
CKM/CVM 列表与详情/panel-api/v1/k3k/ckm/cvm查询云主机资源对象
子集群同步/panel-api/v1/k3k/sync-*同步 Ingress、ConfigMap、Secret、MicroApp 等
套餐列表/panel-api/v1/idc-list商店可展示的资源套餐

使用边界

  • 云主机是面板侧业务概念,底层仍对应 K3k、CKM/CVM 和 K8s 资源。
  • 普通用户只能访问自身上下文;Founder 查询 CKM/CVM 时可指定 namespace。
  • 同步接口当前未挂载用户鉴权中间件,部署侧应限制来源。
  • 历史未注册接口不作为可调用 API 维护,具体以 app/k3k/provider.go 为准。

通用说明

鉴权与凭据

云主机接口默认使用面板用户 token,传递方式和其他面板业务 API 一致:

http
Authorization: Bearer <user-token>

凭据来源、刷新方式和兼容取 token 位置见 credentials.md。本文不重复说明登录、refresh token 和前端注入逻辑。

接口类型鉴权说明
用户信息、初始化、CKM/CVM、菜单Authorization: Bearer <user-token>经过 middleware.Auth,后端从 token 解析 K3k 用户和命名空间
切换云主机用户Authorization: Bearer <founder-or-w7panel-token>路由经过 middleware.Auth,Controller 内限制 Founder 或 w7panel 用户
CVM/CKM 登录Authorization: Bearer <user-token>返回目标 K3k 用户 token 和 refreshToken
同步接口无用户 token当前路由未挂 middleware.Auth,应由部署侧限制来源
套餐列表无用户 token公开展示商店可用资源套餐

使用边界:

  • k3k/logincvm/:namespace/action/:name/login 返回的是目标云主机用户 token,可作为后续面板 API 的用户 token 使用。
  • refreshToken 只用于刷新登录态,不用于普通业务 API。
  • 同步接口不应暴露到公网或不可信网络。
  • idc-list 无需用户 token,但只用于展示套餐,不代表用户可购买或可操作资源。

响应格式

云主机接口成功时直接返回业务对象,不额外包裹 codedatamessage。用户信息和菜单返回 K3kUser.ToArray() 生成的字段 map;登录类接口返回目标用户 tokenexpireisK3kUserrefreshToken 等字段;同步和初始化类接口多返回 JSON 字符串 "success";套餐列表返回 types.Params 结构。

参数位置

用户信息、菜单和套餐列表接口通常无请求参数。/panel-api/v1/k3k/login 使用 form 参数;CKM/CVM 列表按 query 指定 namespace;详情和登录操作使用 path 中的 namespace、name;同步接口使用 form 参数,具体字段见对应接口说明。

能力概览

能力说明
用户与集群查询当前云主机用户、角色、权限和 K3k 集群信息
用户切换Founder 或 w7panel 用户切换到指定云主机用户
同步主集群和 K3k 子集群之间同步 Ingress、ConfigMap、Secret、MicroApp 等资源
CKM/CVM查询云主机实例列表、详情,并登录指定 CVM/CKM
菜单与套餐查询当前用户菜单权限和可展示资源套餐

用户与集群

GET /panel-api/v1/k3k/info

功能:获取当前 token 对应的 K3k 用户、集群、角色和功能权限信息。

鉴权:Authorization: Bearer {user-token}

请求参数:无。

响应参数:K3kUser.ToArray() 返回的 map[string]string。常用字段如下:

字段类型说明
w7.cc/usernamestring用户名
w7.cc/rolestring用户角色
w7.cc/user-modestring用户模式
w7.cc/menustring菜单权限
w7.cc/quota-limitstring配额限制
w7.cc/file-editorstring文件编辑权限
w7.cc/web-shellstringWeb Shell 权限
w7.cc/domain-white-liststring域名白名单
w7.cc/demo-userstring是否演示用户
w7.cc/has-passwordstring是否设置密码
w7.cc/can-init-clusterstring是否可初始化集群
w7.cc/can-renewstring是否可续费
w7.cc/need-renewstring是否需要续费
w7.cc/can-expandstring是否可扩容
k3k.io/namestringK3k 集群名称
k3k.io/namespacestringK3k 集群命名空间
k3k.io/cluster-modestring集群模式
k3k.io/cluster-policystring集群策略
k3k.io/cluster-statusstring集群状态
k3k.io/expire-timestring到期时间
w7.cc/server-pod-namestringK3k server Pod 名称
w7.cc/server-container-namestringK3k server 容器名称

GET /panel-api/v1/userinfo

功能:兼容入口,行为同 /panel-api/v1/k3k/info

鉴权:Authorization: Bearer {user-token}

请求参数:无。

响应参数:同 /panel-api/v1/k3k/info

POST /panel-api/v1/k3k/init

功能:初始化当前 K3k 用户对应的集群。当前 Controller 返回成功,实际初始化逻辑保留在代码注释中,调用前需要结合实现确认预期效果。

鉴权:Authorization: Bearer {user-token}

请求参数:无。

响应参数:

json
"success"

POST /panel-api/v1/k3k/login

功能:创始人或 w7panel 用户切换登录到指定 K3k 用户,返回该用户 token。

鉴权:Authorization: Bearer {founder-or-w7panel-token}。路由经过 middleware.Auth,Controller 内要求当前用户为 Founder 或用户名为 w7panel

请求类型:application/x-www-form-urlencoded

请求参数:

参数位置必填类型说明
k3kUserNameformstring目标 K3k 用户名,即 ServiceAccount 名称
cvmNameformstring关联的 CVM/CKM 名称

响应参数:

字段类型说明
tokenstring目标用户 token
expireint64token 过期时间,Unix 秒
isK3kUserbool是否 K3k 用户
refreshTokenstring刷新 token

同步接口

同步接口用于在主集群和 K3k 子集群之间同步资源。以下接口当前未挂载用户鉴权中间件,调用方应限制来源并避免暴露到不可信网络。

鉴权:无需用户 token。

通用请求参数:

参数位置必填类型说明
virtualNameformstring子集群内资源名称
virtualNamespaceformstring子集群内资源命名空间
k3kNameformstringK3k 集群名称
k3kNamespaceformstringK3k 集群命名空间
k3kModeformstringK3k 模式,如 virtual
versionformstring版本号
ckmNameformstringCKM/CVM 名称,sync-microapp 使用
方法路径功能响应
POST/panel-api/v1/k3k/sync-ingress同步 Ingress"success"
POST/panel-api/v1/k3k/sync-configmap同步 ConfigMap"success"
POST/panel-api/v1/k3k/sync-mcpbridge同步 MCP Bridge"success"
POST/panel-api/v1/k3k/sync-secret同步 Secret"success"
POST/panel-api/v1/k3k/sync-down-static触发子集群静态资源下载"success"
POST/panel-api/v1/k3k/sync-microapp将 MicroApp 同步到子集群"success"

CKM/CVM

GET /panel-api/v1/k3k/ckm

功能:获取 CKM 列表。Founder 可通过 namespace 查询指定命名空间;非 Founder 强制使用当前 token 所属命名空间。

鉴权:Authorization: Bearer {user-token}

请求参数:

参数位置必填类型说明
namespacequerystring命名空间,仅 Founder 查询时生效

响应参数:CkmList Kubernetes 自定义资源列表;每个条目会执行 ComputeStatus() 后返回。

GET /panel-api/v1/k3k/cvm

功能:旧版 CVM 列表入口,行为同 /panel-api/v1/k3k/ckm

鉴权:Authorization: Bearer {user-token}

请求参数:同 /panel-api/v1/k3k/ckm

响应参数:同 /panel-api/v1/k3k/ckm

GET /panel-api/v1/k3k/ckm/v1/:namespace/info/:name

功能:获取指定 CKM 详情。

鉴权:Authorization: Bearer {user-token}

请求参数:

参数位置必填类型说明
namespacepathstringCKM 命名空间
namepathstringCKM 名称

响应参数:Ckm Kubernetes 自定义资源对象;返回前会执行 ComputeStatus()

GET /panel-api/v1/k3k/cvm/v1/:namespace/info/:name

功能:旧版 CVM 详情入口,行为同 /panel-api/v1/k3k/ckm/v1/:namespace/info/:name

鉴权:Authorization: Bearer {user-token}

请求参数:同 CKM 详情接口。

响应参数:同 CKM 详情接口。

POST /panel-api/v1/k3k/cvm/:namespace/action/:name/login

功能:登录指定 CVM/CKM,返回对应 K3k 用户 token。K3k 子集群用户不能再次登录 CVM。

鉴权:Authorization: Bearer {user-token}

请求参数:

参数位置必填类型说明
namespacepathstringCVM/CKM 命名空间
namepathstringCVM/CKM 名称

响应参数:

字段类型说明
tokenstring目标用户 token
expireint64token 过期时间,Unix 秒
isK3kUserbool是否 K3k 用户
refreshTokenstring刷新 token

菜单与套餐

GET /panel-api/v1/menu

功能:返回当前用户权限信息,数据来源同 K3kUser.ToArray()

鉴权:Authorization: Bearer {user-token}

请求参数:无。

响应参数:map[string]string,字段同 /panel-api/v1/k3k/info

GET /panel-api/v1/idc-list

功能:获取可展示在商店中的 IDC/K3k 集群资源套餐列表。只返回未设置 w7.cc/showInShop 或该 label 为 true 的策略。

鉴权:无需用户 token。

请求参数:无。

响应参数:types.Params,即 []map[string]string

字段类型说明
[]array套餐参数列表
[][key]string套餐参数键值,由 Cost 资源注解 w7.cc/package-items 解析得到