Créer un cluster Rivet
Lisez l'app, recommandez un setup, attendez l'approbation de l'utilisateur, puis créez le cluster. Chaque appel ci-dessous s'exécute comme du JavaScript en Code Mode via l'outil execute.
1. Estimer la charge de travail
Lisez la base de code : quels Rivet Actors elle définit ou dont elle a besoin, combien s'exécutent simultanément, combien d'état et de SQLite chacun conserve, à quel point c'est gourmand en écritures, et si c'est un prototype ou destiné à la production. Quand il n'y a pas encore d'app, dimensionnez pour un prototype. La documentation est à https://rivet.dev/docs.
2. Lire les options
const [pricing, regions] = await Promise.all([
rivet.cloud.v2.plans.get(),
rivet.cloud.v2.regions.available(),
]);
return { pricing, regions: regions.items };
Prenez chaque prix et limite de cette réponse. Ne citez jamais l'un de mémoire. Consultez references/plans.md pour comprendre ce que chaque champ signifie et comment les peser.
regionsliste chaquecloudetregionoù un cluster peut être créé, avec sa ville.pricing.plansest trié du moins cher au plus cher. Chaque plan est vendu dans lescontrol_planesqu'il liste, du moins cher au plus cher, et limite les runners avecrunners.pricing.machine_typesdonne le vCPU, la mémoire, le disque et le débit d'écriture de chaque type de machine.pricing.node_pricesdonne le prix mensuel d'un nœud runner parcloudetmachine_type.pricing.allowancesdonne l'egress et le stockage que chaque cluster inclut, et le prix pour dépasser ces limites.
3. Recommander un setup
Recommandez une valeur pour chaque paramètre, chacune avec une raison d'une ligne, et le coût mensuel total. Préférez le setup le moins cher qui convient.
- Name (
cluster) : lettres minuscules, chiffres et tirets, au maximum 63 caractères, ne commençant ni finissant par un tiret. Basez-le sur le nom de l'app. cloudetregion: la région la plus proche des utilisateurs de l'app, ou de l'utilisateur si c'est inconnu.planetcontrol_plane.machine_typedes runners etnode_count, dans les limitesrunnersdu plan.- IPs autorisées (
cidr_allowlist, CIDRs séparés par des virgules) :0.0.0.0/0sauf si l'app n'est accessible que depuis des réseaux connus.
Nommez chaque choix comme le tableau de bord l'affiche, par son label, suivi de son ID, comme « Hobby (pro) » ou « R-10 (e2-small) ». L'utilisateur peut comparer la recommandation avec le formulaire de création du tableau de bord.
Le plan, le control plane et les runners peuvent tous être modifiés ultérieurement sans recréer le cluster. Le cloud et la région ne peuvent pas l'être.
4. Le créer après approbation
Affichez la recommandation et attendez l'approbation de l'utilisateur avant de rien créer. Un plan payant débite le moyen de paiement par défaut de l'organisation.
return await rivet.cloud.v2.clusters.upsert({
cluster: "my-app",
query: {
cloud: "gcp",
region: "us-east4",
plan: "free",
control_plane: "1x-e2-micro",
cidr_allowlist: "0.0.0.0/0",
},
});
Un 402 signifie que l'organisation n'a pas de moyen de paiement. Demandez à l'utilisateur d'ajouter une carte dans le tableau de bord, puis réessayez.
Le provisionnement prend plusieurs minutes. Appelez rivet.cloud.v2.clusters.get({ cluster }) jusqu'à ce que status.state soit ready, et rapportez status.message quand status.action_needed est true.
5. Déployer et dimensionner les runners
Déployez l'app avec la skill rivet-deploy-image. Le premier rollout crée le pool de runners default avec un nœud e2-small.
Quand la recommandation avait d'autres runners, définissez-les sur le pool default après ce premier rollout. Lisez d'abord le pool et renvoyez sa cidr_allowlist, car un upsert remplace intégralement les paramètres du pool.
const pool = await rivet.cloud.v2.runnerPools.get({ cluster: "my-app", region: "us-east4", pool: "default" });
return await rivet.cloud.v2.runnerPools.upsert({
cluster: "my-app",
region: "us-east4",
pool: "default",
body: {
build_id: pool.build_id,
cidr_allowlist: pool.cidr_allowlist,
machine_type: "e2-medium",
node_count: 2,
},
});
Règles
- Ne créez jamais un cluster ou modifiez un plan sans l'approbation de l'utilisateur pour ce setup exact.
- Ne devinez pas un nom de
cluster,regionoupool. Listez-les d'abord. - Le code qui appelle les actors de l'app se connecte avec le
RIVET_ENDPOINTdu cluster et un token admin. Cette skill ne peut pas lire le token. Demandez à l'utilisateur de copier le prompt de l'agent depuis la page du cluster dans le tableau de bord, qui contient les deux.