definizione jobs.deployment.strategy.canary

La strategia di distribuzione Canary implementa le modifiche a un piccolo subset di server.

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.

Definizioni che fanno riferimento a questa definizione: jobs.deployment.strategy

Proprietà

increments elenco di stringhe.
Dimensioni massime del batch per la distribuzione.

preDeploypreDeployHook.
Pre deploy hook per la strategia di distribuzione canary.

deploydeployHook.
Distribuire hook per la strategia di distribuzione canary.

routeTrafficrouteTrafficHook.
Indirizzare l'hook del traffico per la strategia di distribuzione canary.

postRouteTrafficpostRouteTrafficHook.
Post route traffic hook per la strategia di distribuzione canary.

ononSuccessOrFailureHook.
In caso di esito positivo o negativo per la strategia di distribuzione canary.

Commenti

La strategia di distribuzione Canary è una strategia di distribuzione avanzata che consente di ridurre il rischio coinvolto nell'implementazione di nuove versioni delle applicazioni. Usando questa strategia, è possibile implementare prima le modifiche in un piccolo sottoinsieme di server. Man mano che si acquisisce maggiore familiarità con la nuova versione, è possibile rilasciarla in più server dell'infrastruttura e instradarvi più traffico.

La strategia di distribuzione Canary supporta l'hook del ciclo di vita (eseguito una sola volta) e esegue l'iterazione preDeploy con gli deployhook , routeTraffice postRouteTraffic del ciclo di vita. Viene quindi chiuso con l'amo success o failure .

Le variabili seguenti sono disponibili in questa strategia:

strategy.name: nome della strategia. Ad esempio, canary.
strategy.action: azione da eseguire nel cluster Kubernetes. Ad esempio, distribuire, promuovere o rifiutare.
strategy.increment: valore di incremento utilizzato nell'interazione corrente. Questa variabile è disponibile solo in deploy, routeTraffice postRouteTraffic gli hook del ciclo di vita.

Descrizioni degli hook del ciclo di vita

preDeploy: usato per eseguire i passaggi che inizializzano le risorse prima dell'avvio della distribuzione dell'applicazione.

deploy: usato per eseguire i passaggi che distribuiscono l'applicazione. L'attività Scarica artefatto verrà inserita automaticamente solo nell'hook deploy per i processi di distribuzione. Per interrompere il download degli artefatti, usare - download: none o scegliere elementi specifici da scaricare specificando l'attività Scarica artefatto pipeline.

routeTraffic: usato per eseguire i passaggi che servono il traffico alla versione aggiornata.

postRouteTraffic: usato per eseguire i passaggi dopo che il traffico viene instradato. In genere, queste attività monitorano l'integrità della versione aggiornata per l'intervallo definito.

on: failure oppure on: success: usato per eseguire i passaggi per eseguire azioni di rollback o pulizia.

Esempio

Nell'esempio seguente, la strategia canary per il servizio Azure Kubernetes distribuirà prima le modifiche con i pod del 10 percento, seguiti dal 20 per cento, mentre monitorerà l'integrità durante postRouteTraffic. Se tutto va bene, verrà promosso al 100%.

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... 

Vedi anche