自分のマシンで runlot を動かす
同じプロダクトを、自社のサーバーまたは Kubernetes クラスターで、自分の PostgreSQL・オブジェクトストア・ライセンスファイルとともに動かせます。データが外に出ることはありません。
セルフホストの runlot は、runlot.io で使うプロダクトそのものを、お好きな場所にインストールして使う形態です。コントロールプレーン・データノード・Git ホスティング・ダッシュボードは、お持ちのマシンで動きます。メタデータは自分で運用する PostgreSQL に置き、バックアップとファイルは自分で運用する S3 互換ストアに保存します。私たちが提供するのは、署名付きのライセンスファイルだけです。
どのインストールにも当てはまる 3 つの事実があります。ほかの内容より先にお読みください。
マスターキーはお客様が保持し、私たちはコピーを持ちません
openssl rand -hex 32すべてのバックアップは、この値から導出したキーで暗号化されます。インストーラーは設定からこの値を読み取り、キーの生成を行いません。値を失うとすべてのバックアップが読み取れなくなり、私たちにできることはありません。ほかのルートシークレットと同じ場所に、マシンが失われても残る形で保管してください。
この拒否は意図したものです。再生成できるキーは、私たちが保持できるキーでもあります。そうなると、「データが外に出ることはありません」という言葉は私たちに対しても成り立たなくなります。
ライセンスはファイルで、オフラインで検証されます
ライセンスは、私たちがオフラインで保管するキーで署名された 1 行のテキストです。コントロールプレーンは 1 分ごとに再読み込みします。ライセンスサーバーも、アクティベーションの呼び出しも、テレメトリーもありません。プロダクトから私たちへネットワークリクエストが送られることはありません。
| 状態 | 変わること |
|---|---|
| valid | なし。 |
| grace | ダッシュボードにバナーが表示されます。有効期限の日から 30 日間は、すべて通常どおり動作します。 |
| restricted | 新規デプロイ・新規プロジェクト・新規サインアップは license_* エラーで拒否されます。すでに動作中のものは引き続き処理を続けます。 ファイルを差し替えれば、再起動なしで 1 分以内に制限が解除されます。 |
ライセンスの期限が切れても、動作中のアプリが止まることはありません。この状態表は、そのルールを軸に作られています。
3 つの構成
| ティア | マシン | 何がどこで動くか |
|---|---|---|
eval | 1 | すべてを 1 台のホストに置き、PostgreSQL と MinIO はメタパッケージから導入します。お試し用で、本番環境には向きません。 |
single | 2 | コントロールプレーン 1 台とデータノード 1 台です。PostgreSQL と S3 はお客様側で用意します。データノード 1 台で最大 64 個のプロジェクトを保持できます。 |
ha | 4 台以上 | コントロールプレーン 1 台と N+1 台のデータノードです。ノードを失ってもそのプロジェクトの移行先があります。 |
データノードを VM のままにして、コントロールプレーンだけを Helm chart で Kubernetes 上で動かすこともできます。データノードはあえて通常のマシンにしています。プロジェクトごとに 1 つのプロセスを専用の cgroup で動かし、そのために必要な権限は Pod よりも VM のほうが付与しやすいためです。