- Uncloudは、Kubernetesなしでも複数のサーバーにコンテナ化されたWebアプリケーションをデプロイしてスケールできるオープンソースツール
- Docker Composeベースのワークフローを維持しながら、無停止デプロイ・自動HTTPS・サーバー間スケーリングをサポート
- 中央コントロールプレーンなしで、各マシンがWireGuardベースのP2Pネットワークで接続され、一部のサーバーがオフラインでもクラスター運用を維持
- Caddyリバースプロキシによる自動HTTPS、組み込みDNSベースのサービスディスカバリー、ロードバランシング機能を含む
- クラウド・オンプレミス混在環境でも同じ方法でデプロイでき、インフラの制御権とコスト予測性を確保
PaaSライクなワークフロー
- HerokuやFly.ioのようなシンプルなデプロイ体験を提供しつつ、サーバーとデータに対する完全な制御権を維持
- リクエスト単位課金ではない予測可能なコスト構造
- ベンダーロックインなし、標準的なSSHツールでデバッグ可能
- Docker Composeに親和的な構成で、ビルド・プッシュ・デプロイを1つのコマンドで実行
- イメージレジストリ不要、無停止ローリングデプロイをサポート
- 複数マシンにまたがるレプリカスケーリングが可能
低メンテナンス設計
- コントロールプレーンやクォーラム管理が不要で、運用の複雑さを最小化
- ポート開放なしで安全なマシン間通信をサポート
- 自動サービスディスカバリーとLet's EncryptベースのHTTPS自動発行機能を内蔵
動作の仕組み
- 複雑なクラスターの代わりにシンプルなマシンネットワークで構成し、保守負担を抑えつつ安定したインフラを提供
- 各マシンはWireGuardメッシュネットワークに参加し、自動ピア検出とNATトラバーサルを実行
- コンテナは固有のIPを受け取り、サーバー間で直接通信可能
- 完全分散型アーキテクチャにより、中央制御ノードなしで各マシンがクラスター状態を同期
- DockerライクなCLIでインフラ全体を制御
- 単一マシンへのSSHアクセスだけでデプロイ・監視・スケーリングを実行可能
主な機能
- どこにでもデプロイ可能: クラウドVM、専用サーバー、オンプレミスなど、あらゆるLinuxマシンをサポート
- 自動HTTPS: 組み込みのCaddyリバースプロキシにより、設定不要でTLS証明書を発行しHTTPSを有効化
- ロードバランシング: 複数マシンに分散したコンテナレプリカ間でトラフィックを分配
- サービスディスカバリー: 組み込みDNSがネットワーク内のサービス位置を自動追跡
- Infrastructure as Code: 既存のDocker Composeファイルでアプリスタック全体を定義可能
- ベンダーロックインなし: クラウドと自社ハードウェアを自由に組み合わせて利用可能
1件のコメント
Hacker Newsのコメント
こんにちは、作者です。共有ありがとうございます。
Uncloud はコントロールプレーンのないコンテナオーケストレーターです。簡単に言うと、自動 WireGuard メッシュ、サービスディスカバリー、Caddy による HTTPS が付いた、複数マシンにまたがる Docker Compose のようなものです。各マシンは Fly.io の Corrosion を使ってクラスター状態を p2p 同期するため、クォーラムを維持する必要がありません。
スタートアップとユニコーン企業の両方で Kubernetes を運用してきた経験から、ほとんどのチームが実際に必要としているのは、数台のマシンでコンテナをうまく動かし、ネットワーキング、ロールアウト、HTTPS を備えることだけだと気づきました。それに比べて K8s の運用オーバーヘッドは大きすぎます。
主な特徴は次のとおりです。
プロジェクトリンク: https://github.com/psviderski/uncloud
uc machine initが内部で root 権限のcurl | bashを実行する方式は セキュリティ上危険に見えます。試してみたい気持ちはありますが、実マシンでは動かさないと思います。私はキャリアの大半を Kubernetes と共に過ごしてきましたが、コントロールプレーンのない構成の利点が気になります。私にとっては、コントロールプレーンこそが K8s の中核機能です。
数百ノード、1万前後のコンテナ程度なら、マネージドクラスターで自動更新されるため大きな負担ではありません。人々が自分で K8s を セルフホストして苦労していることが、こうした代替の背景なのか気になります。
ネットワークが分断されても、各パーティションは独立して動作できます。昔の Chef や Ansible の時代の単純さに、K8s から得た教訓を加えたようなものです。
すばらしいプロジェクトです。いずれぜひ使ってみたいです。
よりシンプルな代替を探しているなら、Kamal もよいと思います。これは K8s やクラウドから完全に離れた企業が自ら運用しており、本番で実証済みのツールです。
サーバーを指定したときに セキュリティ強化(server hardening) を自動で行う機能があるのか気になります。
私は Docker Swarm ユーザーです。Uncloud は久しぶりに興味を引かれた代替です。
気になる点は次のとおりです。
x-ports: app.example.com:8000/httpsとして定義します。または
x-caddy: Caddyfileで Caddy 設定をカスタマイズできます。詳しくは 公式ドキュメント を参照してください。現時点ではスタック間のネットワーク 分離機能はありません。関連議論は GitHub Discussion #94 で進んでいます。
どのような動作を期待しているのか気になります。
2、3 番目の質問への答えは「まだできない」と「現時点では可能」です。関連議論は Discussion #94 を参照してください。
Swarm を使ってきた立場から、Swarm の不足や不便さのうち、Uncloud が改善できそうな点は何か気になります。
本当にすばらしいプロジェクトです。似たテーマの他のツールも参考になります。
ほかにも知っていれば追加してほしいです。
最近 Coolify を試しましたが、やや 未完成な印象でした。今は Dokku を使っていますが、DB 管理用 UI がもっと良くなってほしいです。
私は k3s に満足していますが、Docker Compose と完全な K8s の間の 中間地帯で新しい試みが出てくるのは歓迎です。特に WireGuard 統合が興味深いです。
とてもすばらしいツールです。尽力に感謝します。
バックエンドの 状態レプリケーション(state replication) がどのように動作するのか気になります。CRDT と gossip プロトコルに言及していますが、具体的な実装はやや曖昧です。
K8s でないなら、なぜ Nomad ではないのでしょうか。
つまり、セルフホスト以外での活用は制限されており、実質的に 自由なサービス提供が不可能です。ライセンス全文 を参照してください。
参考までに、興味深い p2p コンポーネントを 2 つ共有します。