[TEMPLATE-ID] par l’UUID du modèle, [SNAPSHOT-ID] par un ID d’instantané du système de fichiers et [GITHUB-ORG] par le nom de votre organisation ou de votre utilisateur GitHub Container Registry.
Créer un modèle
Les modèles sont gérés par les administrateurs de l’organisation. Les opérations d’écriture nécessitent le rôlesandbox_admin, mais tout utilisateur de sandbox de l’organisation peut lire les modèles et s’en servir pour démarrer des Sandbox.
- CLI
- curl
Créez un modèle à partir d’un fichier :Affichez le détail des modèles existants et listez-les :
template.json
displayNameest requis et doit être unique parmi les modèles actifs de l’organisation : de 1 à 128 caractères après suppression des espaces de début et de fin. Privilégiez des noms qui n’ont pas la forme d’un UUID, afin d’éviter tout conflit avec la recherche qui interprète d’abord la valeur comme un ID.specest une spécification de sandbox partielle, plafonnée à 1 Mio. Elle utilise les mêmes champs qu’une requête de création, et tout son contenu peut être remplacé lors de la création.specne permet pas encore de sélectionner un type d’instance ni de joindre des réseaux de sandbox. Tout modèle qui définitinstanceTypeounetworkIdsest rejeté comme non implémenté.- Le contenu des modèles est visible par tous les utilisateurs de sandbox de l’organisation. Un modèle n’est pas un canal de distribution de secrets : les identifiants d’authentification en clair n’y ont pas leur place.
Démarrer un sandbox à partir d’un modèle
Démarrez un sandbox à partir d’un modèle en indiquant son ID. La sélection s’effectue uniquement par UUID ; les noms d’affichage permettent la recherche et l’affichage de la liste, mais pas la création.Create a sandbox from a template
overrides avec la même structure qu’une spécification de sandbox. Tout champ présent dans les remplacements remplace intégralement le champ correspondant, sans fusion :
- Un message que vous définissez remplace l’intégralité du message du modèle. Un message que vous omettez conserve la valeur du modèle.
- Une liste ou une map que vous définissez remplace l’intégralité de la collection du modèle, y compris lorsque vous la définissez comme vide. Pour supprimer une seule entrée, vous devez donc envoyer la collection complète avec le contenu souhaité.
- Remplacer n’importe quel champ du conteneur remplace toute la liste des conteneurs. Il n’est pas possible d’appliquer un patch partiel à un conteneur du modèle : un remplacement qui concerne le conteneur doit donc inclure le conteneur complet, y compris
image.
Override the container per run
Sandbox.run_from_template() et client.runFromTemplate(). Pour le flux de travail du SDK, consultez la documentation du client.
Exemples de modèles
Les exemples ci-dessous sont des documents complets à utiliser aveccwic sandbox template create -f template.json. Contrairement à une politique, une organisation peut disposer de plusieurs modèles, qui peuvent donc se combiner : créez-en un pour chaque profil de charge de travail récurrent.
Service web avec un point de terminaison HTTPS public
Modèle pour les Sandbox qui exposent un service HTTP sur l’internet public via un point de terminaison HTTPS fourni par la plateforme. L’URL attribuée est renvoyée sur la sandbox après sa création.template.json
Espace de travail restauré à partir d’un instantané
Un modèle dont le volume temporaire démarre toujours à partir du même instantané du système de fichiers : un espace de travail de référence dont chaque sandbox crée sa propre copie privée.template.json
Trafic sortant sélectif
Un modèle qui autorise un ensemble fixe de destinations : une plage CIDR sur le port 443, ainsi que les Sandbox au même niveau dans la même organisation. Chaque règle doit s’inscrire dans l’enveloppeallowedEgress de la politique de l’exécuteur, faute de quoi la création est rejetée.
template.json
network.egress est vide ou omis s’appuie à la place sur la valeur defaultEgress de la politique. Définissez la liste de trafic sortant dans le modèle lorsque les destinations de la charge de travail sont connues, et laissez-la vide lorsque la valeur par défaut de la politique offre la posture appropriée.
CKS uniquement : pièces jointes de pod
Sur votre propre cluster CKS, un administrateur peut ajouter un blocattachments à un modèle : il s’agit d’un fragment de spécification de pod Kubernetes appliqué à chaque sandbox créée à partir de ce modèle. C’est ainsi qu’un modèle peut imposer une sélection de nœuds, des tolérances ou un secret de récupération d’image, que la spécification du bac à sable elle-même ne permet pas de définir faute de champs dédiés.
template.json
- Un modèle avec des pièces jointes est réservé à CKS. Son champ de sortie
requiresCksvaut true, et toute création à partir de ce modèle avecmodedéfini surSANDBOX_MODE_SERVERLESSéchoue avecFailedPrecondition. Un mode non défini est traité comme CKS. - Les pièces jointes relèvent de l’administrateur. Seul
sandbox_adminpeut les écrire, les requêtes de création simples ne peuvent pas en fournir, et les remplacements au moment de la création ne peuvent ni les modifier ni les supprimer. - Le fragment utilise le format JSON de Kubernetes, avec des clés en camelCase sous
specetmetadata, contrairement aux champs de spécification du sandbox utilisés dans le reste du modèle. Les clés inconnues sont rejetées. - La surface autorisée est volontairement restreinte : elle se limite aux éléments d’ordonnancement et d’exécution, comme
nodeSelector,tolerations,imagePullSecrets,volumes,topologySpreadConstraints,hostAliases, les paramètres DNS et une seule entréecontainerslimitée àname,env,envFrom,volumeMountsetvolumeDevices, ainsi qu’aux libellés et annotations du pod. Les champs sensibles du point de vue de la sécurité sont rejetés, notammentsecurityContext,runtimeClassName,initContainers,affinity, les namespace de l’hôte, les volumeshostPathet les comptes de service autres que celui par défaut. - Les pièces jointes se superposent au fragment
basede la politique. Les champs à valeurs multiples se combinent avec la base de la politique :imagePullSecretsettolerationssont dédupliqués, tandis quetopologySpreadConstraints,hostAliasesetreadinessGatessont ajoutés à la suite. Les champs à valeur unique, comme les clésnodeSelector, affinent la base. Tout conflit de nom de volume, de variable d’environnement ou de chemin de montage entre les deux couches entraîne le rejet de la création.
Gérer les modèles
- CLI
- curl
- Les lectures acceptent un ID ou un nom d’affichage. Si le segment de chemin est un UUID valide, la recherche s’effectue par ID ; sinon, il est interprété comme un nom d’affichage parmi les modèles actifs.
- Chaque mise à jour réussie incrémente la
revisiondu modèle. Chaque sandbox enregistre la révision à partir de laquelle elle a été créée, ce qui vous permet d’identifier les Sandbox antérieures à une modification du modèle. - La suppression est réversible. Les Sandbox existantes ne sont pas affectées, le modèle ne peut plus être sélectionné lors de nouvelles créations, et son nom d’affichage peut être réutilisé pour un nouveau modèle.
Étapes suivantes
- Exemples de politiques : des politiques d’exécuteur complètes à associer à ces modèles.
- Configurer une politique de sandbox : les groupes de contraintes au regard desquels la spécification d’un modèle est validée.
- Aperçu des politiques : comment les modèles et les politiques se partagent le rôle autrefois assuré par les profils.
- Utiliser votre propre capacité de calcul : la configuration de l’exécuteur et votre première sandbox.