Поделиться через


Определение jobs.deployment.strategy.canary

Стратегия развертывания Canary развертывает изменения на небольшом подмножестве серверов.

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.

Определения, ссылающиеся на это определение: jobs.deployment.strategy

Свойства

increments список строк.
Максимальный размер пакета для развертывания.

preDeploypreDeployHook.
Предварительное развертывание обработчика для стратегии канареечного развертывания.

deploydeployHook.
Обработчик развертывания для стратегии канареечного развертывания.

routeTrafficrouteTrafficHook.
Перехватчик трафика маршрутизации для стратегии канареечного развертывания.

postRouteTrafficpostRouteTrafficHook.
Перехватчик трафика после маршрутизации для стратегии канареечного развертывания.

ononSuccessOrFailureHook.
При успешном или неудачном перехватчике для стратегии канареечного развертывания.

Комментарии

Стратегия развертывания Canary — это расширенная стратегия развертывания, которая помогает снизить риски, связанные с развертыванием новых версий приложений. С помощью этой стратегии можно сначала развернуть изменения в небольшом подмножестве серверов. По мере того, как вы обретете больше уверенности в новой версии, вы сможете выпустить ее на другие сервера в своей инфраструктуре и направить на нее больше трафика.

Стратегия развертывания canary поддерживает preDeploy перехватчик жизненного цикла (выполняется один раз) и выполняет итерацию с deployобработчиками жизненного цикла , routeTrafficи postRouteTraffic . Затем он завершает работу с крючком success или failure .

В этой стратегии доступны следующие переменные:

strategy.name: имя стратегии. Например, canary.
strategy.action: действие, выполняемое в кластере Kubernetes. Например, развертывание, повышение уровня или отклонение.
strategy.increment: значение приращения, используемое в текущем взаимодействии. Эта переменная доступна только в deployобработчиках жизненного цикла , routeTrafficи postRouteTraffic .

Описание перехватчиков жизненного цикла

preDeploy: используется для выполнения шагов, которые инициализируют ресурсы перед началом развертывания приложения.

deploy: используется для выполнения шагов, которые развертывают приложение. Задача скачивания артефактов будет автоматически вставлена только в deploy перехватчик для заданий развертывания. Чтобы остановить скачивание артефактов, используйте - download: none или выберите определенные артефакты для скачивания, указав задачу "Скачать артефакт конвейера".

routeTraffic: используется для выполнения шагов, которые обслуживают трафик в обновленную версию.

postRouteTraffic: используется для выполнения шагов после маршрутизации трафика. Как правило, эти задачи отслеживают работоспособность обновленной версии с определенным интервалом.

on: failure или on: success: используется для выполнения шагов для действий отката или очистки.

Примеры

В следующем примере стратегия canary для AKS сначала развертывает изменения с 10 процентами модулей pod, а затем 20 процентами при мониторинге работоспособности во время postRouteTraffic. Если все пойдет хорошо, это будет способствовать до 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... 

См. также раздел