Share via


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 ライフサイクル フック (1 回実行) がサポートされ、deployrouteTrafficpostRouteTraffic ライフサイクル フックを使用して反復処理されます。 次に、success または failure フックを使用して終了します。

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

strategy.name: 戦略の名前。 例: カナリア。
strategy.action: Kubernetes クラスターで実行されるアクション。 例: デプロイ、昇格、拒否。
strategy.increment: 現在の対話式操作で使用される増分値。 この変数は、deployrouteTrafficpostRouteTraffic ライフサイクル フックでのみ使用できます。

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

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

関連項目