**未公開。**マネージドアプリケーションはまだ利用できません。これらのページは、構築中の仕組みを公開前に説明したもので、公開までに変わることがあります。
マネージドアプリケーションは、プロジェクトがカタログからインストールするアプリケーションです。最初のアプリケーションは Rivet です。インストールは、プロジェクトがすでに持っているもので構成されます。サービスにはキューブのアプリ、そのディスクにはボリューム、生成するものにはシークレット、オブジェクトストレージに保持するものにはバケットを使います。それぞれにインストールのラベルが付き、インストールを通じてのみ変更され、ほかのリソースと同じくキューブの計測項目で課金されます。アプリケーション独自の料金はありません。
マネージドアプリケーションを使う場面
- 自分では運用したくないオープンソースのサービス:バージョン、設定、ディスクの面倒を見てもらえ、キューブと同じく、何も要求がないときはスリープします。
- 環境、顧客、エージェントごとに 1 つ:1 回の呼び出しでインストールし、1 回の呼び出しで構成するものごと削除できます。
- インストール前に料金を知る:各アプリケーションの料金計算ツールで、1 か月分がキューブの計測項目でどれだけになるかがわかります。
仕組み
- 選ぶ。
GET /v1/catalogueはアプリケーションを一覧表示し、GET /v1/catalogue/{app}は 1 つのアプリケーションを表示します。バージョン、インストールが受け付けるパラメーター(JSON Schema)、返す出力値、そして料金計算ツールのデフォルト値で 1 か月分がキューブの計測項目でどれだけになるかです。 - **インストール。**アプリケーションの名前とパラメーターを付けた
POST /v1/installationsで、すべての部分が作られ、アプリが立ち上がってアプリケーションがそれらを引き受けるまで(最大 150 秒)待ち、出力値(アドレスと、アクセスに使うもの)が返されます。 - **利用。**アプリとサンドボックスは、そのアドレスで、またはプロジェクトのプライベートネットワーク上でアプリの名前でアクセスします。
- 削除。
DELETE /v1/installations/{id}は、すべての部分を削除します。アプリ、ボリュームとその中身、シークレット、バケットとその中身です。
POST /v1/installations
{"app": "rivet", "parameters": {"disk_gib": 20}}呼び出し一覧
| 呼び出し | 内容 |
|---|---|
GET /v1/catalogue, GET /v1/catalogue/{app} |
カタログのアプリケーションの一覧(それぞれ最新バージョン)。1 つのアプリケーション(最新バージョン、または ?version= で指定したもの)と、公開時の定義 |
POST /v1/installations |
アプリケーションをインストール(201)。または、同じ作成で作られたインストールを返す(200) |
GET /v1/installations, GET /v1/installations/{id} |
プロジェクトのインストールの一覧(新しい順。?app= で 1 つのアプリケーションのものに絞り込み)。ID(ins-…)か名前で指定した 1 つのインストール |
PATCH /v1/installations/{id} |
バージョンかパラメーターを変更 |
DELETE /v1/installations/{id} |
構成するものごと削除 |
/v1/managed/{app}/… |
アプリケーション独自の API(ある場合)。プラットフォームが代わりに応答する(Rivet の場合) |
インストール、変更、削除には write スコープを持つキーが、読み取りには read が必要です。コンソールにもあります。Applications の下の Managed Applications(マネージドアプリケーション)では、プロジェクトのインストールとカタログを一覧表示し、パラメーターから作られるフォームでアプリケーションをインストールし、インストールの表示と削除ができます。CLI(glac install rivet)、SDK、MCP サーバーでも同じことができます。
インストール
app 以外のフィールドは省略できます。
| フィールド | 説明 |
|---|---|
app |
カタログでのアプリケーションの名前 |
name |
プロジェクト内でのインストールの名前:英小文字、数字、ハイフンで最大 24 文字、先頭は英字、末尾にハイフンは不可、ハイフンの連続も不可。指定しなければアプリケーションの名前。アプリはこの名前にちなんで <name>-<service> と名付けられ、プロジェクトのアプリが使っている名前は拒否される |
version |
アプリケーションのバージョン。指定しなければ最新。取り下げられたバージョンは拒否される(409 version_withdrawn) |
region |
na、eu、ap のいずれか。指定しなければプロジェクトのホームリージョン |
parameters |
アプリケーションのパラメーターのスキーマが受け付けるもの。省略したものはデフォルト値になる。スキーマに合わない値は拒否され(400 invalid_parameter)、param にそのパスが入る(parameters.size.vcpus) |
requires |
別のアプリケーション(たとえばデータベース)を必要とするアプリケーションの場合:そのために使うプロジェクトのインストールを、要件ごとに指定({"db": "shop-db"})。指定しなかったものは一緒に <name>-<requirement> としてインストールされ、一緒に削除される |
作成は、すべての部分を作り、アプリと、アプリが立ち上がった後にアプリケーション自体が果たす役割がある場合はそれも待ちます(Rivet はランナーのデフォルトのプールを作ります:Rivet)。最大 150 秒で、インストールを ready で返します。最初の起動が続いている場合は installing で返すので、ready になるまで GET してください。作れない部分があると作成は失敗し、作ったものは取り除かれます。作成は名前によって冪等です。プロジェクトのインストールの名前を指定した作成は、指定内容が同じならそのインストールを返し(200)、違えば拒否されます(409 name_taken)。
インストールが持つもの
| フィールド | 説明 |
|---|---|
id, name, app, version, region |
ins-…。作成時、または変更時のとおり |
status |
installing、ready、updating、failed(failure が理由を示す。アプリ、ボリューム、バケットは削除するまで残る)、deleting、deleted |
parameters |
すべてのパラメーター。指定したものと、残りのデフォルト値。秘密のパラメーターは、admin スコープのないキーには null |
outputs, secret_outputs |
提供するもの:アドレスと、アクセスに使うもの。秘密の出力値(secret_outputs で示される)は作成のレスポンスに含まれ、その後は admin スコープを持つキー(またはコンソール)が読めば含まれる。それ以外には null |
apps, volumes, buckets |
構成するもの:サービスごとのアプリ(キューブのもの)、<service>/<volume> で示すボリューム(ドライブ)、そしてバケット(それぞれ、最後に計測した時点(5 分ごと)のオブジェクト数とバイト数、ibk-… の ID 付き) |
requires, required_by |
必要とするインストール。それぞれ、紐付けたもの(bound)か、一緒にインストールしたもの。このインストールを要件としてインストールした側のインストール(それと一緒に削除される) |
api |
アプリケーション独自の API のベース(ある場合) |
created_at, updated_at, deleted_at |
日時 |
インストールの構成
インストールのアプリとドライブはプロジェクトのものです。GET /v1/apps と GET /v1/drives はそれらを、インストールを示す managed_by({"object": "installation", "id": "ins-…"})とともに一覧表示し、ログ、メトリクス、スナップショットはほかと同じように読めます。各アプリは metadata にインストールの情報(installation_id と、アプリケーションの名前である installation_app)を持ちます。インストールが生成するもの(アプリケーションの管理者トークン、バケットのキー)は、プロジェクトのシークレットで、INS_<ID>_<SERVICE>_<NAME> という名前です。変更できるのはインストールだけです。アプリの更新、デプロイ、ロールバック、削除、ドライブの名前の変更、復元、削除、ほかの場所での読み書き可能なマウント、インスタンスの削除と変更、シークレットの変更は拒否されます(409 managed_by_installation)。
バケットはプラットフォーム自身のオブジェクトストアの、プラットフォームがプロジェクトのために用意するバケットの中に、それぞれ専用の接頭辞(<installation id>/<bucket>/)の下で保持され、その接頭辞にしか到達できないキーが付きます。アプリケーションに渡されるのは、バケットのアドレス、接頭辞、キーだけです。バケットは、インストールのリージョンにプラットフォームのオブジェクトストアがあればそこに、なければそれがある最初のリージョン(北米、ヨーロッパ、アジア太平洋の順)に保持されます。
インストールに限定されたキー
installation を指定して作ったキー(POST /v1/keys {"installation": "rivet", "scopes": ["read", "write"]})が到達できるのは、そのインストールだけです。インストールの読み取り、そのアプリとその下にあるもの、ドライブ、アプリのインスタンスです。それ以外は拒否され(403 installation_key_scope)、このようなキーが admin スコープを持つことはありません(400 invalid_field)。インストールが削除されると無効になります。インストールの面倒を見るプログラムで、プロジェクトのほかのものに触れるべきでないものに渡してください。
料金
インストールは、構成するものとして、キューブの料金で課金されます。アプリのインスタンスは CPU 時間とメモリで、ボリュームとバケットはボリュームのデータとして、インターネットへのトラフィックとリクエスト、ログも課金されます。バケットが保持する量は 5 分ごとに計測され、各バケットの ibk-… の ID の下で、ボリュームのデータとして 1 時間ごとに計上されます。アプリケーション独自の計測項目や料金はありません。
GET /v1/usage?group_by=metadata.installation_id は、インスタンスの使用量をインストールごとにまとめ、GET /v1/usage?kind=volume&group_by=volume は、ボリュームとバケットを ID ごとに一覧表示します。アプリケーションの料金計算ツール(GET /v1/catalogue/{app} の calculator)は、示した入力値で 1 か月分がそれらの計測項目でどれだけになるかを示します。month は、デフォルト値での各計測項目の量です。
変更
別の version か、マージパッチとしての parameters を付けた PATCH /v1/installations/{id} で変更します。指定したものが変わり、null でデフォルトに戻り、残りはそのままです。各アプリで変わったものは新しいバージョンとしてデプロイされ、作成と同じように完了を待ち、その間インストールは updating になります。ボリュームのサイズは作成後は変えられません(409 volume_size_fixed)。
削除
DELETE /v1/installations/{id} は、アプリ、ドライブとその中身、シークレット、バケットとその中身を削除し、インストールに限定されたキーを無効にします。要件としてこのインストールのためにインストールされたものは一緒に削除され、紐付けたものは残ります。別のインストールが必要としているインストールは拒否されます(409 required_by_installation)。先にそちらを削除してください。レスポンスは deleted のインストールで、残りの処理に時間がかかる場合は deleting となり、プラットフォームがそれを完了させます。名前は、インストールがなくなった時点で解放されます。元に戻すことはできません。
イベント
installation.created、installation.ready(作成後または変更後)、installation.failed(failure 付き)、installation.updated、installation.deleted は、それぞれインストールの ID とともに、ほかのイベントと同じくプロジェクトの Webhook と GET /v1/events に届きます。
次のステップ
- Rivet:AI エージェントとリアルタイムアプリのための永続的なアクター。カタログの最初のアプリケーションです。