世界を動かす技術を、日本語で。

Show HN: Canine – Kubernetes上に構築されたHerokuの代替品

概要

Canine は、Kubernetesクラスタ用の 直感的なデプロイメントプラットフォームDockerDocker Compose の最新バージョンが必要。 インストール手順 はシンプルで、カスタマイズも可能。 Canine Cloud でチーム機能やGitHub連携など拡張機能を提供。 オープンソース で、コスト削減や運用効率化を実現。

Canine プロジェクト概要

  • Canine は、Kubernetesクラスタ向けの 簡単かつ直感的なデプロイメントプラットフォーム
  • オープンソース プロジェクトで、GitHubリポジトリにて公開
  • HerokuRenderFly.io などのクラウドサービスの高コストを回避可能
  • Hetzner などの低コストVPS環境での運用を容易化
  • Helmチャート による多様なOSSの迅速デプロイに対応
    • 例: PostgresRedisVPNエンドポイントトラッキングサーバー など

必要要件

  • Docker v24.0.0以上 のインストール
  • Docker Compose v2.0.0以上 のインストール

インストール方法

  • 推奨: ワンライナーコマンド による自動インストール

    curl -sSL https://raw.githubusercontent.com/czhu12/canine/refs/heads/main/install/install.sh | bash
    
  • 手動インストール手順

    git clone https://github.com/czhu12/canine.git
    cd canine/install
    docker compose up -d
    
  • Web UIhttp://localhost:3000 でアクセス
  • ポート変更は PORT環境変数 で指定可能
    • 例:PORT=3456 docker compose up -d

Canine Cloud の特徴

  • GitHub連携 によるシームレスなデプロイワークフロー
  • チームコラボレーションロールベースアクセス制御
  • リアルタイムメトリクストラッキング監視機能
  • 運用保守負担の大幅軽減
  • 詳細・価格情報は 公式サイト https://canine.sh を参照

ライセンス・リポジトリ情報

開発者からのメッセージ

  • Heroku 等クラウドサービスの高額コストに悩み、 自作プラットフォーム を開発
  • Hetzner 移行でコスト劇的削減(例:4GBマシンで$4/月)
  • DNS管理SSL証明書管理チーム管理GitHub連携 などの課題をCanineで解決
  • 1年かけて開発 し、Kubernetes初心者にも扱いやすい設計を実現

まとめ

  • Canine は低コスト・高機能なKubernetesデプロイメントを実現
  • OSS として誰でも利用・拡張が可能
  • クラウド版 でチームやCI/CD連携等の追加機能も提供

Hackerたちの意見

これも追加したいな。今まで作ったプロジェクトの中で、これが一番楽しかったよ。全体の「テックスタック」を自分で持つのは、すごく満足感がある。Railsアプリ、Canineインフラ、Raspberry Piサーバー、そして自分のISP。いくつかのプロジェクトでアプリを動かすために、これらのテックスタックをうまく組み合わせたんだ。

野良のPaaSプラットフォームのリストを維持してるよ - https://github.com/debarshibasak/awesome-paas

ああ、これに提出するのを探してたんだ。ありがとう、PRを提出するよ!

dokkuはVPSでも動かせるミニマルなPaaSだよ。dokku-scheduler-kubernetesもあるよ:https://github.com/dokku/dokku-scheduler-kubernetes でも、Helmチャートのサポートはないみたい。クラウドコンピューティングアーキテクチャ > SaaS、DaaS、PaaS、IaaSへのリンク:https://en.wikipedia.org/wiki/Cloud_computing_architecture クラウドコンピューティングの比較:https://en.wikipedia.org/wiki/Cloud-computing_comparison カテゴリー:クラウドプラットフォーム:https://en.wikipedia.org/wiki/Category:Cloud_platforms awesome-selfhostedにはサーバーレス/FaaSカテゴリーがあって、awesome-sysadminにリンクしてるよ > PaaS: https://github.com/awesome-selfhosted/awesome-selfhosted#sof...

