Partager via


définition jobs.deployment.strategy.canary

La stratégie de déploiement Canary déploie les modifications apportées à 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 liste de chaînes.
taille de lot maximale pour le déploiement.

preDeploy préDeployHook .
hook de prédéploiement pour la stratégie de déploiement canary.

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

routeTraffic routeTrafficHook.
router le hook de trafic pour la stratégie de déploiement canary.

postRouteTraffic postRouteTrafficHook.
Post route traffic hook for canary deployment strategy.

on onSuccessOrFailureHook.
Sur le hook de réussite ou d’échec pour la stratégie de déploiement canary.

Remarques

La stratégie de déploiement Canary est une stratégie de déploiement avancée qui permet d’atténuer le risque impliqué dans le déploiement de nouvelles versions d’applications. À l’aide de cette stratégie, vous pouvez d’abord déployer les modifications apportées à 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 Canary prend en charge le hook de cycle de vie preDeploy (exécuté une seule fois) et effectue une itération avec les deploy, les routeTrafficet les crochets de cycle de vie postRouteTraffic. Il sort ensuite avec le success ou le crochet failure.

Les variables suivantes sont disponibles dans cette stratégie :

strategy.name: nom de la stratégie. Par exemple, canary.
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 n’est disponible que dans deploy, routeTrafficet postRouteTraffic crochets de cycle de vie.

Descriptions des crochets de cycle de vie

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

deploy: utilisé pour exécuter des étapes qui déploient votre application. La tâche de téléchargement d’artefact est injectée automatiquement uniquement dans le deploy hook 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 tâche Télécharger l’artefact de pipeline.

routeTraffic: utilisé pour exécuter les étapes qui servent le trafic vers 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 surveillent l’intégrité de la version mise à jour pour un intervalle défini.

on: failure ou on: success: permet d’exécuter des étapes pour les actions de restauration ou le nettoyage.

Exemples

Dans l’exemple suivant, la stratégie canary pour AKS déploie d’abord les modifications avec 10 % de pods, suivie de 20 %, tout en surveillant l’intégrité pendant postRouteTraffic. Si tout va bien, il va promouvoir à 100 pour cent.

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