mcpField
K
kamal

kamal

github.com/el-feoクラウド・DevOps1235 回インストール14 週間前に更新
リポジトリ

kamal について

Kamalは、コンテナ化されたWebアプリをベアメタルのLinuxサーバーへデプロイする、37signalsのCLIです。SSH、Docker、Kamal Proxyを使い、停止を避けるデプロイやロールバック、ログ確認などを行えます。

主な機能

  1. 01SSH経由でコンテナアプリをデプロイ
  2. 02コンテナイメージのビルドとプッシュ
  3. 03Kamal Proxyによるデプロイのルーティング
  4. 04指定バージョンへのロールバック
  5. 05ログ確認とアプリコマンドの実行
  6. 06複数のデプロイ環境を設定

活用シーン

  1. 01LinuxサーバーへのWebアプリのデプロイ
  2. 02stagingなど別環境へのリリース
  3. 03問題のあるリリースのロールバック
  4. 04デプロイ障害の調査でログを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/el-feo/ai-context --skill kamal

インストール後、Claude Code で/kamalを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
commands.md
configuration.md
workflows.md

詳細

Kamal デプロイ

Kamal は、37signals が開発した、コンテナ化されたアプリケーション向けのダウンタイムゼロのデプロイツールです。SSH、Docker、Kamal Proxy を組み合わせて、あらゆるコンテナ化された Web アプリをベアメタルの Linux サーバーにデプロイできます。

主なコンポーネント:SSH/SSHKit(リモート実行)、Docker(コンテナ)、Kamal Proxy(ダウンタイムゼロのルーティング)、Accessories(補助サービス)。

クイックスタート

gem install kamal
cd your-app && kamal init          # Generate config/deploy.yml and .kamal/secrets
# Edit config/deploy.yml and .kamal/secrets
kamal setup                         # Bootstrap servers, install Docker, deploy

最小限の deploy.yml

service: myapp
image: username/myapp

servers:
  web:
    - 192.168.1.10

registry:
  server: ghcr.io
  username: myuser
  password:
    - KAMAL_REGISTRY_PASSWORD

env:
  secret:
    - RAILS_MASTER_KEY
  clear:
    RAILS_ENV: production

proxy:
  ssl: true
  host: example.com

設定オプションの全一覧(レジストリのバリエーション、ビルダー、プロキシ、Accessories、SSH、ボリューム、エイリアス、ヘルスチェック、ロールアウト戦略)については、references/configuration.md を参照してください。

基本的なコマンド

kamal deploy                    # Build, push, deploy with zero downtime
kamal deploy -d staging         # Deploy to specific environment
kamal rollback VERSION          # Rollback to previous version
kamal app logs -f               # Follow application logs
kamal app exec -i --reuse "bin/rails console"  # Interactive console
kamal app maintenance           # Enable maintenance mode
kamal app live                  # Disable maintenance mode
kamal config                    # Show parsed configuration
kamal lock release              # Release stuck deployment lock

すべてのオプションを含むコマンドリファレンスについては、references/commands.md を参照してください。

よくあるワークフロー

データベースのマイグレーションを伴うデプロイ

.kamal/hooks/pre-deploy を作成します:

#!/bin/bash
kamal app exec -p -q "bin/rails db:migrate"

次に、chmod +x .kamal/hooks/pre-deploy && kamal deploy を実行します。

ロールバック
kamal app containers            # List available versions
kamal rollback abc123def        # Rollback to specific version
デプロイ失敗時のデバッグ
  1. kamal app logs -n 500 — アプリケーションのログを確認します
  2. kamal server exec "docker ps -a" — コンテナの状態を確認します
  3. kamal app exec "curl localhost:3000/up" — ヘルスエンドポイントをテストします
  4. kamal config — 設定を確認します
  5. kamal lock release — 固まったロックを解除します
複数の環境

config/deploy.staging.yml を作成し、次を実行します:

kamal setup -d staging && kamal deploy -d staging

詳細なワークフロー(CI/CD、スケーリング、バックアップ、セキュリティ、カナリアデプロイ、監視)については、references/workflows.md を参照してください。

制限事項

  • 状態の整合性調整なし — 設定からサーバーを削除しても、コンテナは削除されません
  • 動的なプロビジョニングなし — サーバーの自動スケーリングやプロビジョニングはできません
  • 単一サーバーでのロードバランシング — Kamal Proxy はサーバーごとにコンテナ間で負荷を分散します。サーバー間で負荷を分散するには、外部の LB を使用してください

コメント