Avant de commencer
Les exemples CLI,curl et Terraform de cette page s’authentifient à l’aide d’un jeton d’accès à l’API CoreWeave. Générez-en un depuis la page Tokens de la Cloud Console, puis copiez la valeur Token Secret. Pour en savoir plus sur les jetons, consultez Gérer les jetons d’accès à l’API.
CLI : installez la CoreWeave Intelligent CLI (cwic), puis exécutez cwic auth login et collez le jeton lorsque vous y êtes invité. Le jeton est enregistré dans votre configuration cwic locale, et les commandes suivantes le lisent automatiquement. Il n’est pas nécessaire de définir une variable d’environnement.
curl : exportez le jeton dans votre shell pour que les exemples de cette page puissent l’utiliser. Remplacez [API-ACCESS-TOKEN] par votre jeton d’accès à l’API CoreWeave :
sandbox_admin. L’exemple de déploiement nécessite la version 0.26.0 ou ultérieure du fournisseur, dans la série 0.x. Définissez la variable d’authentification du fournisseur à partir du jeton exporté par la commande shell précédente :
Commandes des exécuteurs
Le groupecwic sandbox runner permet de gérer les exécuteurs. Le tableau suivant indique, pour chaque tâche du cycle de vie, la commande correspondante. Les sections suivantes présentent ces commandes en contexte.
Toutes les entrées acceptent le format YAML ou JSON.
Déployer un exécuteur
Au sein de votre organisation, chaque cluster CKS héberge au plus un exécuteur géré. Pour en déployer un, fournissez les éléments suivants :- Identifiant de l’exécuteur : un identifiant lisible attribué par le client, unique au sein de votre organisation.
- Zone : la zone géographique à laquelle appartient le cluster.
- Identifiant du cluster (ou nom du cluster) : le cluster CKS sur lequel l’exécuteur s’exécute. Vous trouverez ces deux informations sur la page Clusters de la Cloud Console.
- Politique : les règles que l’exécuteur applique aux sandboxes de son cluster. Une politique est requise pour exécuter des sandboxes. Si vous l’omettez, CoreWeave en fournit une par défaut lorsque l’exécuteur se connecte. La politique peut définir une durée de vie par défaut des sandboxes ; la plateforme impose une limite maximale de 30 jours. Voir Configurer une politique de sandbox.
- CLI
- curl
- Terraform
L’assistant vous demande de manière interactive le cluster, le canal de publication et les fenêtres de maintenance, puis ouvre votre éditeur avec une spécification préremplie avant de la soumettre :Le mode fichier accepte le YAML ou le JSON : c’est donc la méthode à privilégier pour des configurations reproductibles, et elle convient particulièrement aux agents comme Claude Code ou Codex qui génèrent des spécifications d’exécuteur à votre place. La CLI peut également lire depuis stdin avec Soumettez la spécification :
-f -. Remplacez [CLUSTER-NAME] par le nom du cluster CKS sur lequel déployer l’exécuteur :runner.yaml
maintenance_policy.windowsest facultatif. S’il est défini, les mises à jour automatiques ne s’appliquent que pendant les fenêtres cron spécifiées.runner_group_idest facultatif. Utilisez-le pour définir une affinité d’ordonnancement lorsque vous disposez de plusieurs exécuteurs dans la même zone.
Erreurs de validation courantes
Vérifier le statut de l’exécuteur
Après la création, vérifiez le statut de l’exécuteur pour confirmer qu’il a bien été déployé ou, le cas échéant, pour diagnostiquer les problèmes.- CLI
- curl
- Terraform
get :prod-us-east-1) ou l’UUID attribué par le serveur.installStatus: progression du déploiement de l’exécuteur dans votre cluster (PENDING,PROVISIONING,READYouFAILED).connectionStatus: état de la connectivité en temps réel (CONNECTEDouDISCONNECTED). Cette valeur est mise à jour par le signal de pulsation (heartbeat) de l’exécuteur. Prévoyez un délai pouvant atteindre 30 secondes.
installStatus == FAILED, la réponse inclut un objet installError structuré :
remediationHints indique les actions à entreprendre. diagnosticDetail contient également des journaux internes qu’il est utile de joindre si vous ouvrez un ticket d’assistance.
Mettre à jour un exécuteur
Pour un runner géré avec Terraform, modifiez la configuration de sa ressource, examinez la sortie deterraform plan, puis appliquez le plan. Conservez dans la configuration l’intégralité de la politique et des remplacements souhaités. Toute application ultérieure peut annuler les modifications effectuées via la CLI ou l’API. Pour en savoir plus sur la dérive et le comportement de remplacement, consultez Mettre à jour la configuration Terraform.
La commande de modification de l’exécuteur prend en charge un assistant interactif ainsi qu’un patch basé sur un fichier. En interne, les mises à jour s’appuient sur un masque de champs : seuls les champs que vous modifiez sont appliqués. Tout le reste est en lecture seule, notamment installStatus, connectionStatus, les horodatages et la spécification de déploiement résolue.
Pour connaître les chemins de champs modifiables, consultez Masques de champs lors des mises à jour.
Dans l’API REST v1, le corps de la requête PATCH est le runner géré lui-même, sans encapsuleur de requête, et le masque de champs est transmis dans le paramètre de requête updateMask. Si le masque est omis ou vide, l’intégralité de la ressource modifiable est remplacée.
Deux chemins ne sont acceptés que sur l’ancienne interface v1beta2 et sont rejetés lors des écritures de runner géré en v1 : profile_bindings (configurez plutôt policy) et spec.allow_privileged_profile_annotations.
Mises à jour courantes d’un exécuteur
Les exemples suivants présentent les modifications les plus fréquemment apportées à un exécuteur : changer de canal de publication, remplacer la politique qui lui est associée, ajuster le placement du pod de l’exécuteur dans votre cluster et autoriser les anciens modèles de profil à comporter une posture privilégiée.Exemple : changer de canal de publication
- CLI
- curl
Appliquez un patch d’une ligne depuis stdin :Vous pouvez aussi écrire le patch dans un fichier, puis le soumettre :
patch.yaml
Exemple : remplacer la politique
La politique est remplacée en tant que document complet. Lisez la politique actuelle, modifiez ce dont vous avez besoin, puis renvoyez-la. Il n’existe aucun masque au niveau des champs danspolicy : un corps partiel efface donc les groupes que vous omettez.
Pour les procédures par la CLI et l’API REST, suivez Mettre à jour une politique. Capturez la politique et son etag lors d’une seule et même lecture, puis soumettez le document modifié avec cet etag afin de détecter les modifications concurrentes.
Exemple : fixer le placement sur des nœuds via les remplacements de déploiement
Le champspec.overrides configure le pod de l’exécuteur lui-même, et non les pods des bacs à sable. Utilisez-le lorsque le pod de l’exécuteur a besoin de tolérances, de sélecteurs de nœuds ou de classes de runtime spécifiques pour être placé sur les bons nœuds.
Un cas courant consiste à acheminer le pod de l’exécuteur via le SUNK Pod Scheduler afin qu’il puisse s’exécuter dans votre cluster SUNK aux côtés des tâches Slurm. Définissez le nom de l’ordonnanceur et les annotations SUNK dans les remplacements de l’exécuteur. Consultez Intégration du SUNK Pod Scheduler pour connaître les annotations disponibles et la configuration requise.
- CLI
- curl
overrides.yaml
Exemple : configurer l’affinité de l’exécuteur
Utilisezspec.overrides.affinity pour définir l’affinité de nœud Kubernetes, l’affinité de Pod ou l’anti-affinité de Pod applicables aux Pods de l’exécuteur lui-même. La valeur est un objet Kubernetes Affinity, dont les clés suivent la convention camel case de Kubernetes. L’affinité de l’exécuteur ne configure pas le placement des Pods de sandbox et ne modifie pas les budgets des nœuds.
L’exemple suivant privilégie les Nœuds portant l’étiquette example.com/capacity-class: on-demand, tout en laissant disponibles les autres Nœuds éligibles. Remplacez cette étiquette, donnée à titre d’exemple, par une étiquette utilisée dans votre cluster.
- CLI
- REST
- Terraform
Utilisez une version de CoreWeave Intelligent CLI qui prend en charge l’affinité de l’exécuteur. Si la commande signale un champ
affinity inconnu, mettez à niveau la CLI ou utilisez l’exemple REST.-
Enregistrez le patch d’affinité :
affinity.yaml
-
Appliquez-le à votre exécuteur :
spec.overrides.affinity et préserve les autres remplacements. Si le même patch inclut d’autres champs de remplacement, la CLI remplace l’intégralité de l’objet spec.overrides. Incluez alors tous les remplacements de même niveau que vous souhaitez conserver.node_selector existantes restent applicables. Les Nœuds dotés de taints NoSchedule ou NoExecute nécessitent des tolérances correspondantes. Pour permettre un repli sur la capacité Spot, n’utilisez pas de sélecteur de nœud qui exclut les Nœuds Spot.
Pour imposer une restriction de placement stricte, utilisez requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms. L’affinité de nœud requise et node_selector doivent toutes deux être satisfaites. Les termes sont combinés par un OU logique, et les expressions d’un même terme par un ET logique. L’affinité de nœud requise est prise en compte lors des vérifications préalables de l’exécuteur. Kubernetes évalue l’affinité préférée ainsi que l’affinité ou l’anti-affinité de Pod au moment de l’ordonnancement.
Après une mise à jour, utilisez cwic sandbox runner describe prod-us-east-1 pour suivre la progression du déploiement. Dans la réponse de l’API, vérifiez que activeRevision correspond à targetRevision, que installStatus vaut RUNNER_INSTALL_STATUS_READY et que connectionStatus vaut RUNNER_CONNECTION_STATUS_CONNECTED. La configuration résolue apparaît dans le champ deploymentSpec.affinity, renseigné uniquement en sortie.
L’affinité est remplacée dans son intégralité, et non fusionnée règle par règle. Pour supprimer toutes les règles d’affinité, y compris les règles héritées, appliquez explicitement un objet vide :
affinity: null dans un patch CLI qui ne porte que sur l’affinité. Avec l’API REST, conservez updateMask=spec.overrides.affinity et envoyez {"spec":{"overrides":{}}}. Effacer l’affinité ne modifie ni les sélecteurs de nœuds ni les tolérances.
Le champ hérité de v1beta2 est managed_spec.overrides.affinity. Les nouvelles intégrations utilisent le champ spec.overrides.affinity de v1 présenté ici.
Exemple : autoriser une posture de profil privilégiée
allow_privileged_profile_annotations détermine si les modèles de profil hérités liés à un exécuteur peuvent comporter une posture privilégiée. Ce paramètre s’applique aux exécuteurs qui utilisent encore des liaisons de profil plutôt qu’une politique ; la requête est donc envoyée à la surface v1beta2. Sa valeur par défaut est false, et tout modèle comportant une telle posture est rejeté sur un exécuteur où l’option n’est pas définie.
Malgré son nom, cette option régit deux types de contenu :
- Les annotations de pod privilégiées, c’est-à-dire les préfixes du runtime et de l’ordonnanceur.
- Les champs structurés privilégiés de la spécification de pod, tels que
serviceAccountName, les namespace de l’hôte, les volumeshostPath, ainsi que les conteneurs privilégiés ou avec élévation de privilèges.
permission_denied et indique les champs en cause. Par exemple, un modèle qui définit securityContext.appArmorProfile et securityContext.seccompProfile échoue avec l’erreur suivante :
Example output
- CLI
- curl
Déclencher à la demande une mise à jour de l’exécuteur
LorsqueupdateAvailable vaut true sur l’exécuteur, vous pouvez appliquer la mise à jour immédiatement plutôt que d’attendre la prochaine fenêtre de maintenance :
- CLI
- curl
target_revision. Le contrôleur exécuté dans le cluster en assure ensuite le déploiement.
Lister les exécuteurs
Pour afficher tous les exécuteurs de votre organisation, ou pour restreindre la vue à une zone, un cluster ou un état de connexion donné, utilisez les commandes de liste suivantes.- CLI
- curl
Supprimer un exécuteur
Supprimez un exécuteur lorsque vous n’avez plus besoin de capacité de sandbox sur son cluster, ou avant de redéployer un nouvel exécuteur sur le même cluster.- CLI
- curl
- Terraform
--yes pour ignorer cette confirmation :Voir aussi
- Configurer les budgets d’allocation des Nœuds : limitez les demandes de CPU et de mémoire des sandbox par Node Pool ou par groupe de Nœuds.
- Architecture des bacs à sable : le modèle de ressources, la distinction entre plan de contrôle et plan de données, et la topologie multicluster.
- Aperçu des politiques : comment une sandbox est résolue par rapport à une politique.
- Configurer une politique de sandbox : chaque groupe de contraintes, avec des exemples détaillés.
- Aperçu de l’API du plan de contrôle : l’authentification, les masques de champs, ainsi que la structure des requêtes et des réponses de chaque point de terminaison.
- Référence des politiques : tous les champs que vous pouvez définir dans une politique.