すごくクールだね。自己ホスティングのために似たようなことを考えてたけど、DockerとKubernetesの間の何かを探してたんだ。Nomadは良さそうに見えたけど、やっぱり超シンプルなDockerに比べるとちょっと手間がかかるし、エコシステムも不足してる。結局、Dockerを使うことにしたけど、アップグレードの時にダウンタイムが出るのは個人のホームサーバーには問題ないかな。でも、プロダクションサービスの場合、CanineはK8sのどれくらいを本当に抽象化してるんだろう?中を覗く必要があるのかな?K8sの専門家じゃないけど、この二つの間にちょうどいいバランスがないのか気になる。

実は、DockerとKubernetesの間にあるものを作ってるんだ: https://github.com/psviderski/uncloud。あなたと同じように、運用のオーバーヘッドなしでその中間を求めてた。基本的には、DockerっぽいCLIとDocker Composeを使って、マルチマシンと本番機能を持ってるけど、管理するコントロールプレーンはないんだ。まだ開発中だけど、各レイヤーで何が起こっているかを簡単に理解できて、トラブルシューティングもできるようにシンプルさを保つのが目標だよ。

コンセプトが気に入った!K8sは素晴らしい技術だけど、圧倒的な複雑さに悩まされてるね(x86仮想化の初期の頃を思い出す)。君の文献を見てると、K8sをもっと多くのシナリオで活用するために必要な基本をしっかり理解してるみたいだね。特にPVE、Microcloud、Cockpitが自己ホスティングの中で人気になるかもしれないところで。家に余ってるN100 NUCが未完成のMicrocloudインストールで放置されてるから、それを取り外してCanineを試してみようかな!

この複雑さがどこから来てるのか、もうわからないよ。昔はK8sクラスターを作るのに2時間かかるkubesprayを使ってたけど、今はrkeみたいなもので一つのyamlファイルとSSHキーだけで済むからね。

時々、helmがちょっと扱いにくいと感じることがあるんだよね。values.yamlファイルにアップデートを適用すると、どれが適用されるか、どれが起動時に設定する必要があるかが予測できなくなることがあるし。あと、helmのインストールによって大量のサービスがデプロイされることもあって、どれをいつ再起動しても大丈夫か混乱しちゃう。でも、コアのKubernetesはいつも楽しく使えてるよ、特にステートレスなジョブには最高だね。

まず、こういうものが存在して素晴らしくなってほしいから、頑張ってほしい!今のところ、これかDokploy(Docker Swarmは過小評価されてる)を考えてる。ちょっとしたフィードバックだけど、「Canineを使うべきでない理由」のセクションは、実際には僕にとってマイナスだよ。欠点を挙げるのはクールだと思ったけど、皮肉っぽいことを言っててちょっとイライラした。もっと率直に言った方がいいと思うよ。サーバーを購入して管理する必要があるし、ダウンしたら責任を持たなきゃいけないし、これは一人の人間が作った初期の製品だってことを。

両方のポイントに100%同意!

ハハ、他のランディングページと違うことをしようとしたのに、また失敗しちゃった。もう一度挑戦するけど、フィードバックありがとう!

ちょっと指摘。KubernetesはDockerコンテナを動かしてるわけじゃないよ。Open Container Initiative (OCI) に準拠したコンテナを動かしてるんだ。Dockerはライセンスされたブランド名だよ。

もう一つ気になる点があるんだけど: 「10,000サーバー」って書いてあるけど、Kubernetesは実際には最大5,000ノードまでのサポートを主張してるんだよね。 大きなクラスターはたくさん存在するけど、通常はかなりの調整が必要(APIレジストリを完全に置き換えるなど)。もちろん、特定のワークロードも大きな役割を果たすし。Kubernetesは実際には、すぐに大きなクラスターをサポートするところまで行ってないけど、ほとんどのリリースにはその方向に向けた作業が含まれてるよ。

そうそう、Dockerが必要って見るとイライラする。最近はDockerは使わずに、ほとんどPodmanとcontainerdだけでやってる。

