다음을 통해 공유


jobs.deployment.strategy.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.
카나리아 배포 전략의 성공 또는 실패 후크.

설명

카나리아 배포 전략은 새 버전의 애플리케이션을 배포하는 데 관련된 위험을 완화하는 데 도움이 되는 고급 배포 전략입니다. 이 전략을 사용하면 먼저 서버의 작은 하위 집합에 변경 내용을 롤아웃할 수 있습니다. 새 버전에 자신감이 생기면 인프라의 더 많은 서버로 릴리스하고 더 많은 트래픽을 해당 버전으로 라우팅할 수 있습니다.

카나리아 배포 전략은 수명 주기 후크(한 번 실행)를 지원하고 preDeploy , routeTrafficpostRouteTraffic 수명 주기 후크를 사용하여 반복deploy합니다. 그런 다음 또는 failure 후크를 사용하여 success 종료합니다.

이 전략에서 사용할 수 있는 변수는 다음과 같습니다.

strategy.name: 전략의 이름입니다. 예를 들어 카나리아입니다.
strategy.action: Kubernetes 클러스터에서 수행할 작업입니다. 예를 들어 배포, 승격 또는 거부가 있습니다.
strategy.increment: 현재 상호 작용에 사용되는 증분 값입니다. 이 변수는 , routeTrafficpostRouteTraffic 수명 주기 후크에서deploy만 사용할 수 있습니다.

수명 주기 후크에 대한 설명

preDeploy: 애플리케이션 배포가 시작되기 전에 리소스를 초기화하는 단계를 실행하는 데 사용됩니다.

deploy: 애플리케이션을 배포하는 단계를 실행하는 데 사용됩니다. 아티팩트 다운로드 작업은 배포 작업에 대한 후크에 deploy 만 자동으로 삽입됩니다. 아티팩트 다운로드를 중지하려면 파이프라인 아티팩트 다운로드 작업을 지정하여 다운로드할 특정 아티팩트 를 사용 - download: none 하거나 선택합니다.

routeTraffic: 업데이트된 버전으로 트래픽을 제공하는 단계를 실행하는 데 사용됩니다.

postRouteTraffic: 트래픽이 라우팅된 후 단계를 실행하는 데 사용됩니다. 일반적으로 이러한 작업은 정의된 간격 동안 업데이트된 버전의 상태를 모니터링합니다.

on: failure또는 on: success: 롤백 작업 또는 클린 단계를 실행하는 데 사용됩니다.

예제

다음 예제에서 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... 

추가 정보