次の方法で共有


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 します。
デプロイの最大バッチ サイズ。

preDeployHookpreDeployします。
カナリアデプロイ戦略のデプロイ前フック。

deployHookdeployします。
カナリア デプロイ戦略の展開フック。

routeTrafficHookrouteTrafficします。
カナリア デプロイ戦略のトラフィック フックをルーティングします。

postRouteTrafficHookpostRouteTrafficします。
カナリアデプロイ戦略のルートトラフィックフックをポストします。

onSuccessOrFailureHookonします。
カナリアデプロイ戦略の成功または失敗フック。

注釈

カナリアデプロイ戦略は、新しいバージョンのアプリケーションのロールアウトに伴うリスクを軽減するのに役立つ高度なデプロイ戦略です。 この戦略を使用すると、最初にサーバーの小さなサブセットに変更をロールアウトできます。 新バージョンへの信頼度が上がってきたら、インフラストラクチャ内のより多くのサーバーにリリースし、より多くのトラフィックをルーティングすることができます。

カナリアデプロイ戦略では、preDeploy ライフサイクル フック (1 回実行) がサポートされ、deployrouteTraffic、および postRouteTraffic ライフサイクル フックを使用して反復処理されます。 その後、success または failure フックで終了します。

この戦略では、次の変数を使用できます。

strategy.name: 戦略の名前。 たとえば、カナリアです。
strategy.action: Kubernetes クラスターで実行するアクション。 たとえば、デプロイ、昇格、拒否などです。
strategy.increment: 現在の相互作用で使用される増分値。 この変数は、deployrouteTraffic、および postRouteTraffic ライフサイクル フックでのみ使用できます。

ライフサイクル フックの説明

preDeploy: アプリケーションのデプロイが開始される前にリソースを初期化する手順を実行するために使用されます。

deploy: アプリケーションをデプロイする手順を実行するために使用されます。 ダウンロード成果物タスクは、デプロイ ジョブの deploy フックにのみ自動的に挿入されます。 成果物のダウンロードを停止するには、- download: none を使用するか、パイプライン成果物のダウンロード タスク 指定して、ダウンロードする特定の成果物を選択します。

routeTraffic: 更新されたバージョンへのトラフィックを処理するステップを実行するために使用されます。

postRouteTraffic: トラフィックがルーティングされた後に手順を実行するために使用されます。 通常、これらのタスクは、定義された間隔で更新されたバージョンの正常性を監視します。

on: failure または on: success: ロールバック アクションまたはクリーンアップの手順を実行するために使用されます。

例示

次の例では、AKS のカナリア戦略では、最初に 10% のポッドで変更をデプロイし、その後に 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... 

こちらもご覧ください