切换组织
一个账户可以同时属于多个工作区。侧边栏顶部的切换器决定你正在哪个工作区里工作 — 你看到的、部署的和花掉的一切都属于那一个。
你所属的工作区
| 工作区 | 从哪里来 | 你的角色 |
|---|---|---|
| 个人 | 首次登录时为你创建 | 管理员,且是唯一的成员 |
| 你创建的组织 | 切换器中的 创建组织… 入口 | 管理员 |
| 你加入的组织 | 邀请链接或已接受的邀请 | 邀请授予的角色 |
切换器会显示当前工作区的名称 — 个人工作区显示为 个人 — 下方是你在该组织中的角色,这样你一眼就能看出能不能在这里充值。个人工作区在那个位置显示的是 个人工作区,因为你永远是它唯一的成员。
切换
从切换器中选择另一个工作区。会发生三件事:
- 控制台丢弃所有已缓存的页面数据,并为新组织重新拉取。
- 之后的每个 API 请求都会在
X-Org-Id请求头中携带该组织的 id。切换回个人工作区则会清除这个请求头 — 没有X-Org-Id本身就表示你的个人工作区。 - 选择会保存在这个浏览器里,下次你会回到同一个工作区。
整个过程中你始终以同一个用户身份登录 — 切换改变的是上下文,不是身份。选择是按浏览器保存的:第二台设备会从你的个人工作区开始,直到你在那里也切换过。
实例按你选择 部署实例 时处于活动状态的那个工作区的余额计费,之后无法转移。误部署到个人工作区,花的是你自己的余额,而不是团队的。
创建组织
打开切换器,选择 创建组织…,给它取一个不超过 64 个字符的名称。你成为它的管理员,控制台会立刻把你切换进去。它初始余额为零,没有实例,也没有自己的模板。先充值,然后 邀请你的同事。
哪些属于组织,哪些属于你
| 项目 | 归属范围 | 是否跨工作区? |
|---|---|---|
| 余额和交易记录 | 组织 | 否 |
| 实例 | 组织 | 否 |
| API 密钥 | 组织 | 否 |
| 你创建的模板 | 组织 | 仅当你把它设为 public 时 |
| 用量日志 | 组织 | 否 |
| 成员和角色 | 组织 | 否 |
| SSH 密钥 | 用户 | 是 — 各处都是同一份列表 |
| 登录方式、两步验证、通行密钥 | 用户 | 是 |
模板是唯一的部分例外。当模板是 Superheat 精选的 system 模板、可见性为 public,或由当前组织拥有时,它才在这个工作区中可见。复制一个你不拥有的模板,会生成一份归当前组织所有的 private 副本,其中的机密环境变量值和私有镜像仓库凭证会被清空。
余额永远不跨组织
每个组织自己购买、自己消耗余额。工作区之间没有转账、没有共享池,也不能借用:个人工作区里的 $200 对余额归零的组织毫无帮助。
自动保护措施同样按组织生效。当一个组织的余额降到零时,它正在运行的实例会被停止;到 −$5 时,它的实例会被销毁。另一个工作区有钱救不了它们。参见 计费原理。
只有那个特定组织的管理员才能为它充值。你在别处是管理员并没有用。
实例永远不跨组织
实例列表、部署页面以及所有实例端点,都只返回当前组织的机器。你无法查看、启动、停止或销毁属于你当前不在其中的工作区的实例 — 即使你同时是两边的成员。请先切换。
花费的归属方式也一样:实例在整个生命周期内都向部署它的组织计费,无论之后由谁停止或销毁。
API 密钥永远不跨组织
shk_ 密钥在某一个组织内签发,并始终固定在这个组织上。它只对该组织具有成员级别的访问权限。
- 用某个密钥携带指向另一个组织的
X-Org-Id请求头,会返回403 ORG_MISMATCH。 - 要针对两个组织做自动化,请在每个组织中各签发一个密钥,并在自己的代码里选择用哪一个。
- 无论创建者当前在控制台里查看哪个工作区,密钥对它所属的组织都照常有效。
参见 API 密钥。
SSH 密钥跟着你走
SSH 密钥是例外:它们存在于你的用户账户上,而不在任何组织上。添加一次,它就会出现在你所属的每个工作区中,包括你之后加入的。删除一个密钥,就是在所有地方删除它。
部署时你只能选择自己账户上的密钥 — 同事的密钥不会出现在选项里,API 也会拒绝不属于你的密钥 id。实例只会预置部署者选择的那一个密钥,所以同事不会自动获得别人部署的机器的 shell 访问权限。他们仍然可以在控制台里看到它、读取它的日志、停止它并销毁它。
参见 添加密钥。
从 API 选择组织
X-Org-Id 请求头为组织范围的端点选择工作区。省略它,请求就使用你的个人工作区。
curl "$SUPERHEAT_API/v1/instances" \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "X-Org-Id: $ORG_ID"
| 调用 | 你能得到什么 |
|---|---|
GET /v1/orgs | 你所属的每个工作区,以及你的角色和它的余额 |
GET /v1/orgs/current | 当前工作区、它的余额、你的角色,以及它的成员列表 |
有两个错误值得认一认:403 NOT_A_MEMBER 表示请求头指向了一个你并不属于的组织,400 INVALID_ORG_ID 表示请求头不是有效的 id。
离开组织
没有自助离开的方式。请让该组织的管理员在 团队 页面把你移除;之后这个工作区就会从你的切换器中消失。如果你是它的最后一名管理员,请先提升其他人。你的个人工作区是永久的,无法离开。