Repolode
sablierapp

sablierapp/sablier

リクエストに応じてコンテナなどのワークロードを起動し、一定時間アクセスがなければ停止します。リバースプロキシとも連携します。

スター
3,114
フォーク
106
未解決の Issue
68
最終コミット
21 時間前

これは何?

Sablierはセルフホスト型サーバーです。リクエストが届くと休止中のワークロードを起動し、設定した時間アクセスがなければ停止します。プロバイダーとしてDocker、Docker Swarm、Podman、Kubernetes、Proxmox LXC、systemdに対応しているため、さまざまなコンテナランタイムやホストで同じ方法を利用できます。

通常、SablierはTraefik、Caddy、Nginx、Envoy、Apache APISIX、Istio向けのリバースプロキシプラグインと組み合わせて使います。プラグインは受信リクエストを横取りし、Sablier APIを呼び出して対象サービスを起動してから、準備が整うまで待機ページを表示します。セッションには、接続を維持して待つブロッキング方式と、テーマを適用したローディングページを表示する動的方式を指定できます。

ワークロードの停止に加えて、スケールモードでは停止する代わりにCPU、メモリ、ブロックI/Oを制限できます。また、アンチアフィニティによって、あるグループが別のグループにリソースを譲るように設定できます。さらに、起動・停止イベントのWebhook、Prometheusメトリクス、OpenTelemetryトレースにも対応しています。

主な機能

  • 01Docker、Swarm、Podman、Kubernetes、Proxmox LXC、systemdのワークロードを、必要に応じて起動・停止します。
  • 02プロキシプラグインを通じてTraefik、Caddy、Nginx、Envoy、Apache APISIX、Istioと連携します。
  • 03ワークロードの起動を待つ間、カスタマイズ可能なテーマ付き待機ページを表示します。
  • 04スケールモードでは、コンテナを停止する代わりにアイドル時のCPUとメモリを制限します。
  • 05インスタンスの起動・停止時にWebhook通知を送信します。
  • 06PrometheusメトリクスとOpenTelemetryトレースを公開します。

ユースケース

  • Raspberry Piでサービスを運用し、利用頻度の低いアプリはアクセスされるまで停止しておく。
  • たまにしか使わないQA環境やステージング環境がリソースを消費し続けるのを防ぐ。
  • アイドル状態のKubernetesデプロイメントをゼロにスケールし、クラウドコストを削減する。
  • GPUを多用するサービスが、使用中の別のサービスにメモリを譲れるようにする。

クイックスタート

  1. 1

    Docker で Sablier サーバーを実行する(README から compose.yaml をコピー)

    docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker
  2. 2

    Sablier のラベルを付けたデモコンテナを起動する

    docker run -d --health-cmd "/mimic healthcheck" -p 8080:80 --name mimic --label sablier.enable=true --label sablier.group=demo sablierapp/mimic:v0.3.3 -running -running-after=5s -healthy=true -healthy-after=5s
  3. 3

    Sablier API を通じてデモグループのセッションをリクエストする

    curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s

使う前に知っておきたいこと

  • ワークロードを管理するには、Docker socket、Kubernetes API、Podman、または Proxmox の環境が必要です。
  • 確実にゼロまでスケールダウンするには、コンテナに healthcheck を定義する必要があります。
  • ネットワーク利用に関する義務を伴うコピーレフトライセンス、AGPL-3.0 の下でライセンスされています。

収録されている特集

トピック

よくある質問

sablier とは?
リクエストに応じてコンテナなどのワークロードを起動し、一定時間アクセスがなければ停止します。リバースプロキシとも連携します。 Sablierはセルフホスト型サーバーです。リクエストが届くと休止中のワークロードを起動し、設定した時間アクセスがなければ停止します。プロバイダーとしてDocker、Docker Swarm、Podman、Kubernetes、Proxmox LXC、systemdに対応しているため、さまざまなコンテナランタイムやホストで同じ方法を利用できます。
sablier は無料で使えますか?ライセンスは?
sablier は AGPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
sablier は今もメンテナンスされていますか?
活発にメンテナンス中。sablier の最終コミットは 2026年11月6日 です。
sablier は何に使えますか?
Raspberry Piでサービスを運用し、利用頻度の低いアプリはアクセスされるまで停止しておく。 たまにしか使わないQA環境やステージング環境がリソースを消費し続けるのを防ぐ。 アイドル状態のKubernetesデプロイメントをゼロにスケールし、クラウドコストを削減する。 GPUを多用するサービスが、使用中の別のサービスにメモリを譲れるようにする。
sablier のインストール方法は?
Docker で Sablier サーバーを実行する(README から compose.yaml をコピー): docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker Sablier のラベルを付けたデモコンテナを起動する: docker run -d --health-cmd "/mimic healthcheck" -p 8080:80 --name mimic --label sablier.enable=true --label sablier.group=demo sablierapp/mimic:v0.3.3 -running -running-after=5s -healthy=true -healthy-after=5s Sablier API を通じてデモグループのセッションをリクエストする: curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s
sablier はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/sablierapp/sablier

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト