解雇你的 DevOps 团队:Solo Dev 的 Kamal 2 指南

发布: (2026年2月9日 GMT+8 08:25)
5 分钟阅读
原文: Dev.to

Source: Dev.to

部署困境

  • PaaS 陷阱(Heroku、Render、Fly): 使用极其简便,但一旦需要超过 512 MB 的内存,费用就会从 $7 跳涨到 $50 再到 $200。你要为“便利”付税。
  • 云端迷宫(AWS、Kubernetes): 拥有无限算力和更低的原始资源成本,但要部署一个“Hello World”应用,你必须精通 IAM 角色、VPC 和负载均衡器,堪称需要博士学位。

引入 Kamal。
Kamal 由 Basecamp(Rails 的制造者)创建,弥合了上述鸿沟。它让你拥有原始 VPS 硬件的所有权和低成本,同时提供 git push 风格的部署简易性。

随着 Kamal 2 的发布,它终于可以面向大众使用。下面展示我如何在不到 10 分钟的时间里,将一个生产就绪的应用部署到一台 $5 的 Hetzner 服务器上。

什么是 Kamal?

Kamal 本质上是 “容器版 Capistrano”。 它在你的笔记本电脑本地运行。当你输入 kamal deploy 时,它会:

  1. 在本地(或在构建器上)构建你的 Docker 镜像。
  2. 将镜像推送到注册表(Docker Hub、GitHub Packages 等)。
  3. SSH 登录到你的服务器。
  4. 拉取新的镜像。
  5. 与旧版本一起启动它。
  6. 使用内置代理进行流量切换(蓝绿部署)。
  7. 杀掉旧版本。

没有 “主节点”,也不需要管理 Kubernetes 集群状态。如果你的笔记本电脑丢失,服务器仍然会继续运行。

硬件:5 美元的强力机器

前往 Hetzner(或 DigitalOcean/Linode)购买一台廉价的 VPS。大约 5 美元 / 月 就能获得一台 2 个 vCPU、4 GB RAM 的 ARM 服务器。

在 Heroku 上,拥有相似规格的 “Performance” dyno 每月费用约 250 美元 以上。这使得 Kamal 对于单独开发者来说是一个毫无悬念的选择。

Source:

指南:从零到 SSL

1. 安装

假设你的本地已经在运行 Docker:

gem install kamal
kamal init

2. 配置(config/deploy.yml

Kamal 2 大幅简化了配置。以下就是你需要的全部内容:

service: my-app
image: your-username/my-app

servers:
  web:
    - 123.45.67.89 # 你的 VPS IP 地址

# 存放 Docker 镜像的仓库
registry:
  server: ghcr.io
  username: your-username
  password:
    - KAMAL_REGISTRY_PASSWORD

# 注入环境变量
env:
  secret:
    - RAILS_MASTER_KEY
    - POSTGRES_PASSWORD

3. Kamal 2 的魔法:代理

在 Kamal 1 中,你必须手动配置 Traefik 来处理 SSL。Kamal 2 默认包含 kamal-proxy,它会自动处理:

  • 零停机部署: 在应用重启时保持请求。
  • 自动 SSL: 自动与 Let’s Encrypt 通信,为你提供 HTTPS。

deploy.yml 中加入以下内容:

proxy:
  ssl: true
  host: myapp.com

4. 数据库怎么办?

对于真正的“一人”部署,你可以在同一台 $5 服务器上使用 Accessories 运行数据库。Kamal 会启动一个 Postgres 容器并为你管理它:

accessories:
  db:
    image: postgres:15
    host: 123.45.67.89
    port: 5432
    env:
      POSTGRES_DB: my_app_production
      POSTGRES_USER: my_app
      POSTGRES_PASSWORD:
        - POSTGRES_PASSWORD
    files:
      # 将数据持久化到宿主机磁盘,以便重启后仍然存在!
      - db_data:/var/lib/postgresql/data

5. 启动

运行以下单条命令:

kamal setup

kamal setup 将会:

  • SSH 登录你的 VPS 并安装 Docker。
  • 启动数据库 accessory。
  • 启动 Kamal 代理。
  • 构建你的应用。
  • 启动你的应用。
  • 颁发 SSL 证书。

大约 3–5 分钟 后,你的应用就可以通过 https://myapp.com 访问了。

第 2 天 操作:轻松入眠

部署 Bug 修复

kamal rollback

Kamal 会保留旧的容器(已停止)。回滚仅仅是将代理指针切回到之前的容器,耗时约 10 秒。

运行 Rails 控制台

kamal app exec -i 'bin/rails console'

您会立即进入服务器上的远程控制台会话。

摘要

“DevOps 人员”过去是必须招聘的。随着 Kamal 2,拥有自己基础设施的门槛已经崩塌。你不需要 Kubernetes 或 AWS Lambda——只需要一台 Linux 机器、一把 SSH 密钥和 Kamal。

解雇你的 DevOps 团队(或者更确切地说,别再尝试当它了)。回归编码。

0 浏览
Back to Blog

相关文章

阅读更多 »

解锁笔记本电脑 GPU 的隐藏力量

概述:大多数现代笔记本电脑都配备了强大的 GPU,但往往未被充分利用。无论你是运行本地 LLM 的软件工程师,还是数据科学家……