Partager via


Configurer la mise à l’échelle

Configurez les paramètres de mise à l’échelle pour gérer les performances et le coût de votre pool DevOps managé. Pour plus d’informations sur la tarification et les performances, consultez Gérer les coûts et les performances.

État de l’agent

Les pools DevOps managés peuvent être configurés comme sans état ou avec état.

  • Pools sans état : fournissez un nouvel agent pour chaque travail.
  • Pools avec état : autoriser le partage d’agents entre plusieurs travaux.

Le paramètre par défaut d’un pool DevOps géré est sans état (agent frais à chaque fois), mais dans certains cas, les équipes peuvent souhaiter réutiliser les agents afin de réutiliser les packages ou fichiers créés lors de l’exécution précédente du pipeline. La charge de travail de génération est un scénario courant où les équipes souhaitent conserver l’état et réutiliser les agents. Vous pouvez obtenir des pools avec état via des pools DevOps managés tout en l’équilibrant avec les meilleures pratiques de sécurité. Par défaut, un agent peut être réutilisé pendant un maximum de 7 jours, mais vous pouvez le configurer pour être recyclé plus tôt.

Remarque

Les pools sans état ou l’utilisation du paramètre d’état de l’agent Fresh chaque fois sont recommandés par les experts de sécurité en tant que défense contre les attaques de chaîne logistique.

Pools sans état

Lorsqu’un agent sans état est configuré, un nouvel agent est acheté pour chaque travail et est ignoré une fois le travail terminé.

Capture d’écran d’un agent sans état.

Lorsque l’état de l’agent est défini sur Fresh agent chaque fois, un nouvel agent est acheté pour chaque travail et est ignoré une fois le travail terminé.

Pools avec état

Capture d’écran d’un agent avec état.

Lorsque le même agent peut être utilisé par plusieurs builds ("kind": "stateful" dans des modèles de ressources ou { "stateful": {...} } dans Azure CLI) est activé, les agents du pool sont considérés comme avec état. Les pools avec état sont configurés à l’aide des paramètres suivants.

  • La durée maximale de vie des agents de secours (maxAgentLifetime) configure la durée maximale pendant laquelle un agent dans un pool avec état peut s’exécuter avant qu’il ne soit arrêté et ignoré. Le format de durée maximale de vie pour les agents de secours est dd.hh:mm:ss. La valeur par défaut de la durée maximale de vie pour les agents de secours est définie sur la durée maximale autorisée de sept jours (7.00:00:00).

  • La période de grâce (gracePeriodTimeSpan) configure la durée pendant laquelle un agent dans un pool avec état attend de nouveaux travaux avant de s’arrêter une fois que tous les travaux actuels et mis en file d’attente sont terminés. Le format de la période de grâce est dd.hh:mm:ss et la valeur par défaut n’est pas une période de grâce.

Bien que les agents dans les pools sans état soient arrêtés et ignorés après chaque travail, les agents dans les pools avec état continuent à s’exécuter si l’une des conditions suivantes est remplie.

  • S’il existe une autre tâche mise en file d’attente lorsque le premier travail est terminé, les pools DevOps managés envoient ce travail à l’agent qui a exécuté le premier travail au lieu de l’arrêter.
  • S’il existe une période de grâce configurée pour le pool, les agents attendent les nouveaux travaux pendant la durée spécifiée par la période de grâce avant d’arrêter.
  • Si les agents de secours sont activés et que l’image de l’agent répond aux critères de la période d’approvisionnement active, l’agent continue à s’exécuter et à attendre des travaux.

Les agents en cours d’exécution dans des pools avec état sont arrêtés et ignorés s’ils s’exécutent en continu pendant la durée spécifiée par durée maximale pour les agents de secours, même si les conditions précédentes sont remplies. Par exemple, si la durée maximale de vie des agents de secours est configurée pendant trois jours et que le mode Agent de secours est défini sur Manuel, All Week Scheme (Machines disponibles 24/7), les agents sont redémarrés après trois jours de temps d’activité continus.

Important

Les agents dans les pools avec état peuvent toujours être arrêtés et ignorés une fois qu’un travail est terminé s’il n’existe aucune période de grâce, aucune période d’approvisionnement active pour les agents de secours et aucun travail mis en file d’attente correspondant à l’agent. Une fois qu’un agent est ignoré, tout état est perdu.

La période de grâce permet d’exécuter les pools avec état les plus rentables pour les pipelines avec une charge cohérente et n’exige pas l’utilisation du mode agent de secours pour maintenir les agents en ligne et prêts à accepter des travaux.

Mode agent de secours

Lorsque vous créez un pool, le mode Agent de secours est désactivé par défaut et aucun agent de secours n’est immédiatement affecté à vos pipelines, ce qui peut avoir besoin d’attendre quelques instants, jusqu’à 15 minutes, pour qu’un agent soit approvisionné à la demande. Pour de meilleures performances, activez le mode agent de secours et configurez une planification d’agent de secours qui fournit de la capacité pour votre charge de travail.

Lorsqu’une planification d’agent de secours est configurée, les pools DevOps managés comparent régulièrement le nombre d’agents provisionnés au nombre d’agents de secours spécifié par le schéma d’approvisionnement actuel et démarre les nouveaux agents selon les besoins pour maintenir le nombre d’agents de secours. Vous pouvez afficher l’état actuel et le nombre d’agents dans votre pool à l’aide du volet Agents.

Important

Le nombre d’approvisionnement dans un schéma ne peut pas être supérieur aux agents maximum configurés dans les paramètres du pool.

