カナリア展開戦略では、変更をサーバーの小さなサブセットにロールアウトします。
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.
特性
文字列リスト increments
します。
デプロイの最大バッチ サイズ。
preDeployHookを preDeploy
します。
カナリアデプロイ戦略のデプロイ前フック。
deployHookを deploy
します。
カナリア デプロイ戦略の展開フック。
routeTrafficHookを routeTraffic
します。
カナリア デプロイ戦略のトラフィック フックをルーティングします。
postRouteTrafficHookを postRouteTraffic
します。
カナリアデプロイ戦略のルートトラフィックフックをポストします。
onSuccessOrFailureHookを on
します。
カナリアデプロイ戦略の成功または失敗フック。
注釈
カナリアデプロイ戦略は、新しいバージョンのアプリケーションのロールアウトに伴うリスクを軽減するのに役立つ高度なデプロイ戦略です。 この戦略を使用すると、最初にサーバーの小さなサブセットに変更をロールアウトできます。 新バージョンへの信頼度が上がってきたら、インフラストラクチャ内のより多くのサーバーにリリースし、より多くのトラフィックをルーティングすることができます。
カナリアデプロイ戦略では、preDeploy
ライフサイクル フック (1 回実行) がサポートされ、deploy
、routeTraffic
、および postRouteTraffic
ライフサイクル フックを使用して反復処理されます。 その後、success
または failure
フックで終了します。
この戦略では、次の変数を使用できます。
strategy.name
: 戦略の名前。 たとえば、カナリアです。
strategy.action
: Kubernetes クラスターで実行するアクション。 たとえば、デプロイ、昇格、拒否などです。
strategy.increment
: 現在の相互作用で使用される増分値。 この変数は、deploy
、routeTraffic
、および 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...