关于 clickhousectl-cloud-deploy
通过 `clickhousectl` 将应用部署到 ClickHouse Cloud 的分步技能,面向开发者,涵盖账号、CLI 认证、服务创建、架构迁移、验证及应用凭据配置。
主要功能
- 01ClickHouse Cloud 账号设置
- 02CLI 认证指导
- 03创建云服务
- 04迁移架构和视图
- 05验证部署结果
- 06配置应用用户
适用场景
- 01将本地 ClickHouse 应用迁至生产环境
- 02创建 ClickHouse Cloud 服务
- 03迁移架构和物化视图
- 04配置应用数据库凭据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ clickhouse/ agent-skills --skill clickhousectl-cloud-deploy安装后在 Claude Code 中输入/clickhousectl-cloud-deploy确认已加载。
附带文件metadata.json
详细介绍
部署到 ClickHouse Cloud
本技能将介绍如何使用 clickhousectl 部署到 ClickHouse Cloud,涵盖账户设置、CLI 身份验证、服务创建、架构迁移以及连接应用程序。请按顺序完成以下步骤。
适用场景
当用户希望执行以下操作时,使用此技能:
- 将 ClickHouse 应用程序部署到生产环境
- 将 ClickHouse 托管为云服务
- 从本地 ClickHouse 设置迁移到 ClickHouse Cloud
- 创建 ClickHouse Cloud 服务
- 首次设置 ClickHouse Cloud
步骤 1:注册 ClickHouse Cloud
使用任何云端命令之前,用户需要拥有 ClickHouse Cloud 账户。
询问用户:“您已经有 ClickHouse Cloud 账户了吗?”
如果用户没有账户,请说明:
ClickHouse Cloud 是一项全托管服务,可代您运行 ClickHouse——无需维护基础设施,并包含自动扩缩、备份和升级。您可以免费试用,无需信用卡即可开始使用。
创建账户,请访问:https://clickhouse.cloud
使用电子邮件、Google 或 GitHub 账户注册。进入控制台后,请告诉我,我们将继续下一步。
等待用户确认已完成注册或已有账户后再继续。
步骤 2:对 CLI 进行身份验证
首先,确保已安装 clickhousectl。使用以下命令检查:
which clickhousectl
如果未找到,请安装:
curl -fsSL https://clickhouse.com/cli | sh
使用 ClickHouse Cloud API 密钥对 clickhousectl 进行身份验证。
创建 API 密钥
引导用户在 ClickHouse Cloud 控制台中创建密钥:
- 点击左侧栏中的齿轮图标(设置)
- 前往 API Keys
- 点击 Create API Key
- 为密钥命名(例如 “clickhousectl”)
- 为密钥选择 Admin 角色。需要 Admin 权限,因为
cloud service query首次使用时会自动为每项服务创建一个查询端点 API 密钥,这需要创建密钥的权限。Developer 范围的密钥可以管理服务,但可能无法完成自动创建步骤。- 点击 Generate API Key
- 复制 Key ID 和 Key Secret——密钥 Secret 只会显示一次
使用密钥验证 clickhousectl
请用户在同一工作目录中打开一个新的终端标签页,并在其中使用他们的 Key ID 和 Secret 运行登录命令——这样密钥就不会出现在聊天会话中。请他们完成后回来告知您。
clickhousectl cloud login --api-key <key> --api-secret <secret>
--api-key 和 --api-secret 都是必需的——如果用户只有其中一个,请告知他们两者都需要。
验证身份验证是否成功:
clickhousectl cloud org list
此命令应返回用户所属的组织。
步骤 3:创建云服务
创建新的 ClickHouse Cloud 服务:
clickhousectl cloud service create --name <service-name>
从输出中获取 HTTPS 主机和端口,将它们添加到 .env 中,分别设为 CLICKHOUSE_HOST 和 CLICKHOUSE_PORT。确保 .env 已加入 gitignore。
然后持续轮询,直到服务状态为 running:
clickhousectl cloud service get <service-id>
步骤 4:迁移架构
如果用户有本地表定义(例如,使用 clickhousectl-local-dev 技能创建的定义),请将它们迁移到云服务。
使用 cloud service query 通过 HTTP 对云服务运行 SQL。只需传入服务名称(或 --id)。
读取 clickhouse/tables/ 中的本地架构文件,并将每个文件应用到云服务:
clickhousectl cloud service query --name <service-name> \
--queries-file clickhouse/tables/<table>.sql
请按依赖顺序应用——物化视图引用的表应先创建。
如果存在物化视图,也请应用它们:
clickhousectl cloud service query --name <service-name> \
--queries-file clickhouse/materialized_views/<view>.sql
如需指定数据库,请传入 --database <name>。
步骤 5:验证部署
连接到云服务并确认表已存在:
clickhousectl cloud service query --name <service-name> --query "SHOW TABLES"
运行测试查询,确认架构正确:
clickhousectl cloud service query --name <service-name> --query "DESCRIBE TABLE <table-name>"
步骤 6:为应用创建专用用户
default 用户拥有完整的管理员权限,不应供应用使用。创建一个专用用户,将其权限限定在步骤 4 中部署的架构范围内。
生成一个强随机密码,并在创建用户之前将凭据追加到 .env,这样即使后续步骤失败,密码也已保存:
PASSWORD=$(openssl rand -base64 32)
echo "CLICKHOUSE_USER=app_user" >> .env
echo "CLICKHOUSE_PASSWORD=$PASSWORD" >> .env
然后创建用户,并授予应用所需的最低权限。将 <database> 替换为架构所在的数据库(通常为 default):
clickhousectl cloud service query --name <service-name> --query \
"CREATE USER app_user IDENTIFIED BY '$PASSWORD'"
clickhousectl cloud service query --name <service-name> --query \
"GRANT SELECT, INSERT ON <database>.* TO app_user"
根据应用的需求调整授权:
- 只读应用 → 移除
INSERT - 需要创建或删除自己的表 → 还要在数据库上授予
CREATE TABLE, DROP TABLE权限(但最好以管理员用户身份运行迁移) - 多个数据库 → 对每个数据库重复执行
GRANT,或通过ON <database>.<table>将权限限定到具体表
验证用户存在且拥有预期的授权:
clickhousectl cloud service query --name <service-name> --query "SHOW GRANTS FOR app_user"
ClickHouse 无法在之后显示密码,因此如果 .env 丢失,必须通过 ALTER USER app_user IDENTIFIED BY '<new>' 重置用户密码。
现在,应用可以使用 .env 中的凭据连接到 ClickHouse Cloud。