Limiter le comportement de déploiement à l'aide de règles

Ce document explique comment utiliser des stratégies de déploiement pour restreindre les accès des actions automatisées du pipeline de livraison.

Une règle de déploiement est une ressource Cloud Deploy que vous pouvez utiliser pour restreindre les actions manuelles ou automatiques sur un pipeline de diffusion ou une cible sélectionnés (ou tous les pipelines ou cibles).

Quel comportement peut être limité ?

Vous pouvez créer des règles de déploiement pour limiter ou empêcher Cloud Deploy d'effectuer certaines actions sur les déploiements. Par exemple, une règle peut empêcher création d'un déploiement pour un pipeline de livraison donné pendant une période donnée. Vous pouvez l'utiliser pour des restrictions saisonnières, par exemple.

Comment les règles sont-elles évaluées et appliquées ?

Pour toute action manuelle ou automatisée, Cloud Deploy effectue les opérations suivantes:

  1. Vérifiez les autorisations Identity and Access Management.

    Si l'utilisateur ou le compte de service ne dispose pas des autorisations IAM appropriées, l'action n'est pas effectuée et il n'est pas nécessaire d'évaluer les stratégies de déploiement.

  2. Vérifie s'il existe des règles applicables à la cible ou à la diffusion et, le cas échéant, la stratégie est évaluée.

    • Cloud Deploy évalue l'action effectuée pour déterminer si cette règle est applicable.

      Autrement dit, le type d'action et le demandeur correspondent-ils à la stratégie ?

    • Cloud Deploy vérifie les plages de dates et d'heures définies pour pour voir si elle est en vigueur au moment de la demande.

    • Si la stratégie est en vigueur et qu'elle s'applique au pipeline de livraison ou cible et l'action, la règle est appliquée et l'action est bloquée.

Conditions requises et limites

  • Chaque règle doit comporter au moins un sélecteur.

  • Chaque stratégie doit comporter au moins une règle.

    Tous les ID de règle doivent être uniques dans une stratégie de déploiement.

  • Chaque règle doit comporter au moins un timeWindows, et au sein de ce timeWindows, il doit y avoir un oneTimeWindows ou un weeklyWindows.

    Pour en savoir plus sur l'utilisation des plages horaires, consultez Dates et heures.

  • Vous ne pouvez pas avoir plus de 1 000 stratégies de déploiement par projet/emplacement.

Rôles et autorisations Identity and Access Management requis

En plus des autorisations dont vous avez besoin pour exécuter un pipeline de diffusion Cloud Deploy et effectuer les tâches qui seraient limitées par la stratégie, plusieurs autorisations sont nécessaires pour effectuer certaines opérations sur la ressource de stratégie :

  • clouddeploy.deployPolicies.create
  • clouddeploy.deployPolicies.delete
  • clouddeploy.deployPolicies.get
  • clouddeploy.deployPolicies.list
  • clouddeploy.deployPolicies.update
  • clouddeploy.deployPolicies.override

Ces autorisations sont incluses dans le rôle roles/clouddeploy.policyAdmin. De plus, le rôle roles/clouddeploy.policyOverrider inclut le rôle Autorisation .override.

Créer une règle de déploiement

Pour créer une ressource de règle de déploiement, procédez comme suit:

  1. Créer un fichier YAML avec la règle de déploiement configuration.

    La configuration inclut un en-tête, qui identifie la ressource en tant que stratégie de déploiement. name est obligatoire.

     apiVersion: deploy.cloud.google.com/v1
     kind: DeployPolicy
     metadata:
       name: 
     description: 
    
  2. Ajoutez une référence aux pipelines de diffusion et aux cibles auxquels la stratégie s'applique (le selectors).

    Pour en savoir plus sur les sélecteurs de règles et leur configuration, consultez Déploiement de sélecteurs de règles et la documentation de référence sur le schéma de configuration.

  3. Ajoutez une ou plusieurs règles rules.

    Chaque règle décrit une restriction et les circonstances dans lesquelles cette restriction est appliquée. Consultez Déployer des règles de stratégie et le Documentation de référence sur le schéma de configuration pour en savoir plus sur les règles de stratégie et leur configuration.

  4. Appliquez ce fichier, en utilisant gcloud deploy apply --filename= pour créer le ressource.

Les pipelines de diffusion ou cibles référencés sont désormais limités conformément aux règles de la ressource de stratégie de déploiement.

Déployer des sélecteurs de règles

Les sélecteurs, définis dans les configurations de la règle de déploiement, déterminent les pipelines de diffusion et les cibles concernés par une règle donnée.

Un sélecteur est défini dans une strophe selectors dans la configuration de la règle de déploiement, en tant que propriété de niveau supérieur :

selectors:
- deliveryPipeline:
    id:
    labels:
  target:
    id:
    labels:

