doc-locale/fr-fr/ci/runners/job_router/runner_controllers.md
{{< details >}}
{{< /details >}}
[!flag] La disponibilité de cette fonctionnalité est contrôlée par un feature flag. Pour plus d'informations, consultez l'historique. Cette fonctionnalité est disponible à des fins de test, mais n'est pas prête pour une utilisation en production.
{{< history >}}
job_router_admission_control. Désactivé par défaut. Cette fonctionnalité est une version expérimentale et est soumise au contrat de test GitLab.{{< /history >}}
Les contrôleurs de runner permettent le contrôle d'admission pour les jobs CI/CD acheminés via le routeur de jobs. Lorsqu'un job est sur le point d'être exécuté, le routeur de jobs envoie une demande d'admission aux contrôleurs de runner connectés, qui peuvent admettre ou rejeter le job en fonction de politiques personnalisées.
Les contrôleurs de runner sont au niveau de l'instance et s'appliquent aux jobs en fonction de leur portée.
Utilisez les contrôleurs de runner pour :
Lorsque vous configurez des contrôleurs de runner avec le routeur de jobs, le workflow de contrôle d'admission fonctionne comme suit :
Lorsqu'un contrôleur de runner rejette un job, le job échoue avec le motif d'échec job_router_failure. La page de détails du job affiche un message qui inclut :
Lorsqu'un contrôleur de runner est dans l'état dry_run, les décisions de rejet ne sont pas appliquées, mais sont consignées en tant que messages d'information dans les journaux du backend du routeur de jobs (KAS). Utilisez ces journaux pour valider le comportement de votre contrôleur avant d'activer l'application des règles.
Les contrôleurs de runner peuvent se trouver dans l'un des trois états suivants :
| État | Description |
|---|---|
disabled | Le contrôleur de runner ne reçoit pas de demandes d'admission. Il s'agit de l'état par défaut. |
enabled | Le contrôleur de runner reçoit des demandes d'admission et ses décisions affectent l'exécution des jobs. |
dry_run | Le contrôleur de runner reçoit des demandes d'admission. Le routeur de jobs consigne les décisions, mais celles-ci ne sont pas appliquées. Utilisez cet état pour des déploiements progressifs afin de valider le comportement du contrôleur et de réduire les risques liés aux déploiements avant d'activer l'application des règles. |
Les contrôleurs de runner doivent être délimités par une portée pour être actifs. Un contrôleur de runner sans aucune portée ne reçoit pas de demandes d'admission, même lorsque son état est enabled ou dry_run.
Les contrôleurs de runner prennent en charge deux types de portée mutuellement exclusifs :
| Portée | Description |
|---|---|
| Instance | Le contrôleur de runner évalue les jobs pour tous les runners de l'instance GitLab. Cette portée ne peut pas être combinée avec la portée du runner. |
| Runner | Le contrôleur de runner évalue les jobs uniquement pour des runners spécifiques. Vous pouvez délimiter un contrôleur à un ou plusieurs runners. Le runner doit être un runner d'instance. |
Des types de portée supplémentaires (groupe, projet) sont proposés dans le ticket 586419.
Pour gérer la portée des contrôleurs de runner, consultez l'API des contrôleurs de runner.
Les contrôleurs de runner sont gérés via l'API REST. Il n'existe pas encore d'interface utilisateur pour gérer les contrôleurs de runner.
Prérequis :
Pour un guide étape par étape, consultez Tutoriel : Créer un contrôleur d'admission de runner.
Pour implémenter votre propre contrôleur de runner, vous devez :
Pour les spécifications techniques et les définitions protobuf, consultez la documentation du contrôleur de runner dans le dépôt GitLab Agent for Kubernetes.