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
文字列リスト。
デプロイの最大バッチ サイズ。
preDeploy
preDeployHook。
カナリア デプロイ戦略の事前デプロイ フック。
deploy
deployHook。
カナリアデプロイ戦略のフックをデプロイする。
routeTraffic
routeTrafficHook。
カナリア デプロイ戦略のトラフィック フックをルーティングします。
postRouteTraffic
postRouteTrafficHook。
カナリア デプロイ戦略のルート トラフィック フックの後。
on
onSuccessOrFailureHook。
カナリアデプロイ戦略の成功または失敗フック。
解説
カナリア デプロイ戦略は、新しいバージョンのアプリケーションのロールアウトに伴うリスクを軽減するのに役立つ高度なデプロイ戦略です。 この方法を使用すると、サーバーの小さなサブセットに対する変更を最初にロールアウトできます。 新バージョンへの信頼度が上がってきたら、インフラストラクチャ内のより多くのサーバーにリリースし、より多くのトラフィックをルーティングすることができます。
カナリア デプロイ戦略では、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...