Dans ce fichier YAML de configuration, deliveryPipeline.id prend le nom pipeline de livraison, et target.id prend le nom de la cible (dans les deux cas, metadata.name).

Vous pouvez utiliser id: * pour sélectionner tous les pipelines de livraison ou toutes les cibles. Vous pouvez également utiliser des libellés pour faire correspondre des pipelines de diffusion ou des cibles, ou les deux.

Dans un sélecteur donné, les éléments sont reliés par l'opérateur AND. Les sélecteurs multiples sont associés à l'opérateur OR. Autrement dit, pour qu'une requête donnée soit limitée par la règle, elle doit s'appliquer à au moins un sélecteur. Toutefois, dans ce sélecteur, la requête doit correspondre à tous les éléments.

Règles de déploiement des stratégies

Chaque stratégie de déploiement inclut une ou plusieurs règles de stratégie, qui définissent l'action limitée dans le pipeline de diffusion ou la cible sélectionnés. La règle définit également dans quelles circonstances elle s'applique.

Les règles suivantes sont disponibles :

  • rolloutRestriction

La règle rolloutRestriction empêche les actions de déploiement spécifiées d'être sur une sélection de cibles utilisées par des pipelines de livraison donnés. Cette règle utilise une fenêtre temporelle qui définit quand un déploiement ne peut pas être créé pour le pipeline de livraison sélectionné et la cible. Pour en savoir plus sur la manière dont les dates et heures sont spécifiées dans les règles de stratégie de déploiement, consultez la section Dates et heures.

Lorsque la règle est en vigueur, les actions suivantes peuvent être limitées:

Dates et heures dans une règle rolloutRestriction

Vous configurez la date et des plages de temps pour spécifier les fenêtres de temps récurrentes et non récurrentes pendant lesquelles les de déploiement est en vigueur.

Voici les exigences concernant l'expression des dates et des heures :

  • Les dates sont exprimées au format yyyy-mm-dd.

  • Pour indiquer l'heure de la journée, le début de la journée est 00:00 et la fin de la journée est 24:00.

  • Pour oneTimeWindows, les dates doivent inclure l'heure. Pour weeklyWindows, vous pouvez omettre l'heure de la journée. Toutefois, si vous incluez startTime, vous devez également inclure endTime, et inversement.

    Par exemple, un blocage uniquement le dimanche serait le suivant:

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
      endTime: "24:00"
    

    Vous pouvez également procéder comme suit:

    - daysOfWeek: [SUNDAY]
    

    Mais pas :

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
    
  • Vous devez inclure un fuseau horaire dans le bloc timeWindows.

    Exemple : timeZone: America/New_York.

Périodes non récurrentes

Une période non récurrente commence et se termine à une date et une heure spécifiques. Toi vous pouvez l'utiliser pour tout bloc de temps pour lequel vous souhaitez limiter les déploiements.

Les périodes non répétitives sont configurées à l'aide d'une strophe oneTimeWindows.

Fenêtres récurrentes

Une fenêtre de temps récurrente décrit un bloc de temps récurrent au cours duquel vous limiter les déploiements. Par exemple, vous pouvez l'utiliser pour limiter les déploiements le week-end.

Les périodes répétées sont configurées à l'aide d'une strophe weeklyWindows.

Examples

Cette section contient des exemples d'utilisation des dates et des heures pour configurer le moment une règle de déploiement est appliquée.

Gel annuel

Si vous souhaitez geler les déploiements à une période donnée de l'année, vous pouvez configurer un bloc oneTimeWindows pour ce faire. Si les dates sont prévisibles d'une année à l'autre, vous devez toujours utiliser plusieurs blocs oneTimeWindow.

Le code YAML suivant montre une fenêtre temporelle unique (non récurrente) pour appliquer une règle de déploiement en cas de gel annuelle:

timeWindows:
  timeZone: "America/New_York"
  oneTimeWindows:
  - start: "2024-12-22 17:00"
    end: "2025-01-02 09:00"

Ce fichier YAML décrit une période allant du 22 décembre 2024 à 17h à janvier 2025 à 9h.

Blocage répété le week-end

Le fichier YAML suivant montre une fenêtre temporelle récurrente pour appliquer une règle de déploiement qui limite les déploiements le week-end, du vendredi 17 h au lundi matin à 9h:

timeWindows:
  timeZone: "America/New_York"
  weeklyWindows:
  - daysOfWeek: [FRIDAY]
    startTime: "17:00"
    endTime: "24:00"
  - daysOfWeek: [SATURDAY, SUNDAY]
    startTime: "00:00"
    endTime: "24:00"
  - daysOfWeek: [MONDAY]
    startTime: "00:00"
    endTime: "09:00"

Mettre à jour une règle de déploiement

