DHH氏によるコンテナデプロイ自動化ツール「Kamal 1.0」正式リリース。ベアメタルや仮想マシンに自動デプロイ、ゼロダウンタイムのアプリ更新も可能

今回は「DHH氏によるコンテナデプロイ自動化ツール「Kamal 1.0」正式リリース。ベアメタルや仮想マシンに自動デプロイ、ゼロダウンタイムのアプリ更新も可能」についてご紹介します。

関連ワード (動作、生成、自動等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


Ruby on Railsの作者として知られるDavid Heinemeier Hasson(DHH)氏は、Dockerコンテナに対応したアプリケーションのデプロイ自動化ツール「Kamal 1.0」をリリースしました。

Kamalはアプリケーション(群)の構成とデプロイ先のサーバ(群)のIPアドレスなどの基本的な情報を設定すると、あとは仮想マシンやベアメタルサーバ、クラウドのサーバインスタンスなどにDocker環境の構築からアプリのデプロイ、トラフィックの切り替えまでを自動的に行ってくれる、デプロイ自動化ツールです。

fig

Kamal 1.0 has shipped. Deploy your web apps anywhere from bare metal to cloud VMs with zero-downtime, rolling restarts, asset bridging, and more. No advanced degree in container orchestration needed. https://t.co/ILkHFgfb48 pic.twitter.com/hNa1ufhx9z

— DHH (@dhh) September 19, 2023

Docker環境も自動構築、アプリを自動デプロイ

Kamalの実行に必要なのは、デプロイの対象となるアプリケーション群のDockerfileとデプロイ先のサーバ群、そしてKamalの設定ファイルです。

Kamalの設定ファイルに、アプリケーションのデプロイ先となるサーバのIPアドレス、Dockerfileの情報、アプリケーションの動作に必要なシークレットの情報(環境変数名など)、データベースをデプロイする際のデータベーススキーマを設定するSQLファイルの情報などを書き込みます。

Kamalによるデプロイを実行すると、デプロイ先のサーバにSSHで接続し、Docker環境がインストールされていなければ自動的にDocker環境を構築してくれます。

続いてDockerfileを用いてアプリケーションのビルドを実行し、生成されたコンテナイメージをレジストリにプッシュ、デプロイ先のサーバからコンテナイメージをプルしてアプリケーションをデプロイ、シークレット情報などをセットしてアプリケーションを起動します。

動的リバースプロキシであるTraefikを利用してアプリケーションのリクエストによる動作確認をし、OKであればアプリケーションが外部とのやりとりを開始します。

ゼロダウンタイムでのアップデートも実現

Traefikは、アプリケーションの新バージョンをデプロイする場合には、古いバージョンのアプリとのトラフィックの切り替えも行います。

新しいバージョンのアプリケーションへトラフィックが切り替わった後、古いバージョンのコンテナイメージは自動的に破棄されます。

このようにKamalはさまざまなサーバ環境に対して簡単かつ自動的にアプリケーションをデプロイ可能なだけでなく、ゼロダウンタイムでのアプリケーションのアップデートも可能にしてくれます。

Kamalの公式サイトでは、Kamalの特長が次のように説明されています。

Kamal offers zero-downtime deploys, rolling restarts, asset bridging, remote builds, accessory service management, and everything else you need to deploy and manage your web app in production with Docker. Originally built for Rails apps, Kamal will work with any type of web app that can be containerized.

Kamalは、ゼロダウンタイムでのデプロイ、ローリング再起動、アセットブリッジング、リモートビルド、アクセサリサービス管理など、Dockerを使った本番環境におけるWebアプリケーションのデプロイと管理に必要なすべてを提供します。Kamalは元々Railsアプリケーション用に開発されましたが、コンテナ化可能なあらゆるタイプのWebアプリに対応しています。

Kubernetesと比べてシンプルなDocker環境を実現するKamal

DHH氏らしく、kamalはRubyで開発されています。開発当初は「MRSK」という名称でしたが、最近になってKamalという名称に変わりました。

Kamalの名称は、古代のアラブ人水夫が北極星を基に航路を確認するために用いた、木片とそこから伸びる結び目の付いたロープというシンプルな道具にちなんだと説明されています。

この名称変更は、高度に複雑化したコンテナ環境を実現し、ギリシャ語で水先案内人という意味を持つKubernetesと、シンプルで自動化されたDocker環境を実現するKamalとの対比を強く意識した結果なのだと思われます。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
日立製作所、製造業向けDXサービス群/クラウド基盤を体系化
IT関連
2023-09-06 21:59
SNS誹謗中傷を発見→啓発広告をリアルタイム配信 新組織「この指とめよう」設立
ネットトピック
2021-05-27 10:45
オーディオメーカーSennheiserがコンシューマー事業を売却、聴覚医療器具大手のSonovaに移譲
ハードウェア
2021-05-09 21:23
NetflixとBEAMSがコラボ ロゴやオリジナルアニメ「エデン」のTシャツなど発売
くらテク
2021-05-27 00:00
グーグルが総額2億2000万円の黒人ファウンダー基金を欧州のスタートアップ30社に分配
VC / エンジェル
2021-06-16 20:52
現場監督の業務を効率化する建設現場管理・図面共有アプリ「SPIDERPLUS」が4万ユーザーを突破
ソフトウェア
2021-05-14 12:56
「シン・エヴァ」冒頭のYouTube公開、3日前から500人が待機中 「座席を指定してスイッチ」
くらテク
2021-03-05 21:27
IBMから分社化したキンドリル、AWSと戦略的契約–クラウド導入を加速へ
IT関連
2022-02-26 12:53
ガン治療の改良からミツバチの保護、髪に似た植物由来の繊維までIndieBio最新クラスの参加企業を紹介
バイオテック
2021-03-19 23:36
ポケモンGOで「ヤドン祭」始まる “ガラルヤドラン”への進化はちょっと特殊
くらテク
2021-06-10 15:17
2月のイベントに向けてサムスンがGalaxy SとNoteの融合を予告
IT関連
2022-01-22 06:49
ラックとヴイエムウェア、仮想環境への不正通信に対応するセキュリティサービスを開始
IT関連
2022-01-19 11:16
政府発行のIDカードなど560種類以上の書類に対応、インドの書類発行・認証アプリ「DigiLocker」のユーザー数が1億人を突破
IT関連
2022-03-20 03:47
緊急事態宣言 大企業中心にテレワーク強化 地域差など課題
IT関連
2021-01-23 23:41