Le mode agent de secours est configuré à l’aide des paramètres suivants :

  • Désactivé : le mode agent de secours est désactivé et les agents sont approvisionnés à la demande lorsque les travaux sont mis en file d’attente.
  • Manuel : configurer une planification manuelle de secours.
  • Automatique : utilisez une planification de secours automatique basée sur l’historique d’utilisation de l’agent et configurable pour les coûts et les performances.

Capture d’écran de la sélection du mode agent de secours.

Manuel

Le mode manuel est mieux adapté aux équipes qui ont connaissance de leurs modèles d’utilisation des pipelines CI/CD. Si vous sélectionnez l’option manuelle, vous devez définir votre schéma de préprovisionnement en fonction de votre compréhension du moment où les agents du pool sont les plus susceptibles d’être utilisés et le nombre d’agents susceptibles d’être utilisés, et spécifier un nombre d’agents qui répondent à la demande projetée.

Vous pouvez créer votre propre planification d’approvisionnement ou choisir parmi l’une des planifications prédéfinies, et vous pouvez configurer le fuseau horaire à utiliser pour spécifier les planifications. La valeur par défaut du fuseau horaire de préapprovisionnement est (UTC) Temps universel coordonné.

La configuration manuelle de l’agent de secours peut être configurée de l’une des trois manières suivantes.

Chacun des démarrages rapides de préprovisionnement comporte les paramètres courants suivants en plus des paramètres spécifiques pour ce démarrage rapide.

  • Le fuseau horaire de préprovisionnement vous permet de configurer le fuseau horaire pour les heures de votre schéma de préprovisionnement. La valeur par défaut du fuseau horaire de préapprovisionnement est (UTC) Temps universel coordonné.
  • Le pourcentage d’agent de secours configure le pourcentage d’agents de secours souhaités pour chaque image. Vous pouvez entrer * pour vous assurer que toutes les images sont approvisionnées de manière égale, ou vous pouvez spécifier un entier compris entre 0 et 100 pour représenter un pourcentage. Si vous spécifiez un pourcentage, le total de toutes les images doit être égal à 100. Si vous avez une seule image, spécifiez * ou 100. Le pourcentage d’agent de secours est configuré dans la section lors de l’utilisation images de modèles ARM. Pour plus d’informations, consultez Configurer des images.

Capture d’écran du mode de secours manuel.

Commencer à partir de zéro

Si vous choisissez de commencer à partir de zéro, vous pouvez ajouter une liste de périodes d’approvisionnement pour servir de schéma d’approvisionnement. Chaque période d’approvisionnement se compose d’un jour de début, d’un jour de fin, d’un fuseau horaire, d’une heure de début, d’une heure de fin et d’un nombre. Les périodes d’approvisionnement ne peuvent pas se chevaucher.

Propriété Description
Plusieurs jours Lorsque vous avez coché, vous pouvez configurer à la fois un jour de début et un jour de fin pour votre schéma d’approvisionnement.
Jusqu’à la prochaine période Lorsqu’elle est cochée, la période d’approvisionnement s’exécute à partir de l’heure de début jusqu’au début de la période d’approvisionnement suivante.
Jour de début Jour où commence la période d’approvisionnement.
Jour de fin Le jour où la période d’approvisionnement se termine. Obligatoire si l’option Multi-Day est cochée.
Heure de Début Heure de début de la période d’approvisionnement.
Heure de fin Heure de fin de la période d’approvisionnement. Obligatoire, sauf si la période suivante est cochée.
Count Nombre d’agents de secours à provisionner. Ce nombre doit être supérieur à zéro et ne doit pas être supérieur à la valeur maximale des agents configurés dans les paramètres du pool.

Après avoir créé une période d’approvisionnement, vous pouvez supprimer ou modifier la période de la liste des schémas de préprovisionnement.

L’exemple suivant configure un schéma manuel avec 1 agent approvisionné le lundi matin de 12h00 à 17h00 EST.

Capture d’écran du schéma de mise à l’échelle manuelle.

Schéma de jour de semaine

Si vous choisissez le schéma de la semaine, vous pouvez spécifier une heure de début et une heure de fin dans lesquelles le nombre spécifié d’agents de secours sera en veille chaque jour de la semaine.

Propriété Description
Heure de Début Heure de début de la période d’approvisionnement.
Heure de fin Heure de fin de la période d’approvisionnement.
Nombre d’approvisionnement Nombre d’agents de secours à provisionner. Ce nombre doit être supérieur à zéro et ne doit pas être supérieur à la valeur maximale des agents configurés dans les paramètres du pool.

L’exemple suivant configure quatre agents à utiliser pendant les heures de travail avec 0 agents pendant les heures non ouvrées et les week-ends, à l’aide de l’heure standard de l’Est.

Capture d’écran du schéma de la semaine.

Schéma de la semaine entière

Si vous choisissez le schéma de toute la semaine, vous pouvez spécifier un certain nombre d’agents que vous souhaitez mettre à disposition 24/7.

Capture d’écran du schéma de toute la semaine.

Automatique

Si vous ne connaissez pas vos modèles d’utilisation et que vous souhaitez vous appuyer sur des prévisions automatiques basées sur des données passées, choisissez Automatique. Vous pouvez équilibrer les performances des coûts et des agents à l’aide d’un curseur avec les cinq options suivantes. Les pools DevOps managés exécutent une requête au cours de vos trois dernières semaines de données historiques (le cas échéant), organisant les sessions en file d’attente du pool en cinq minutes et affectant le centile spécifié (pour éviter les pics) à chaque heure.

  • Plus économique (MostCostEffective) - 10e centile
  • Plus économique (MoreCostEffective) - 25e centile
  • Équilibré (par défaut) (Balanced) - 50e centile
  • Plus de performances (MorePerformance) - 75e centile
  • Meilleures performances (BestPerformance) - 90e centile

Capture d’écran du paramètre de mise à l’échelle automatique.

Voir aussi