Pour mettre à jour une stratégie de déploiement, procédez comme suit :

  1. Modifiez le fichier YAML de configuration des règles.

    Si vous avez créé la stratégie à l'aide de la console Google Cloud, vous pouvez obtenir la configuration YAML en sélectionnant l'onglet YAML sur la page Détails de la stratégie de déploiement. Vous pouvez ensuite copier ce texte dans un fichier local et le modifier. ici.

  2. Appliquez ce fichier à l'aide de gcloud deploy apply --filename=.

    La ressource de stratégie de déploiement est alors mise à jour avec la nouvelle configuration.

Étant donné que les stratégies de déploiement sont évaluées lors d'une tentative d'action restreinte, toutes ces actions sur l'ensemble des ressources Cloud Deploy sont soumises à les règles mises à jour. Autrement dit, il n'existe aucun vestige des restrictions précédentes. Par exemple, si vous avez un blocage restrictRollouts pour tout le mois de décembre et que vous modifiez la règle le 14 décembre pour que la restriction se termine le 15 décembre, les déploiements ne sont plus bloqués après le 15 décembre.

Ignorer une règle de déploiement

Vous pouvez ignorer une règle de déploiement si nécessaire. Par exemple, s'il existe un lors d'un déploiement en production et que vous devez effectuer un rollback, une règle de déploiement empêche tout déploiement. Vous pouvez ignorer cette règle dans pour effectuer un rollback du mauvais déploiement.

Pour ignorer une règle de déploiement, vous devez disposer du paramètre Autorisation IAM clouddeploy.deployPolicies.override.

Vous pouvez remplacer la stratégie à partir de la gcloud CLI ou à l'aide de la Console Google Cloud:

Console

  1. Dans la console Google Cloud, essayez d'effectuer une action bloquée par une règle.

    Une boîte de dialogue s'affiche, indiquant que l'action est bloquée par une stratégie de déploiement. Cette boîte de dialogue inclut un lien vers la stratégie spécifique bloquant cette action.

  2. Dans le champ de texte prévu à cet effet, saisissez le nom de la règle, puis cliquez sur Tenter de remplacer les règles.

    Si vous disposez des autorisations nécessaires pour ignorer les Cloud Deploy exécute désormais l'action.

CLI gcloud

Pour remplacer une stratégie de déploiement à l'aide de gcloud CLI, ajoutez --override-deploy-policies à la commande pour toute action qui serait empêchée par cette stratégie. Par exemple, la commande suivante promeut une version, en ignorant une stratégie de déploiement spécifique qui empêcherait autrement la promotion :

 gcloud deploy releases promote --release=my-release-001 \
   --project=my-policy-testing-project \
   --region=us-central1 \
   --delivery-pipeline=my-pipeline \
   --to-target=prod-target \
   --override-deploy-policies=my-deploy-policy

Supprimer une règle de déploiement

Pour supprimer une règle de déploiement :

Console

  1. Dans la console Google Cloud, accédez à Cloud Deploy Déployer des règles

    Ouvrir la page "Déployer des règles"

    La page inclut la liste des règles de déploiement disponibles dans votre projet en cours, le cas échéant.

  2. Sélectionnez l'action . de la stratégie à supprimer, puis cliquez sur Supprimer la règle de déploiement

  3. Confirmez la suppression en saisissant le nom de la règle de déploiement, puis cliquez sur Confirmer.

    La règle est alors supprimée, et vous pouvez effectuer les actions la règle est restreinte.

CLI gcloud

Pour supprimer une règle de déploiement à l'aide de gcloud CLI, exécutez la commande la commande suivante:

 gcloud deploy deploy-policies delete \
    --project=[PROJECT] \
    --region=[REGION] \
    [POLICY_NAME]

Remplacez les éléments suivants :

  • [POLICY_NAME]

    Nom de la stratégie, tel que défini dans le fichier de configuration des règles.

  • [PROJECT]

    ID du projet Google Cloud dans lequel vous avez créé le règle de déploiement.

  • [REGION]

    Région dans laquelle vous avez créé la règle de déploiement.

Une fois la ressource de règle de déploiement supprimée, les pipelines de livraison concernés et ces cibles ne sont plus soumises au règlement et ne seront pas limitées à moins affectées par une autre règle de déploiement.

Journalisation de la règle de déploiement

Lorsqu'une stratégie de déploiement est évaluée, le journal de la plate-forme sont créées pour les actions suivantes:

  • Évaluation de la stratégie

    Les journaux de la plate-forme sont écrits lorsqu'une requête est évaluée et qu'elle ne respecte pas la règle. Un journal est également écrit lorsque la règle est enfreinte par une requête, mais que celle-ci est autorisé, car la règle est suspendue ou a été remplacée. Aucun journal n'est écrit lorsque la requête est accordée, car le règlement n'est pas enfreint.

  • Échec de la notification Pub/Sub lors de la modification d'une ressource de stratégie de déploiement.

Étape suivante