核心概念
控制台中使用的术语,以及它们对你的应用意味着什么。
工作区
工作区(workspace)汇集了你的应用、团队成员、集成和账单。它有一个名称,以及一个用在 URL 中的短名称,即 slug(acme);它的控制台位于 cloady.com/w/acme。
一个工作区覆盖所有区域和所有环境,无需按地点逐一设置。你邀请的每个人都能看到其中的所有应用,一份订阅即可涵盖全部应用(参见容量与价格)。
应用
应用(application,控制台中简称“app”)就是你部署的某样东西:一个 WordPress 网站、一个 Node API,或一个 Postgres 数据库。它有自己的 URL、日志、变量、存储和部署历史。你可以从三个地方创建应用:
- 模板目录(Catalog) — 现成的应用(WordPress、Postgres、n8n 等),选中、命名、部署即可。
- GitHub — 你的某个仓库,由 Cloady 构建,并在你推送时重新部署。
- 上传(Upload) — 你电脑上的一个文件夹或 zip 压缩包。
应用由哪些部分组成(它的服务和存储卷)在创建时就已确定。唯一的例外是:从带有 compose 文件的 GitHub 仓库构建的应用,每次部署都会采纳该文件的改动。应用无法升级到模板目录中更新的版本;如需新版本,请部署一个新应用并迁移过去。
每个应用都只属于一个区域和一个环境,两者都在创建时选定;在同一工作区的同一环境内,应用名称是唯一的。因此,生产环境中的 blog 和预览环境中的 blog 是两个不同的应用,各有各的数据和 URL。
重命名应用会改变它的 URL,因为地址跟随名称变化。改动立即生效,其他一切保持不变:数据、变量和自定义域名都原样保留,你只需更新所有指向旧地址的链接。(对于用你自己的代码构建的应用,重命名之后将无法再回滚到重命名之前的部署。)
删除应用会永久删除它的数据。切勿为了重命名而删除应用。
服务与端点
- 服务(service)是应用中的一个容器。例如,一个 WordPress 应用有两个服务:网站本身和它的 MariaDB 数据库。每个服务都会在 Settings → Services 中单独列出,并带有一个终端按钮;应用的实时日志也可以分别显示每个服务。
- 端点(endpoint)是服务监听的端口及其协议。公开发布的端口可以从互联网访问;仅在内部暴露的端口,只能由应用中的其他服务通过服务名访问。Web 端口会获得一个
https://URL;数据库端口和游戏端口是原始的 TCP 或 UDP 端口,会获得一个主机名和一个端口号。
每个应用只有一个公开主机名,由它的主端点响应:主端点是应用声明的第一个 HTTP 端点;如果没有声明 HTTP 端点,则是它的第一个 TCP 端点。其他服务没有自己的主机名,请在应用内部通过服务名访问它们。如果应用除了网站之外还发布了 TCP 或 UDP 端口,请使用应用页面上显示的 IPv6 地址连接该端口。
区域
区域(region)是应用运行的地方,目前有 usw1(美国西部)、use1(美国东部)、eu1(德国)和 sin1(新加坡)。你在创建应用时选择区域,之后也可以通过应用危险操作区(Danger zone)中的 Transfer 迁移它;带有存储卷的应用在数据复制到新区域期间会停止服务。应用不会在区域之间自动故障转移;如果需要在两个地方运行同一个应用,请部署两次。
无需事先开通任何东西。新工作区可以立即部署到任何区域,无论免费还是付费。在这方面,只有一种错误会阻止部署:
payment_required— 该应用会让工作区超出免费额度,而目前没有绑定银行卡,或银行卡扣款被拒。工作区所有者可以在 Account → Billing 中添加银行卡,你也可以调小应用的规格。
如果某个区域没有空间容纳新应用,部署会显示 Adding capacity… 几分钟,期间会有一台服务器加入该区域。如果一直没有服务器加入,部署就会失败;请重试,或换一个区域。
容量与价格
你无需选择套餐。工作区中的应用会声明各自所需的资源(即 compose 文件中的资源上限,乘以你选择的缩放倍数),总量按以下四档套餐计价:
| 套餐 | vCPU | RAM | SSD | 每月价格 |
|---|---|---|---|---|
| Small | 1 vCPU | 2 GB | 50 GB | US$5.00 |
| Medium | 4 vCPU | 8 GB | 200 GB | US$15.00 |
| Large | 10 vCPU | 44 GB | 600 GB | US$60.00 |
| Max | 22 vCPU | 116 GB | 1 TB | US$120.00 |
- 总量会落在能覆盖全部三项资源的最小套餐上,价格介于该套餐与低一档套餐之间。恰好达到某档套餐的上限,就按该套餐的价格计费;介于两档之间的,价格也介于两者之间。因此,账单不会在档位边界处突然跳涨,申请更多资源也绝不会更便宜。
- 所有区域价格相同;你按应用声明的资源付费,而不是按实际用量付费。免费额度每月包含 200 GB 出站 HTTP 流量;付费容量包含不限量的网络流量。
- 如果工作区的应用总量不超过 0.5 vCPU、1 GB 内存和 5 GB SSD,就无需付费。这是一个门槛,而不是折扣:一旦任意一项资源超出,就会对整个工作区计费。
- 增加资源会立即按当前计费周期的剩余时间收费;如果扣款被拒,更改会被阻止,而不会照常生效。减少资源则在下次续费时生效,因此你已经付费的容量在本周期内仍可继续使用。
环境
每个应用都属于三种环境之一,即 production(生产)、preview(预览)或 development(开发):
- 不同环境之间名称互不冲突:生产环境的
blog和预览环境的blog是两个独立的应用。 - 所有环境都计入工作区的用量,并计入同一份账单。
- 主机名中不包含环境;主机名里的唯一短代码已经足以区分生产环境和预览环境的
blog。 development环境中的应用在推送代码时不会重新部署,除非你开启此功能;生产环境和预览环境默认会重新部署。
区域和环境是控制台 URL 的一部分(cloady.com/w/acme/usw1/production/a/blog);顶部的切换器决定你正在查看的是哪一组应用。
域名
域名(domain)是指向某个应用的主机名,在 Settings → Domains 中管理:
-
内置域名(Built-in) — 每个应用都会获得的
cloady.io主机名,HTTPS 已为你配置好。 -
自定义域名(Custom) — 你拥有的主机名。先添加它,然后创建面板中显示的 DNS 记录:子域名使用指向内置主机名的 CNAME;根域名(apex)不能使用 CNAME,请改用面板列出的 A 和 AAAA 记录。DNS 解析生效后,Cloady 会为它申请 Let's Encrypt 证书;面板会以 queued → pending → issued 显示进度,如果记录始终无法解析,则显示 failed 及原因。
-
在 Cloady 注册的域名(Registered with Cloady) — 你在这里购买的域名。可以在部署输入框中购买(输入类似
acme.dev的名称);当你在应用的 Domains 表单中输入的名称尚未被注册时,也可以在那里购买;还可以在 Workspace settings → Domains 中购买。域名注册期为一年,附带 WHOIS 隐私保护,属于整个工作区,而不是某一个应用。使用 Automatic DNS 时,域名及其所有子域名都已指向 Cloady,因此把shop.acme.dev绑定到任意应用都无需修改 DNS。除非你关闭自动续费,否则 Cloady 会在域名到期前一个月为它续费,费用从工作区的银行卡扣除。
Open 按钮使用内置主机名。将某个域名标记为 primary(通过 API 或 Terraform)只会在列表中给它加上标记。
Workspace settings → Domains 列出工作区中的所有域名。在这里注册的域名带有记录编辑器(MX、TXT、CNAME 等,并为常见邮件服务商提供预设);托管在其他 DNS 服务商的域名,会显示需要在那里添加的记录,以及这些记录目前是否已能解析。每个应用自己的 cloady.io 主机名也可以添加记录,记录名在它之下,例如 mail 或 _verify。
资源与扩缩容
工作区的用量就是其中所有应用声明的资源之和。无需预先购买容量,用量也没有封顶。
每个服务运行时都有 CPU 上限和内存上限:取应用声明的值;如果应用没有声明,则为 0.5 vCPU 和 1 GB。Settings → Resources 可以按应用缩放这些上限,倍数从 0.5× 到 4×,步长为 0.25,CPU 和内存分别设置。一个应用的费用,取决于其所有服务在当前倍数下的上限之和。
当你部署新应用或调高某个应用的缩放倍数时,Cloady 会把它的上限与所有已部署的资源相加,并在创建任何东西之前为新的总量计价。在免费额度内不收费。超出额度后,会从已绑定的银行卡扣取差额;如果没有绑定银行卡,或扣款被拒,你会收到 payment_required,且不会做任何更改。保存之前,缩放表单会显示每月费用的差额。
存储的处理方式与 CPU 和内存不同。存储卷的大小在 Settings → Resources 中逐个设置,缩放倍数不会影响它们,而且存储卷只能扩大,不能缩小:新大小在保存时生效,无法撤销。应用自己的页面会列出它的存储卷以及每个存储卷的使用率,点击 Browse files 即可打开其中一个。
URL
Cloady 使用两个域名:cloady.com 用于控制台,工作区以路径形式出现(cloady.com/w/acme);cloady.io 用于你部署的应用。
应用的主机名由应用名、一段唯一的短代码和工作区名组成。它在所有区域和所有环境中格式都相同,每个应用都有自己的短代码:
my-blog-k7q2v9ze-acme.cloady.io production · usw1
my-blog-p3x8m1wd-acme.cloady.io preview · eu1第一部分是应用的 slug,可以在 Settings → General 中编辑。在你自己设置之前,它会跟随应用名称变化;一旦设置过,它就保持不变,之后重命名应用也不会再改变 URL。
环境变量
Settings → Environment 中保存的是应用各服务能看到的变量。标记为机密(secret)的值在保存后会被隐藏,可以逐个显示;你也可以粘贴一个 .env 文件,一次导入多个变量。修改会在下次部署时生效:保存变量不会重启已经在运行的服务,如需立即生效,请使用 Redeploy。
Cloady 会自动设置几个变量,你可以在自己的变量值中用 ${...} 引用它们:
| 变量 | 值 |
|---|---|
CLOADY_PRIMARY_URL | https:// 加上应用的主机名 |
CLOADY_PRIMARY_HOST、CLOADY_DOMAIN | 应用的主机名 |
CLOADY_WORKSPACE、CLOADY_SVCID | 分别是工作区的 slug 和应用的 slug |
CLOADY_HOST_<SERVICE> | 另一个服务在应用内部的地址 |