Partager via


définition jobs.deployment.strategy.canary

La stratégie de déploiement Canary déploie des modifications sur un petit sous-ensemble de serveurs.

canary:
  increments: [ string ] # Maximum batch size for deployment.
  preDeploy: # Pre deploy hook for canary deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where pre deploy steps will run.
  deploy: # Deploy hook for canary deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where deploy steps will run.
  routeTraffic: # Route traffic hook for canary deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where route traffic steps will run.
  postRouteTraffic: # Post route traffic hook for canary deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where post route traffic steps will run.
  on: # On success or failure hook for canary deployment strategy.
    failure: # Runs on failure of any step.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where post on failure steps will run.
    success: # Runs on success of all of the steps.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where on success steps will run.

Définitions qui font référence à cette définition : jobs.deployment.strategy

Propriétés

increments string list.
Taille maximale des lots pour le déploiement.

preDeploypreDeployHook.
Pré-déploiement du hook pour la stratégie de déploiement canary.

deploydeployHook.
Déployer le hook pour la stratégie de déploiement canary.

routeTrafficrouteTrafficHook.
Router le crochet de trafic pour la stratégie de déploiement canary.

postRouteTrafficpostRouteTrafficHook.
Crochet de trafic post-routage pour la stratégie de déploiement canary.

ononSuccessOrFailureHook.
En cas de réussite ou d’échec de la stratégie de déploiement canary.

Notes

La stratégie de déploiement avec contrôle de validité est une stratégie de déploiement avancée qui permet d’atténuer les risques liés au déploiement de nouvelles versions d’applications. En utilisant cette stratégie, vous pouvez d’abord déployer les changements sur un petit sous-ensemble de serveurs. Quand la nouvelle version vous semble fiable, vous pouvez la publier sur davantage de serveurs de votre infrastructure et lui envoyer plus de trafic.

La stratégie de déploiement avec contrôle de validité prend en charge le hook de cycle de vie preDeploy (exécuté une seule fois) et itère avec les hooks de cycle de vie deploy, routeTraffic et postRouteTraffic. Elle se termine ensuite avec le hook success ou failure.

Les variables suivantes sont disponibles dans cette stratégie :

strategy.name : Nom de la stratégie. Exemple : « canari ».
strategy.action : Action à effectuer sur le cluster Kubernetes. Par exemple, déployer, promouvoir ou rejeter.
strategy.increment : Valeur d’incrément utilisée dans l’interaction actuelle. Cette variable est disponible uniquement dans les hooks de cycle de vie deploy, routeTraffic et postRouteTraffic.

Descriptions des hooks de cycle de vie

preDeploy : Utilisé pour exécuter les étapes qui initialisent les ressources avant le démarrage du déploiement de l’application.

deploy : Utilisé pour exécuter les étapes qui déploient votre application. La tâche de téléchargement des artefacts est injectée automatiquement uniquement dans le hook deploy pour les travaux de déploiement. Pour arrêter le téléchargement d’artefacts, utilisez - download: none ou choisissez des artefacts spécifiques à télécharger en spécifiant la tâche Télécharger un artefact de pipeline.

routeTraffic : Utilisé pour exécuter les étapes qui servent le trafic à la version mise à jour.

postRouteTraffic : Utilisé pour exécuter les étapes après le routage du trafic. En règle générale, ces tâches supervisent l’intégrité de la version mise à jour pendant une période définie.

on: failure ou on: success : Utilisé pour exécuter les étapes de nettoyage ou des actions de restauration.

Exemples

Dans l’exemple suivant, la stratégie canary pour AKS déploie d’abord les modifications avec des pods de 10 %, puis 20 %, tout en surveillant l’intégrité pendant postRouteTraffic. Si tout se passe bien, une promotion jusqu’à 100 pour cent aura lieu.

jobs: 
- deployment: 
  environment: smarthotel-dev.bookings
  pool: 
    name: smarthotel-devPool
  strategy:                  
    canary:      
      increments: [10,20]  
      preDeploy:                                     
        steps:           
        - script: initialize, cleanup....   
      deploy:             
        steps: 
        - script: echo deploy updates... 
        - task: KubernetesManifest@0 
          inputs: 
            action: $(strategy.action)       
            namespace: 'default' 
            strategy: $(strategy.name) 
            percentage: $(strategy.increment) 
            manifests: 'manifest.yml' 
      postRouteTraffic: 
        pool: server 
        steps:           
        - script: echo monitor application health...   
      on: 
        failure: 
          steps: 
          - script: echo clean-up, rollback...   
        success: 
          steps: 
          - script: echo checks passed, notify... 

Voir aussi