まず第一に、自分のサーバーで「Herokuっぽい」体験を求めてるから、ありがとう!これ、いい感じだね!それに、K8sの仕組みについてのドキュメントもすごく良さそうで、今まで見た中で一番親しみやすいかも。 質問なんだけど、ピッチを読んだとき、Digital Oceanみたいなところで管理されたK8sを立ち上げて、これを使えると思ってたんだけど、ドキュメントやコメントを読んでみると、これが自分のK8sを管理する必要があるみたい? 私の質問は、

  1. Hetznerで「クラスター」を立ち上げると、それは単一のマシンを分割するだけなのか、それとも複数のマシンにまたがる本当のK8sクラスターなのか?
  2. 別のサーバーでこのインストールスクリプトを実行すると、クラスターに参加して、ポッドをホストするための本当の分散サーバーが得られるのか?
  3. 既存の管理されたK8sにCanineをデプロイする方法はあるの?

現状では、2つのオプションをサポートしてる感じだね:

  1. 単一のHetzner VPS
  2. 既存のKubernetesクラスター 私は通常、#1をステージングや開発アプリに使って、#2を本番アプリに使ってる。#2の場合、Digital Ocean側でノードの数を管理して、Kubernetesが自動的にワークロードを再スケジュールしてくれる(オートスケーリングもオンにできる)。 あなたが言ってることは、CanineがHetzner内で直接マルチノードクラスターを作成することがサポートされてないってことだと思う。HetznerからKubernetesクラスターを作成するためのTerraformはあるけど、今はCanineにはインストールされてない。試してみるのは悪くないと思うけど、まずはUIの改善を試したいな。今のところ、Canineはクラスターが準備できてることを前提にしてるか、K3sのインストールを手伝ってくれる感じだね。

https://stacktape.comでは、同じような分野でやってるよ。自分のAWSアカウントの上にHerokuっぽい体験を提供してる。あなたのやってること、いいと思う!でも、正直言って、厳しい市場だよね。 $265対$4の約束は一見すると簡単に思えるけど、リンゴとオレンジを比べてる感じだよ。

  • あなたのDXはおそらくHerokuのものとはかなり違うと思う。彼らの開発者体験は、何十万もの開発者によって洗練されてるから。すべてを考慮するのは難しいし、シンプルなユースケースを超えると、近づくことすら難しいと思う。
  • 「単一のVM」構成は、本当に本番向けとは言えない。信頼性やスケーラビリティ、冗長性、他にも多くの機能が欠けてる。低トラフィックのサイドプロジェクトには確かに機能するけど、実際に予算があって支払う意志のある人や団体は、通常は別のソリューションを探してる。とはいえ、あなたに幸運を祈るよ。AI生成アプリの時代に何かが変わるかもしれないし。

うん、同意するよ。でも、それがKubernetesが働くにはいい場所だと思う理由かもね。すでに大規模なAPIがあって、かなり大きなエコシステムがあるから、基本的にはkubectlの開発者体験はかなり良いと思う。K8も大規模なクラスターにスケールするのが結構簡単で、耐障害性も良いし、あまり問題も起きないよね。

ねえ、競合に建設的なフィードバックをするなら、最初に宣伝するのはやめた方がいいんじゃない?

スクリーンショットにあるGoogle Sheetsのバックエンドって、私が思ってる通りのものなのかな?シートAPIをデータベースとして使ってるってこと?そうなら、すごいね。https://holos.run の元々のアイデアは、k8sのためにHerokuみたいな体験を作ることだったから、こういうのが実際に存在するのを見るとめっちゃ嬉しい。統合を探求したいな、クラスタAPIを使ってシングルまたはマルチノードのクラスターを立ち上げる可能性もあるし。

ハハ、まさにその通りだね、https://google-sheets-backend.canine.sh/ こんなのをコードで作るのがどれくらい簡単か気になってたけど、実際はめっちゃ簡単だった!

アドオンってどうやって機能するの?ただの事前に作られたDockerfileなの?それとももっと何かあるのかな?もし特別なことがあれば、mariadbをリクエストしたいな。