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:
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.
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 cetimeWindows
, il doit y avoir unoneTimeWindows
ou unweeklyWindows
.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:
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:
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.
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.
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:
ADVANCE
Les phases de déploiement ne peuvent pas être avancées.
APPROVE
Impossible d'approuver la promotion de déploiement.
CANCEL
Les déploiements ne peuvent pas être annulés.
CREATE
Impossible de créer des déploiements. Vous pouvez créer une version si une règle empêche cette action, mais cette version ne générera pas de déploiement.
IGNORE_JOB
Les jobs ne peuvent pas être ignorés.
RETRY_JOB
Les tâches ne peuvent pas faire l'objet de nouvelles tentatives.
ROLLBACK
Les déploiements ne peuvent pas être annulés.
TERMINATE_JOBRUN
Les exécutions de tâches ne peuvent pas être arrêtées
Consultez le Documentation de référence sur le schéma de configuration pour la structure YAML de cette règle.
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 est24:00
.Pour
oneTimeWindows
, les dates doivent inclure l'heure. PourweeklyWindows
, vous pouvez omettre l'heure de la journée. Toutefois, si vous incluezstartTime
, vous devez également inclureendTime
, 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 :
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.
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
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.
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
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.
Sélectionnez l'action
. de la stratégie à supprimer, puis cliquez sur Supprimer la règle de déploiementConfirmez 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
Pour en savoir plus sur la configuration des règles de déploiement, consultez le schéma du fichier de configuration.
Découvrez l'automatisation des déploiements Cloud Deploy.